TMS320F28335启动过程

F28335上电复位后会首先进入复位中断的服务函数的地址。

BROM中断向量表地址是0x3FFFC0-0x3FFFFF,其中0x3FFFC0处保存的就是复位中断跳转的程序地址。

Boot ROM(BROM) 是固化在DSP 只读Flash里的一段程序,其地址是0x3FE000-0x3FFFFF,BROM Vector就是其中的一部分,上面也可以看出BROM保存的内容,如Bootload、版本号、复位中断向量、错误中断向量、测试中断向量、Iqmath计算表、FPU计算表。复位后即PC指向复位中断向量里的地址。

0x3FFFC0处的ISR是跳转到InitBoot程序(保存在BROM中),该程序会首先检查GPIO84-87的引脚状态,然后根据其选择BOOT模式。

这里以常见的Flash启动和SRAM启动为例

当BOOT模式为Flash启动时,PC=0x33FFF6;当BOOT模式为SARAM启动时,PC=0x000000;

首先假设Boot模式是Flash启动时

由官方提供的CMD文件可知0x33FFF6-0x33FFF7保存的是我们BEGIN段程序

该BEGIN段只有2*16Bit 即只有2个字的代码,该代码就是codestart程序(上图)

可以看到codestart就一句条件跳转的代码,刚好占用两个字。没关看门狗就去关看门狗,关了看门狗就去执行_c_int00程序。

可以看到关完看门狗后,还是会跳转到_c_int00程序。

c_int00 是rts2800_ml.lib中的一个重要函数,TI c2000编译器默认会将rts2800_ml.lib加入编译。

c_int00主要干了以下事情

初始化了C语言的运行环境,并且跳转到main函数开始运行C程序。

再假设Boot模式是SRAM启动时,PC=0x000000

可以看到此时CMD文件BEGIN段被保存在了0x000000,,BEGIN里的codestrat还是一个占用2个字的条件跳转,之后运行c_int00。

这里多说一句,可以BOOTMODE固定选择从FLASH启动,但是通过更改CMD文件达到选择SRAM、FLASH运行程序。

假设BOOTMODE选择从FLASH启动,但是选择SRAM启动的CMD文件

0x33FF80+0x000076=0x33FFF6 Size:0x000002

0x33FFF6就是FLASH启动的地址,可以看到FLASH启动跳转代码没有被擦除,因此选择SRAM启动的CMD文件依旧可以从FLASH启动。但是反过就不行了,即CMD选flash,bootmode选SRAM,因为SRAM掉电丢失数据,即BEGIN段的codestart程序丢失了。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值