This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6670 多核启动失败

Other Parts Discussed in Thread: SYSBIOS

我们的代码环境是基于sys/bios,平台是tms320c6670

代码段位于share mem中,四核共用一份代码,通过DNUM区分。 数据段,堆栈放到各自的L2SRM中

通过核0 启动其他核,其他核可以正常的启动到c_init_00

 

不执行bios_start() 其他核不会跳转到异常。    

执行bios_start(),其他和会跳转到异常。

同样的代码,采用ccs 仿真器加载的方式可以正常运行。

 

cfg文件

cmd文件

MEMORY {  

//DDR_CORE0_CACHE:   o = 0x80100000 l = 0x09f00000  

DDR_CORE0_CACHE:   o = 0x82000000 l = 0x08000000

 DDR_CORE0_NONCACHE:   o = 0x8A000000 l = 0x04000000

 DDR_SHARE_CACHE:   o = 0xB8000000 l = 0x04000000

 DDR_SHARE_NONCACHE:   o = 0xBC000000 l = 0x02000000

 DDR_SHARE_INTRAQM:          o = 0xBE000000  l = 0x01000000

 DDR_COREPAC_SYNC:           o = 0xBF000000  l = 0x01000000

// MSMCSRAM_CACHE:    o = 0x0C000000 l = 0x00200000 }

SECTIONS {   

  .csl_vect > L2SRAM   

  .VectNew > L2SRAM

  //.far >DDR_CORE0_NONCACHE  

.DescBufferLL2 > L2SRAM

 .hwapi_ll2_data > L2SRAM  

.hwapi_qmss_LL2 > L2SRAM

 .hwapi_intc_LL2 > L2SRAM

  .hwapi_intraQm_LL2 > L2SRAM

  .hwapi_tcp3d_LL2 > L2SRAM

  .hwapi_desc_DdrCache > DDR_SHARE_CACHE

// .hwapi_qmss_share_cache > DDR_SHARE_CACHE // 

.hwapi_qmss_share_noncache > DDR_SHARE_NONCACHE

 .hwapi_intc_nocache > DDR_CORE0_NONCACHE  

 .srio_ddr_buf > DDR_CORE0_NONCACHE   

  .DDR_SHARE_NONCACHE > DDR_SHARE_NONCACHE   

  .systemheap > L2SRAM    

.copacSync > DDR_COREPAC_SYNC    

 .ddr_intraQm > DDR_SHARE_INTRAQM

  .srio_ddr_buf >DDR_CORE0_NONCACHE  

 .neardata > L2SRAM  

 .fardata > DDR_COREPAC_SYNC  

 .switch > DDR_COREPAC_SYNC

  .main_mem  > MSMCSRAM

  .msg_buff     > MSMCSRAM    

 .shareMsg     > MSMCSRAM   

  .dataMsmc     > MSMCSRAM

}

  • 把编译生成的map文件发上来看看memory的分配是否有冲突。

  • 谢谢,Andy 下面是我的map文件

  • 进一步定位发现,其他核发生异常时,ER/IFR 14 被置1,
    查看event寄存器,

    寄存器的值分别是

    0x0,0x0,0x1,0x800001

    对应的event分别是

    64     TINTLn   Local Timer interrupt low

    96     INTERR     Dropped CPU interrupt event

    119 SYS_CMPA  SYS CPU MP fault event

    我们在cfg文件中添加了

    var timer0Params = new Timer.Params();
    timer0Params.instance.name = "timer0";
    timer0Params.arg = 1;
    timer0Params.startMode = xdc.module("ti.sysbios.interfaces.ITimer").StartMode_AUTO;
    Program.global.timer0 = Timer.create(4, "&myIsr", timer0Params);

    在runtime中添加了中断程序myIsr的实现,结果还是一样的

    如果将参数4改成1,编译不通过,提示

    我的问题是

    1,bios 是不是默认将hw 14号中断指定到clock,这个clock是什么,没找到相关的文档介绍。

    2.其他核发生excption时,发现IFR 14 置位,如果没有对14号中断指定中断服务程序,这是否会导致中断转为HW 0号的异常?

    3.查看event寄存器,同时看到三个event(64,96,119),这个说明什么?