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.

关于C6713二次启动调试的问题



最近负责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后,使用汇编单步执行的时候无法进入,是什么原因

  • 1,加载的位置是由CMD决定的

    2,如果你通过CCS LOAD就是LOAD进来的,如果CCS没有LOAD此时是从FLASH中读出来的

    3,是的,可以在MAIN()入口打断点

    4,看看程序有没有正确的搬移到RAM中?可以把PC指针强制指向程序入口,看看能不能跑下去

  • Daniel wang3 说:
    3,单步执行完毕二次启动代码后,跳转到c_int00时会提醒No source available for "c_int00”,我查到的说法是debugger模式下缺少RTS库,所以无法单步执行 是否是这个原因,如果不是这个原因又是什么导致的

    不是缺RTS库,而是这个函数是RTS库文件来的,不在你的工程源文件里,所以单步跟踪不到C代码, No source available for "c_int00”这句话只是告诉你这个事实,而不是出错。

  • 您好,我还有一些疑问如下:

    1,加载的位置如果是根据CMD确定,我的工程中.text段是定位到flash的存储空间的 加载的时候是如何操作的

    2,就是说cpu reset后,没有进行load操作就是从flash中读出,如果进行load操作就是load进来的吗

    3,这个您说的很明确,谢谢

    4,如何将PC指针强制指向程序入口?是指向main()的地址吗?

  • 明白了,谢谢指明原因

  • 好的,谢谢您的解释

  • Daniel wang3 说:

    1,加载的位置如果是根据CMD确定,我的工程中.text段是定位到flash的存储空间的 加载的时候是如何操作的

    --- 你看看cmd的.text是不是run地址是RAM而不是flash. run地址才是真正的link地址。

    2,就是说cpu reset后,没有进行load操作就是从flash中读出,如果进行load操作就是load进来的吗

    --- 是的。

    3,这个您说的很明确,谢谢

    4,如何将PC指针强制指向程序入口?是指向main()的地址吗?

    ---- C工程的入口地址不是main,默认是_c_int00。

  • 1,加载的位置如果是根据CMD确定,我的工程中.text段是定位到flash的存储空间的 加载的时候是如何操作的

    --- 我的CMD文件是这样写的:    .text   : load = FLASH_REST, run = IRAM 

    按照您的说法,就是跑在ram中喽

    2,没有问题

    3,没有问题

    4,就是用debugger--Go Main来完成吗?

  • Daniel wang3 说:

      .text   : load = FLASH_REST, run = IRAM 

    按照您的说法,就是跑在ram中喽

    上面这个load从来就没什么用,跟CCS download程序不是一回事。程序编译后链接是按RUN地址链接成执行文件的,你看看文档spru186关于cmd文件的说明吧,你的问题上面都有答案。

  • 是TMS320C6000 Assembly Language Tools User’s Guide中第七章linker Description的内容吧