是编译器产生的吗

2019-07-23 13:29发布


最近看了两个TI的文档呢。
DSP281x_HeaderFiles_QuickStart_Readme

spru095a_TMS320F28x Boot ROM Reference Guide (Rev. A)
这两个文档。
了解了一下 DSP有了复位信号后,会跳到0x3FFFC0这个地址上去,
假设现在是BOOT-ROM映射到0x3FF000这个地址上面。这样话,DSP会进入INIT_BOOT函数
然后根据GF组IO口得状态来选择引导方式 一,跳到FLASH
                                                                 二,跳到H0
                                                                  三,跳到OTP
                                                                 四,选择SCI,SPI,GPIO来进行引导。

然后我在第一个文档里面看到有这样一个流程图:
RESET
   |
BOOT 时序
   |
DSP281x_CodeStartBranch.asm
Disable WD (Optional)
Branch to C Init Routine
      ||
  C Init
     ||
  主函数

其中BOOT时序就是我最上面分析的。
然后接下来,怎么跟DSP281x_CodeStartBranch.asm和C_INIT结合起来呢。
我知道DSP281x_CodeStartBranch.asm是咱们自己写的。
C_INIT这个入口,我一直都没有看到
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
dengdc
1楼-- · 2019-07-24 04:28
起始地址是自己在cmd文件中定义,然后通过CCS生成的,所有下载到C2000中的目标文件,都是按照TI C2000的hex文件格式,首先下载到flash中的就是reset的地址,即你的目标代码的首地址。
heweibig
2楼-- · 2019-07-24 09:45
 精彩回答 2  元偷偷看……
wuhany
3楼-- · 2019-07-24 10:29
DSP281x_CodeStartBranch.asm  TI的示例引导程序,通常照搬,由其来设置堆栈后找到c_int_00也就是C语言入口
Disable WD (Optional)        可以根据需要在程序进入C之前关掉WatchDog,如果程序够小或够稳健不关也行
Branch to C Init Routine     就是调用c_int_00函数,这个函数不需要你来实现,由TI在C语言的运行时库里实现,rts28xx.lib即是运行时库,你编译程序时会连接到这个库上。
zhaoxqi
4楼-- · 2019-07-24 11:04
哦,我再思考思考
firstblood
5楼-- · 2019-07-24 16:32
这个就不是很清楚的,但是多调试的就可以的。
拉克丝
6楼-- · 2019-07-24 20:31
如果TRST为低电平,也就是默认的状态

一周热门 更多>