命令窗口导出数据
save <filespec> <start address>,<end address>
save E:\Desktop\Data.txt 0x0003E6,0x0003E6+0x24
地址前选择加入以下字母来导出目标区域的数据。
- D直接寻址的片内RAM
- I间接寻址的片内RAM
- X扩展的外部RAM
- C代表ROM
导出数组或者变量的数据。
save E:\Desktop\Data.txt &var,&var+4
存在问题???
float var[30];
// &var = 0x000000;
// &var+25 = 0x001964
save E:\Desktop\Data.txt X:0x000000,X:0x000064
目标文件:路径
数据来源:存储类型、存储范围、起始地址、结束地址(起始地址+数据的长度-1)
数据解析
Data.txt是以HEX386格式保存的自定义文件名的文件。每行有4+4×4+1=21字节数据。前4个字节和最后一个字节为无效数据。中间的4x4=16个字节为有效数据。
Step 1. 去除无效数据
文件的第一行、最后两行,每行前的“:”和前4个字节、后1个字节与数据无关。
Step 2. 排版有效数据
去除无效数据后,对剩余的有效数据,间隔4字节插入空格。
Step 3. 转为十进制
数据长度,1字节
数据地址,2字节
数据类型,1字节
数据内容,n字节
数据校验和,1字节
\fcolorbox{red}{aqua}{数据长度,1字节}\fcolorbox{red}{aqua}{数据地址,2字节}\fcolorbox{red}{aqua}{数据类型,1字节}\fcolorbox{red}{aqua}{数据内容,n字节}\fcolorbox{red}{aqua}{数据校验和,1字节}
数据长度,1字节数据地址,2字节数据类型,1字节数据内容,n字节数据校验和,1字节
:10246200464C5549442050524F46494C4500464C33
数据长度
数据起始地址
记录类型
- 00 – 数据 记录(Data Record)
- 01 – 文件结束 记录(End of FileRecord)
- 02 – 扩展段地址 记录(ExtendedSegment Address Record)
- 03 – 开始段地址 记录(Start Segment Address Record)
- 04 – 扩展线性地址 记录(Extended Linear Address Record)
- 05 – 开始线性地址 记录(Extended Segment Address Record)
数据域
数据个数=数据/sizeof(数据)
校验和的计算
0x10+0x24+0x62+0x00+0x46+0x4C+0x55+0x49+0x44+0x20+0x50+0x52+0x4F+0x46+0x49+0x4C+0x45+0x00+0x46+0x4C=0x04CD
0x4CD % 0x0100=0x00CD
0x0100-0x00CD=0x33
其他
- load的使用
keil中Debug Command中的save和load的使用
参考
HEX386格式解析
HEX文件格式详解
Hex386toBin
uVision/Keil如何将数据导出到文件
从keil中导出内存数据到matlab中分析