Other Parts Discussed in Thread: TMS320C6726B
我使用的DSP型号是TMS320C6727B,对应的内部RAM地址为0x10000000——0x1003FFFF,对应Flash的地址为0x90000000——0x9FFFFFFF,自己编写C语言与汇编语言程序进行二次引导操作。C语言程序是将hex文件中的数据按地址写进Flash中。汇编语言程序进行二次引导操作,即EMIF配置、将Flash数据拷贝到RAM相应的位置、跳转至C语言程序入口。C6727.cmd文件修改部分如图所示:
如果二次引导成功,那么:
①内部RAM中地址为0x10000000——0x10000400的数据应该与Flash地址为0x90000000——0x90000400中的数据对应相同。
②内部RAM中地址为0x10000400之后的数据应该与Flash地址为0x90000400之后的数据对应相同(Flash中未写入数据的部分不算)。
想问下,这个说法是正确的吗?
如果上面的①②是对的,那么想问下出现以下问题的原因:
将汇编文件boot.asm单独放到一个工程中,分别进行单步运行与全速运行,发现均可以将0x90000400之后的数据成功赋给0x10000400后对应的位置。但是将C语言与汇编语言程序放到一个工程中,全速运行后发现(此时无法对汇编文件单步运行),RAM对应地址上会出现Flash中的数据,但是会出现数据错误与丢失现象。0x400之后的数据错误与丢失现象尤为明显。我在汇编程序中加入了很多延时语句,没有效果。
请问出现这个问题的原因以及可能的解决方法,谢谢。