技术交流 & 最新设计指南获取方法
步骤1) 扫描下方二维码,进入微信公众号
步骤2) 获取最新指南,在公众号后台回复以下关键字:【bootloader】
步骤3) 有疑问,在公众号后台回复以下关键字:【交流群】
目录
1
初识Bootloader
1.1 一次Bootloader
1.2 二次Bootloader
1.3 DSP上电引导过程
2
关于c_int00
2.1 c_int00完成的工作
2.2 系统初始化
2.3 全局变量初始化
2.4 全局对象构造
2.5 main函数与exit函数的调用
3
CMD文件与DSP存储空间
3.1 MEMORY和SECTIONS指令
3.2 程序与数据“段”
4
Bootloader数据流
4.1 数据流结构
4.2 16-bit数据流
4.3 8-bit数据流
5
FLASH擦写操作 —— FLASH
API的使用
5.1 FLASH操作的重要特点
5.2 FLASH API使用步骤
5.3 FLASH API常用函数使用举例
6
Bootloader设计过程中的9大关键点
6.1 Bootloader程序在升级过程中不被擦除的实现方法
6.2 上电后先进入Bootloader再跳转至main()函数的实现方法
6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法
6.4 Bootloader与上位机形成交互式通信
6.5 Bootloader程序能够对接收数据校验的实现方法
6.6 在数据出错等情况下能够自动重启的实现方法
7
CCS输出文件格式 ——
ASCII-Hex、Intel-Hex与Binary-Hex文件
7.1 CCS配置生成Hex文件的方法
7.2 ASCII-Hex
7.3 Intel-Hex
7.4 Binary-Hex
4 Bootloader数据流
“在线升级程序时,程序以怎样的数据流存在”
当我们设计Bootloader时,在线升级程序通常使用的是.hex文件,.hex文件有多种类型,我们可以依据需求进行选择,但.hex文件中的数据是以固定“数据流格式”存在的。
通常情况下,Bootloader数据流分为16-bit和8-bit两种,二者大同小异,只是数据存储类型不同。更多关于Bootloader数据流的内容请参考《TMS320xxxx xxxx Boot ROM Reference Guide》。
4.1 数据流结构
Bootloader数据流中的数据都采用16进制。
数据流中:
第1个16-bit字为关键字,用以表明后续数据的宽度:8 bits或16 bits。关键字0x08AA代表8-bit数据流,0x10AA代表16-bit数据流。
第2~9的8个字为保留字:0x0000。
第10~11的2个字包含着22-bit的程序入口地址。
第12个字代表第一个数据块的长度,无论是在8-bit或16-bit数据格式中,该长度的单位为字(16-bit),也就是说在8-bit数据格式中,需要前后两个字节拼成一个16-bit字后进行数据长度统计。
第13~14个字代表第一个数据块存放的起始地址。
后续的字是数据块的具体内容。
当一个数据块结束后,紧接着的字分别为下一个数据块的长度、存放起始地址、数据内容,如此循环,直至当数据块长度为0x0000。
也就是说Bootlodaer数据流必须以0x0000结尾。
4.2 16-bit数据流
16-bit数据流示例:
4.3 8-bit数据流
当数据流为8-bit格式时,字的低字节(LSB)在高字节(MSB)之前,而对于32-bit的值,如目标地址,最高字(MSW)首先被装载,然后是最低字(LSW)。