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

TMS320F28034: 带仿真器运行时的启动过程

Part Number:TMS320F28034

大家好!

我用的是CCS10,有几个问题想咨询一下。

(1)离线运行,从flah启动时,会先跳到codestart执行一段代码,然后执行c_init()函数初始化全局变量等操作,最后再执行main函数。那么如果挂上仿真器运行,启动过程具体是怎样的呢?codestart内的程序应该是不会执行吧。

(2)我在codestart中加入了自己的初始化内存代码main_init,我发现用仿真器时,会直接跳到main,不会执行自己的初始化,但我在Assembly界面通过在main_init入口一行右键选择move to line,可以跳转到main_init中执行,请问这个move to line是什么原理,我从仿真器进入了emulate boot应该是不会执行codestart的内容才对啊?

(3)我看通过CCS属性的Debug界面设置Auto Run Options可以指定入口函数,即烧完程序后直接跳转到该函数,而不再是main,如图1所示。但我在实际操作时,并不会跳到我设置的函数,烧完程序后依然会跳到main。请问这是为什么呢?有没有其他方法可以指定初始的入口函数?我想烧完程序后可以直接跳到我定义的main_init中。

 图1

(4)请问c_init函数的汇编代码怎么获取呢?我想修改这个文件,将初始化的代码放在c_init中。

另外,我尝试过在main函数里重新初始化内存,但由于程序中const段定义的内容只会在c_init中复制到RAM里,然后main中如果重新清零RAM,后续我在使用这些const表时,里面的值都是0。因此才会产生上面4个问题。

Green Deng:

1、是的,带仿真器的时候,即使不配置引导模式,程序也能跑到main。因为CCS在程序load到芯片的时候或者reset > restart,CCS会自动屏蔽bootloader的过程并自动跳到main函数入口。

2、如上所述,是不会跳到codestart,move to line就是通过CCS将程序直接引导到指定的代码行执行。

3、Auto Run Options默认的跳转是跳转到main,但也可以跳转到任意C或者汇编代码。尝试一下把On a reset勾选后,设置完reset CPU, 然后restart再运行代码呢?

4、_c_int00 函数来自编译器自带的 RTS 库。 RTS 的源代码也是编译器的一部分,一般在如下位置可以找到:C:\ti\ccs1020\ccs\tools\compiler\ti-cgt-c2000_20.2.2.LTS\lib\src\boot28.asm

,

user4612577:

你好,第3点我试了一下,不论是烧完程序还是reset后再restart,还是不能跳转到我设置的函数,还是会跳到main

,

user4612577:

对了,我用的CCS7,可以跳转到我设置的函数,CCS10不行

,

user4612577:

请问我把boot28.asm放在工程文件夹里,是不是可以不要rts2800_ml.lib这个文件了?

,

Green Deng:

你好,你是说同样的操作(第3点)在CCS7上可以实现,在CCS10上无法实现?

关于rts2800_ml.lib,可以看看这个帖子的介绍:https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/230118/documentation-on-rts2800_ml-library

我认为是需要保留的

,

user4612577:

是的,我用ccs7可以实现跳转到main以后的C函数,但是main之前的汇编代码(例如codestart内的汇编代码)跳转不到

如果用CCS10就只能跳转到main函数

,

Green Deng:

你好,测试用的代码是自己编写的吗?有没有用代码测试过该功能?

,

user4612577:

你好,我用c2000里的28034的例程(随便找了一个),按照你上面说的流程试了一下,还是不行,还是会直接跳到main函数

,

Green Deng:

看看这个链接里面的内容是否有帮助:processors.wiki.ti.com/…/Debug_Handbook_for_CCS

,

user4612577:

这个链接打不开了Joy

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28034: 带仿真器运行时的启动过程
分享到: 更多 (0)