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.

TMS570 初始程式问题

Hello,

请问一下,当TMS570在烧录程序后,pc会直接执行到main()函式,

但如果我先把断点设在vimInit上,Restart后,PC会停在vimInit,表示它是在main之前所执行的,但为什麽会执行到vimInit呢?

我的main之前也只有  include "sys_common.h" 这行指令而已,为何会有执行vimInit的指令?

在执行main之前,TMS570它总共会执行哪些初始的设定?是否有相关资料?

  • 据我所知,所有的MCU在工作前都会启动一段代码,然后才进入main(),main函数是我们和编译系统约定的一个由用户代码开始的函数入口,在此之前系统会编译进一段代码在main之前,该段代码的作用主要是启动单片机正常工作,并完成硬件的初始化后,进入main.

  • Dear gaoyang,

    谢谢你的回覆,我知道它会先执行一些初始化的代码,但我想知道的是:

    1. 会有哪些代码被执行?

    2. 为何TMS570会先执行这些代码?    因为我的程序,在main之前也只有 include "common.h"这段代码。

    再次感谢你的回覆。

  • Shunfan,

      确实如你所说,MCU在执行main.c之前会执行类似vimInit之类的函数,其实safety MCU在上电时最早执行的是

    #pragma INTERRUPT(_c_int00, RESET)

    void _c_int00()
    {}

    这个函数在sys_startup.c 文件里面,系统定义了Power on reset以后会直接进入C_init()函数。这个函数做的操作就是使能并操作各种安全功能,初始化时钟初始化中断向量的操作。

    在TI的网站上面有一个关于system initiation的文档,里面详细介绍了系统启动时执行的每一步操作:

    http://www.ti.com/lit/an/spna106d/spna106d.pdf

    谢谢

  • Hello Ken

    谢谢您的回覆

    请问我有办法设定CCS,让它不会烧录后,自动运行到main()吗?

    我想让它从一开始的地方,用step的方式,确认它在main之前有执行过哪些代码。

  • Shunfan,

       这个是可以的,你可以通过CCS debug page上面的system reset来resetMCU,然后CCS会自动跳到C_init()函数地方。

    谢谢