各位专家好:
最近在做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
}
SECTIONS
{
.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文件中的其他段造成的???还请各位专家帮帮忙,谢谢了。
Andy Yin1:
您好,
请问你的代码如果搬到L2上能运行么,是否与DDR3初始化有关呢。
qian cui:
回复 MaoQTian:
你好,我使用6678,通过nor flash启动,flash片选要求低有效。现在直接测试dsp输出的片选信号,一直为高?不知道可以采取什么方法来排查问题?麻烦了,非常感激