答题器项目出产时,需要在程序烧录时顺便出产信息(出产时刻、软件版别等)。后续若答题器出问题时,能知道是哪个批次出产的答题器,便利定位问题。
技能可行性
答题器所用芯片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.