我们的代码环境是基于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
}
Andy Yin1:
把编译生成的map文件发上来看看memory的分配是否有冲突。
peter3:
回复 Andy Yin1:
谢谢,Andy 下面是我的map文件
peter3:
回复 peter3:
进一步定位发现,其他核发生异常时,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),这个说明什么?
TI中文支持网


