Hex文件烧录到MCU中的技巧

答题器项目生产时,需要在程序烧录时附带生产信息(生产时间、软件版本等)。后续若答题器出问题时,能知道是哪个批次生产的答题器,方便定位问题。
技术可行性 答题器所用芯片nrf51822flash共256kbyte,flash根本用不完,我们可以取一块没用到的flash,烧录时把生产信息也写进去。
hex文件是可以烧录到mcu中,被mcu执行的一种文件格式。如果用记事本打开可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ascii码形式显示)。hex文件可以按照如下的方式进行拆分来分析其中的内容:
例如 “:1000080080318b1e0828092820280b1d0c280d2854”可以被看作“0x10 0x00 0x08 0x00 0x80 0x31 0x8b 0x1e 0x08 0x28 0x09 0x28 0x20 0x28 0x0b 0x1d 0x0c 0x28 0x0d 0x28 0x54”
第一个字节 0x10表示本行数据的长度;
第二、三字节 0x00 0x08表示本行数据的起始地址;
第四字节 0x00表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
‘00’ data rrecord:用来记录数据,hex文件的大部分记录都是数据记录
‘01’ end of file record: 用来标识文件结束,放在文件的最后,标识hex文件的结尾
‘02’ extended segment address record: 用来标识扩展段地址的记录
‘03’ start segment address record:开始段地址记录
‘04’ extended linear address record: 用来标识扩展线性地址的记录
‘05’ start linear address record:开始线性地址记录
然后是数据,最后一个字节 0x54为校验和。
校验和的算法为:计算0x54前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和
在上面的后2种记录,都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。
hex文件都是由记录(record)组成的。在hex文件里面,每一行代表一个记录。记录的基本格式为:
record mark ‘:’
length
load offset
record type
info or data
chksum
1 byte
1 byte
2 bytes
1 byte
n bytes
1 byte
看个例子:
:020000040008f2
:10000400ff00a0e314209fe5001092e5011092e5a3
:00000001ff
对上面的hex文件进行分析:
第1条记录的长度为02,load offset为0000,rectype为04,说明该记录为扩展段地址记录。数据为0008,校验和为f2。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为(0x0008 《《 16)。后面的数据记录都以这个地址为基地址。
第2条记录的长度为10(16),load offset为0004,rectype为00,说明该记录为数据记录。数据为ff00a0e314209fe5001092e5011092e5,共16个byte。这个记录的校验和为a3。此时的基地址为0x80000,加上offset,这个记录里的16byte的数据的起始地址就是0x80000 + 0x0004 = 0x80004.
第3条记录的长度为00,load offset为0000,type = 01,校验和为ff。说明这个是一个end of file record,标识文件的结尾。
在上面这个例子里,实际的数据只有16个byte:ff00a0e314209fe5001092e5011092e5,其起始地址为0x0004.

PCB设计中常见的那些误区
晶体管的检测经验的分享
嵌入式系统视频图像捕获研究
意法半导体(ST)发布的新一代蓝牙低功耗 (BLE)SOC
RFMD新推出集成了功放开关和滤波器的RF前端
Hex文件烧录到MCU中的技巧
智慧消防能否成为企业主攻方向?
易制毒化学品源头监管体系及系统流程简析
柔性振动盘-小批量多品种的自动化需求
兆芯联合共建通用软硬件适配启动仪式在北京举行
魅族智能手表MIX:轻智能,有多智能?
EEPROM在充电桩电源模块的应用
科耀机电展开MES全方位研讨项目,实现工业智能化
智伴科技持续以AIED为战略新方向,硬件+内容+新零售三翼齐飞
荣耀Magic2的诸多个性化创新将会在很多企业的年货采购中脱颖而出
局部放电检测仪的使用注意事项
行业 | 韩日动力电池产业的发展差异
浅谈LED显示应用及封装行业发展的趋势
苹果公司可以禁止Epic Games的“ 堡垒之夜”游戏进入其App Store
区块链如何推动产业数字化发展