TI C2000 MCU Boot过程分析-以TMS320F28069为例

每一款MCU从上电复位到代码运行到main函数这之间的一段过程就是MCU的boot,其实不只是MCU,其他任何类型的processor都有这样的一个过程,这里以TI C2000 F28069为例,分析其Boot过程,以帮助对处理器的底层原理有一个比较清楚的了解。

芯片复位之后,首先会跳到一个固定的中断向量,成为RESET,其地址是0x3F FFC0,RESET指向存在于boot ROM里的InitBoot函数,InitBoot是厂家出厂就固化好的,这个函数用于开启Boot过程,检查特定的IO口以决定选择哪一种Boot模式


假设在仿真模式下需要将程序下载到片内的Flash里面去(程序掉电不会丢失),那么Boot会就根据RAM里面的EMU_KEY和EMU_BMODE里面的值来决定是什么样的boot模式。在Boot 到Flash模式下,会到0x3F 7FF6所在的位置开始取指令,在linker链接文件里有相关的定义

MEMORY
{
PAGE 0 :
   BEGIN       : origin = 0x3F7FF6, length = 0x000002/* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
}
SECTIONS
{
   codestart           : > BEGIN,      PAGE = 0
   .reset                : > RESET,      PAGE = 0, TYPE = DSECT
}

而codestart段(Section)是在CodeStartBranch.asm里定义过的,这个汇编文件里有一个code_start函数,在这个函数里关闭看门狗,然后跳转到_c_int00函数,这个_c_int00是C语言运行环境的设置函数,只有经过_c_int00后,才能够跳转执行用C语言编写的main函数

如果代码烧写到RAM里运行(掉电程序会丢失,但是仿真调试情况下不用频繁擦写Flash),则需要将链接文件里的BEGIN的地址定义做一下修改:

MEMORY
{
PAGE 0 :
   BEGIN        : origin = 0x000000, length = 0x000002
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
}
SECTIONS
{
   codestart           : > BEGIN,      PAGE = 0
   .reset                : > RESET,      PAGE = 0, TYPE = DSECT
}

当然除了以上BEGIN的地址修改,还需要对程序的存储地址等做相应的修改,这比较简单,官方都有相应的链接文件模板,这里不再介绍。


总体来看,整个Boot过程可以总结如下:

1. 复位,Reset(0x3F 7FF6

2. 跳转到InitBoot函数,读取相关IO口的状态

3. 判断启动方式

4. 跳到codestart,执行code_start函数,关看门狗,跳到_c_int00,设置C语言函数的运行环境,准备执行main函数

5. 执行用户编写的main函数(入口函数)





  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TMS320F280049是一款TI C2000系列的MCU。在TMS320F280049的Boot过程中,首先芯片复位后会跳转到一个固定的中断向量地址0x3FFFC0,该中断向量称为RESET。RESET指向的是存在于boot ROM中的InitBoot函数,该函数是厂家出厂时就固化好的。InitBoot函数用于开启Boot过程,并检查特定的IO口以确定选择哪种Boot模式。\[1\]\[2\] 在Boot过程中,还会使用一个.cmd文件来分配空间并配置从flash或ram运行。对于TMS320F280049,可以选择使用28004x_generic_flash_lnk.cmd或28004x_generic_ram_lnk.cmd文件,其中flash模式下程序不会丢失,而ram模式下程序会在掉电时丢失。\[3\] 总结起来,TMS320F280049的Boot过程包括芯片复位后跳转到RESET中断向量,执行InitBoot函数开启Boot过程,并根据特定的IO口选择Boot模式。同时,还需要使用.cmd文件来分配空间并配置运行模式。 #### 引用[.reference_title] - *1* *2* [TI C2000 MCU Boot过程分析-以TMS320F28069为例](https://blog.csdn.net/hitaowei/article/details/72123885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [初学DSP(1)-TMS320F280049C入门](https://blog.csdn.net/fzf1996/article/details/113622388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值