TI的大牛:
正在调试DSPTMS320C6205 CPU,将程序先放在了外挂的Norflash中,CPU上电后从flash中拷贝64K
程序到RAM运行,然后程序就按照我的bootloader的指示(如下):
mvkl _c_int00 B0
mvkh _c_int00 B0
B B0
nop 5
跳到cint00。但是这时程序就直接在norflash中运行了,为什么?
不应该是在RAM中运行的吗?cint_00的地址与什么有关系呢?
困扰半个月了,希望TI的大牛能解答。
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.
TI的大牛:
正在调试DSPTMS320C6205 CPU,将程序先放在了外挂的Norflash中,CPU上电后从flash中拷贝64K
程序到RAM运行,然后程序就按照我的bootloader的指示(如下):
mvkl _c_int00 B0
mvkh _c_int00 B0
B B0
nop 5
跳到cint00。但是这时程序就直接在norflash中运行了,为什么?
不应该是在RAM中运行的吗?cint_00的地址与什么有关系呢?
困扰半个月了,希望TI的大牛能解答。
谢谢,我按照上述链接提供的步骤将c_int00的地址直接固定为PRAM的一个地址。
对于C6205来说,上电后DMA拷贝64K数据到PRAM(0地址配置为PRAM),然后运行c_int00,
但是程序并没有在PRAM中执行,而是在norFlash中执行,为什么呀?DMA需要重新配置吗?
DMA拷贝64K数据后,是从地址0开始执行的,如果你的代码没有超过64k, _c_int00程序入口地址应该定义在0.
请问你现在的情况是程序超过了64K么?用二次bootloader进行代码搬移的?
现在没有超过64K,但是放在了外部flash中,.cinit 放在了外部Flash中,
一定得将cinit用DMA拷贝到dataram中吗?dma需要怎么初始化?
现在没有超过64K,但是放在了外部flash中,.cinit 放在了外部Flash中,
一定得将cinit用DMA拷贝到dataram中吗?dma需要怎么初始化?
没超过64K,不需要要用二次bootloader进行代码搬移,把_c_int00定义到地址0就可以了。
flash中的代码由dma自动copy的,这是硬件boot, DMA不能初始化
关于cinit初始化段,在编译时选择-c编译选项(rom_model)
_c_int00程序入口地址指定在地址0。
另外,小于64K不用写二次bootloader,下面的代码不需要。
mvkl _c_int00 B0
mvkh _c_int00 B0
B B0
nop 5