TI中文支持网
TI专业的中文技术问题搜集分享网站

_c_int00的地址与程序是放在Flash还是RAM有关系吗?

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的大牛能解答。

Shine:

看一下你定义的程序入口地址_c_int00在哪里?

http://processors.wiki.ti.com/index.php/Accessing_c_int00#Setting_the_c_int00_Address_to_a_Fixed_Location

yanpeng guo:

回复 Shine:

谢谢,我按照上述链接提供的步骤将c_int00的地址直接固定为PRAM的一个地址。

对于C6205来说,上电后DMA拷贝64K数据到PRAM(0地址配置为PRAM),然后运行c_int00,

但是程序并没有在PRAM中执行,而是在norFlash中执行,为什么呀?DMA需要重新配置吗?

Shine:

回复 yanpeng guo:

DMA拷贝64K数据后,是从地址0开始执行的,如果你的代码没有超过64k, _c_int00程序入口地址应该定义在0.

请问你现在的情况是程序超过了64K么?用二次bootloader进行代码搬移的?

yanpeng guo:

回复 Shine:

现在没有超过64K,但是放在了外部flash中,.cinit 放在了外部Flash中,

一定得将cinit用DMA拷贝到dataram中吗?dma需要怎么初始化?

yanpeng guo:

回复 Shine:

现在没有超过64K,但是放在了外部flash中,.cinit 放在了外部Flash中,

一定得将cinit用DMA拷贝到dataram中吗?dma需要怎么初始化?

Shine:

回复 yanpeng guo:

没超过64K,不需要要用二次bootloader进行代码搬移,把_c_int00定义到地址0就可以了。

flash中的代码由dma自动copy的,这是硬件boot, DMA不能初始化

yanpeng guo:

回复 Shine:

但是这样搬完64K程序了,程序就在pram中运行了,但是我这边是在norflash中直接运行的。

与cinit有关系吗?

Shine:

回复 yanpeng guo:

关于cinit初始化段,在编译时选择-c编译选项(rom_model)

_c_int00程序入口地址指定在地址0。

另外,小于64K不用写二次bootloader,下面的代码不需要。

mvkl _c_int00 B0

    mvkh _c_int00 B0

    B  B0

    nop 5

 

赞(0)
未经允许不得转载:TI中文支持网 » _c_int00的地址与程序是放在Flash还是RAM有关系吗?
分享到: 更多 (0)