debug - save MDK memory content to file

前言

在调试程序,准备分析从设备返回的一段buffer.
才发现,MDK显示出的内存内容,居然没法直接保存成bin文件或直接能拷贝到文本中, 做的挫啊…
上网查,大家一般是用SAVE命令 + hex2bin, 将内存数据保存成bin文件。
我这,是能用SAVE命令保存MDK内存到hex. 但是hex转bin这有问题,找了几个版本的hex2bin都不好使。应该是MDK5生成的HEX格式版本比较新吧.

最后,我用J-Flash V6.46g + winhex搞定, 机智啊:)
J-Flash就是最好的hex2bin.

试验

保存MDK内存内容到hex

这步有官方资料的。
http://www.keil.com/support/man/docs/uv3/uv3_cm_save.htm

我这调试要从0x20005E2c地址开始保存303个字节,那我的命令就如下:

SAVE d:\USART1_RX_BUF 0x20005E2c, 0x20005F5B

输入命令的地方,就在MDK的命令行输入框中。
在这里插入图片描述
看一眼生成好的文件,确实是hex格式的。
在这里插入图片描述

将hex转bin

我找的几个hex2bin, 都无法正确将这个hex转成bin.
我直接用JFALSH, 这个是装JLINK驱动那会装上的.
用JFALSH载入这个hex文件,是可以正常打开的。调试器自带的工具就是好用。
在这里插入图片描述
用JFLASH自带的数据文件另存功能保存成bin
在这里插入图片描述
在这里插入图片描述
然后用winhex打开转好的bin文件,就可以用拷贝功能,将2进制内容拷贝出来,贴到工程中,供分析协议用。
在这里插入图片描述
最后得到2进制内容的数组,这时就可以干正经活了。

unsigned AnsiChar data[304] = {
	0x01, 0x2F, 0x01, 0x01, 0x00, 0x01, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 
	0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0x28, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 
	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 
	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x14, 0xFE, 0xFE, 0xFE, 
	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 
	0xFE, 0x14, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0xFE, 0xFE, 0xFE, 
	0x08, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x08, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 
	0xFE, 0xFE, 0x02, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x3D, 0x00
};

MDK细节方面做的真不好用, 除了MDK也没得用。
本来从设备内存地址拷贝内容,这都是IDE应该做的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值