【ARMKEIL常识】uVision/Keil如何将数据导出到文件

来源:互联网 发布:海德格尔 知乎 编辑:程序博客网 时间:2024/05/20 02:23

出处:百度文库



uVision/Keil如何将数据导出到文件

1前言

    在Keil中,有的时候需要将调试过程中的一些存储区数据(数组或结构体等)导出到文件,以便于对数据进行分析,可是找遍了菜单,也没有找到能够直接导出的功能,如何做呢?

2应用举例

    笔者在调试一款产品时,定义了一个256个元素的数组RpmFeedback,每个元素是一个无符号的32位数据。每个元素实际上是对同一个外部IO信号上升沿时刻的采样数据,这些数据用于分析上升沿产生的频率是否一致,其偏差有多大。

    在调试过程中,可以将此数组添加到Watch窗口中观察其数据,如下图:


但是由于Watch窗口只能够显示数据,大量的数据分析在程序未被完善前是无法直接使用的,如果能够将数据存储下来,使用Excel等进行简单地分析,以检查数据是否符合要求的话就太完美了。

可以,没有工具支持的话,如果用从Watch窗口中逐一将每个元素手动抄到记事本或Excel中的办法,这种方法一是太麻烦,二是也可能出现错误,尤其是数据量很大的情况下出错概率也会很大。

怎么办呢?

3解决办法

经过查询资料,发现使用命令窗口可以实现自动的数据导出功能。

方法如下:

3.1 打开命令窗口

打开Command窗口,如果没有,请在系统菜单“View”下,找到“Command Window”并点击,会显示出如下窗口。

3.2 输入存盘命令

在窗口的下方有一个输入框,在其中输入以下语句:

SAVE D:\C.TXT  0x20000130,0x2000230

后回车执行。

 

命令的含义:

  其中SAVE是存盘命令,用于将指定的存储区的数据存储到电脑文件中。

  D:\C.TXT是文件路径和文件名。可以根据具体要求进行修改。

  0x20000130是待存储的起始地址

  0x20000230 是待存储的终止地址 

3.3  文件验证

打开D:盘,发现多了一个名为C.TXT的文件。

3.4  文件内容

打开C.TXT,发现其数据如下:

红色字体是与Watch窗口中其第一个元素相符合的地址。

这个文件结构和HEX文件结构是类似的,可以根据相关的标准进行解释。

从数据上看,文件的第一行、最后两行、每行前的冒号、每行的前4字节如10013000,以及每行的最后一个字节如04,这是与数据无关的。

:020000042000DA

:100130007325050016070A00B24E0500F1FD040004

:10014000CD5F040084AD06008A5A1F00ADCA0700C7

:10015000DDA5050057E50400B7490600AA14110003

:100160008C8B0B00EDCF0F00426408004588040023

:100170006D31570021780800F7780400F45A170011

:10018000B3F70400C86F2F00108917007C710700B7

:1001900068310500135F070000A60E00AD1E0600C3

:1001A000B3F7040031690500932C9B0071A9050089

:1001B00025310400B77C0B0017400400F5B80B0094

:1001C000990C040058181500262F050004B60800E5

:1001D0002BDF2800182C0E00D0A81B00345504007B

:1001E000A7A7050085F10400472D1100AC0A0D00FA

:1001F000F8490C00BF500800D4E30B00892B1C0009

:10020000C71D0A002B461100B99F0D006059180048

:10021000C3D30600EB9D040062120A00B2BDAC001D

:10022000489405019902070072A55A00DBF13900D4

:010230008F3E

:00000001FF

3.5 文件处理

简单地将无效数据去除,包括第一行和最后两行,每行的冒号,还有每行的前4个字节如10013000,以及每行的最后一个字节如04,再把剩余数据每4字节添加一个空格,排版后数据如下,这样每个元素的关系就出来了。

剩下的只需要调整一下字节顺序,再转换为十进制,就可以在Excel中进行简单分析了。

73250500 16070A00 B24E0500 F1FD0400

CD5F0400 84AD0600 8A5A1F00 ADCA0700

DDA50500 57E50400 B7490600 AA141100

8C8B0B00 EDCF0F00 42640800 45880400

6D315700 21780800 F7780400 F45A1700

B3F70400 C86F2F00 10891700 7C710700

68310500 135F0700 00A60E00 AD1E0600

B3F70400 31690500 932C9B00 71A90500

25310400 B77C0B00 17400400 F5B80B00

990C0400 58181500 262F0500 04B60800

2BDF2800 182C0E00 D0A81B00 34550400

A7A70500 85F10400 472D1100 AC0A0D00

F8490C00 BF500800 D4E30B00 892B1C00

C71D0A00 2B461100 B99F0D00 60591800

C3D30600 EB9D0400 62120A00 B2BDAC00

48940501 99020700 72A55A00 DBF13900

4版本要求

在查到的资料中是以uVision3为基础讲的,笔者使用的是uVision4,也可以正常使用

5参考文件

本方法参见Keil官网资料

保存内存数据到文件:http://www.keil.com/support/docs/3262.htm

SAVE命令解释:http://www.keil.com/support/man/docs/uv3/uv3_cm_save.htm