各位专家好:
最近在做C6678的EMIF16 BOOT,我将代码段放到DDR3共享(代码段直接从内存保存然后写入FLASH),其它的段都是放到L2空间,上电时core0拷贝NOR FLASH的代码到DDR3,然后IPC触发其它core运行,可以看到core0拷贝代码是完成了的。
单步调试发现core0是跳入入了c_int00地址的,但是不知道为什么在单步运行一段代码后PC指针直接跑到了非代码空间了。
我的CMD文件是这样写的:
-c
-heap 0x41000
-stack 0xa000
MEMORY
[
L1PSRAM (RWX) : org = 0x0E00000, len = 0x7FFF
L1DSRAM (RWX) : org = 0x0F00000, len = 0x7FFF
L2SRAM (RWX) : org = 0x0800000, len = 0x080000
MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000
ISRAM(RWX): org=0x80000000,len=0x500
DDR3 (RWX) : org = 0x80000500, len = 0x10000000
]
SEC
tiONS
[
.csl_vect > L2SRAM
.boot_sect > ISRAM
.text > DDR3
GROUP (NEAR_DP)
[
.neardata
.rodata
.bss
] load > L2SRAM
.stack > L2SRAM
.cio > L2SRAM
.data > L2SRAM
.sysmem > L2SRAM
.far > L2SRAM
.testMem > L2SRAM
.fardata > L2SRAM
platform_lib > DDR3
]
我没有使用TI提供的转换工具,而是直接从内存保存代码段,然后将代码段写入FLASH的方式,请问这样为什么不能BOOT成功呢???是不是由于写入FLASH的内容没有包含CMD文件中的其他段造成的???还请各位专家帮帮忙,谢谢了。