
前言很多刚接触 TI C2000 DSP 的工程师一提到Bootloader第一反应就是GPIO84 拉低然后串口下载程序。其实这只是DSP 芯片自带 ROM Bootloader的工作方式。而真正的工业产品例如储能PCS、光伏逆变器、充电桩等几乎都不会这样升级程序而是采用自定义 IAPIn Application ProgrammingBootloader。很多人把这两种方案混在一起其实它们的启动逻辑完全不同。一、Bootloader 到底是什么Bootloader启动加载程序就是CPU 上电以后最先运行的一段程序。它的职责一般包括初始化CPU判断是否需要升级程序接收新的固件擦除Flash写入Flash最后跳转到真正的APP程序因此Bootloader 本质就是负责启动APP程序的一段小程序。但是Bootloader 有两种来源芯片厂家已经烧在ROM里的自己写进Flash里的二、方案一DSP 内置 ROM Bootloader这是 TI 在芯片出厂时已经固化好的程序。它位于片内 ROM用户不能修改也不能删除。CPU 上电以后会先判断 Boot Mode也就是启动模式。启动模式由GPIO87、GPIO86、GPIO85、GPIO84四个引脚决定。例如1111表示Flash BootCPU直接去Flash运行用户程序。而1110表示SCI BootCPU进入ROM里的SCI Bootloader。等待串口下载程序。整个流程如下2.1 GPIO 为什么必须提前拉低很多新人都有一个误区我程序运行以后把GPIO84拉低可以进入SCI Boot吗答案绝对不行。原因很简单CPU只有在复位释放这一瞬间才会采样GPIO87~84采样完成以后Boot Mode 已经决定。后面软件再怎么改GPIOROM都不会重新判断。所以Boot Mode GPIO属于硬件启动配置不是普通GPIO。2.2 为什么很多开发板都有 Boot 按键就是为了复位前把GPIO84拉低。例如按住BOOT键→GPIO84 0→按RESET→CPU采样GPIO→进入SCI Boot然后释放按键即可通过串口烧程序。2.3 ROM Bootloader 的优点优点不占Flash、TI官方实现、非常稳定、调试方便。缺点只能SCI、CAN、SPI、I2C等固定方式。并且升级逻辑无法修改。不能CRC校验、版本管理、OTA、网络升级工业产品几乎不会直接使用。三、方案二自定义 IAP Bootloader工业产品真正采用的是Flash BootCPU永远1111 启动。CPU流程如下注意这里Bootloader也是你自己写的程序。它放在Flash前面。3.1 为什么工业产品都采用IAP因为它可以完全由软件控制。例如Bootloader启动以后收到升级命令如果Yes进入升级模式。否则Jump APP整个升级流程根本不需要拉低GPIO也不需要BOOT按键因为CPU一直都是Flash Boot。四、两种方案对比对比项ROM Bootloader自定义 IAP BootloaderBootloader位置芯片内部ROMFlash是否可修改不可可是否需要GPIO84等Boot引脚需要不需要是否需要Boot按键通常需要不需要是否支持CRC校验不支持支持是否支持版本管理不支持支持是否支持网络升级不支持支持是否支持OTA不支持支持是否适合量产一般用于调试非常适合