最近负责C6713板卡开发,调试的软件在ram中运行正常,需要下载到flash中进行固化。目前遇到的问题是,有时候板卡会启动不起来,需要单步调试测试。
目前我的做法是,将包含二次启动的工程编译后,然后在debugger模式下,通过load加载.out文件,使用cup reset重置寄存器,然后使用汇编单步调试进行二次启动代码的调试。在此有以下疑问:
1,包含二次启动代码的工程是否可以在编译后通过load加载,加载到了什么位置 是否由工程的.cmd文件决定
2,使用cup reset后,执行汇编单步时,运行的程序是在RAM中 此程序是通过load加载进入RAM的还是通过EDMA将FLASH的文件拷贝过来的
3,单步执行完毕二次启动代码后,跳转到c_int00时会提醒No source available for "c_int00”,我查到的说法是debugger模式下缺少RTS库,所以无法单步执行 是否是这个原因,如果不是这个原因又是什么导致的
4,使用load直接加载.out文件可以直接进入工程的main()循环中,但是如果cup reset后,使用汇编单步执行的时候无法进入,是什么原因
Tony Tang:
Daniel wang33,单步执行完毕二次启动代码后,跳转到c_int00时会提醒No source available for "c_int00”,我查到的说法是debugger模式下缺少RTS库,所以无法单步执行 是否是这个原因,如果不是这个原因又是什么导致的
不是缺RTS库,而是这个函数是RTS库文件来的,不在你的工程源文件里,所以单步跟踪不到C代码, No source available for "c_int00”这句话只是告诉你这个事实,而不是出错。
Daniel wang3:
回复 Denny%20Yang99373:
您好,我还有一些疑问如下:
1,加载的位置如果是根据CMD确定,我的工程中.text段是定位到flash的存储空间的 加载的时候是如何操作的
2,就是说cpu reset后,没有进行load操作就是从flash中读出,如果进行load操作就是load进来的吗
3,这个您说的很明确,谢谢
4,如何将PC指针强制指向程序入口?是指向main()的地址吗?
Daniel wang3:
回复 Tony Tang:
明白了,谢谢指明原因
Daniel wang3:
回复 Tony Tang:
好的,谢谢您的解释
Daniel wang3:
回复 Tony Tang:
1,加载的位置如果是根据CMD确定,我的工程中.text段是定位到flash的存储空间的 加载的时候是如何操作的
— 我的CMD文件是这样写的: .text : load = FLASH_REST, run = IRAM
按照您的说法,就是跑在ram中喽
2,没有问题
3,没有问题
4,就是用debugger–Go Main来完成吗?
Tony Tang:
回复 Daniel wang3:
Daniel wang3
.text : load = FLASH_REST, run = IRAM
按照您的说法,就是跑在ram中喽
上面这个load从来就没什么用,跟CCS download程序不是一回事。程序编译后链接是按RUN地址链接成执行文件的,你看看文档spru186关于cmd文件的说明吧,你的问题上面都有答案。
Daniel wang3:
回复 Tony Tang:
是TMS320C6000 Assembly Language Tools User’s Guide中第七章linker Description的内容吧
Tony Tang:
回复 Daniel wang3:
对的。
TI中文支持网
