Part Number:TMS320C6455
1 ccs5.2导入ccs3.3的工程后,现在能编译通过生成.out文件。
2 但是想打断点调试的时候,load .out文件以后,暂停单步执行后卡在b0000000地址,这个地址是emifa nor flash的地址,应该是加载out文件到flash出错且提示"earlier error prevented reading of target memory at xxxx"。
3 gel是用的系统自带的DSK6455.gel,里面有emifa接口相关的代码。
4 已经修改了cdb文件、cmd文件中所有到IRAM但是连接放着器和加载程序的时候地址依然是0xb0000000的地址,正常IRAM地址是0x00800000的地址。
现在想改成加载.out的时候是在处理器内部RAM执行,除了修改cdb文件、cmd文件里面所有到IRAM,还需要修改哪里呢?
Nancy Wang:
先试一下例程。
https://e2echina.ti.com/support/processors/f/processors-forum/204178/tms320c6455
,
wang yanping:
直接加载这个包里的led.out能进main函数,这个时候连接仿真器是到flash地址,运行是在IRAM里面,那看来还是编译的out问题了。
,
Nancy Wang:
wang yanping 说:这个时候连接仿真器是到flash地址,运行是在IRAM里面
由于我这边没有该型号的开发板,能否截图出来看一下。
,
wang yanping:
,
wang yanping:
我用例子程序ledprd,重新编译,load也能成功到main。
,
wang yanping:
sourcecode.zip这是我们的代码,能不能帮忙看下和ledprd有啥区别,是cmd、tcf、cdb差异等造成的吗?谢谢!
,
wang yanping:
我们的out文件大于2MB,能下载到IRAM吧,我看datasheet说IRAM只有2MB。
,
Nancy Wang:
大于2MB就无法load到IRAM,可以load到DDR2。
,
wang yanping:
那要如何修改呢?
,
wang yanping:
开始的时候是加载到emifa flash的。
,
Nancy Wang:
开始连接仿真器的时候还没有加载程序,实际例程也是加载到IRAM的,改到DDR2就是将section部分指向DDR2,同时要定义一下DDR2的地址范围。
例如:
DDR2 : origin = 0xe0000000, len = 0x10000000
.text: {} > DDR2
,
wang yanping:
按理直接加载到flash也可以运行的吧,为什么我的加载到flash不行呢?
,
wang yanping:
我把加载的out文件改小到1.8M也不行
,
wang yanping:
现在改成加载到IRAM运行用我们的代码也可以进main打断点了,以前没改完全。但是.out是2.01M比IRAM大也能跑起来吗?
,
Nancy Wang:
比IRAM大应该是不行的,但是在cmd分配内存的时候,也是按段分配,有可能实际您分配的内存大小并没有比IRAM大,你可以查看实际生成的.map文件计算一下占用的内存空间。
,
wang yanping:
查看了map文件,确实没有超过IRAM地址。
,
wang yanping:
这个问题可以关闭了,谢谢