回读十六进制以验证编程

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
10个帖子/ 0个新帖子
最后发表
hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
回读十六进制以验证编程

你好,
我想使用SmartSnippets.exe CLI工具在编程DA14580后读取闪光灯的内容,并自动将结果字节与原始六角文件文件进行比较。
你能给我指出一个工具,要么从keil输出的十六进制文件转换到SmartSnippets格式化的十六进制数据,或反之?

目前,Keil输出看起来像这样(这是英特尔十六进制格式吗?):
:020000042000DA
:100000000000980020b9040020c1040020d90c1040020d904002079
:10000000000000000/10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Smart Snippets CLI输出如下文件:
十六进制地址文本
0x00000 70 50 0000 0000 4A D0 pP J?
0x00008 00 98 00 20 B9 04 00 20 ??

可以通过编程方式将intel十六进制转换为Smart Snippets文件中显示的ASCII十六进制,并只剪切该文件的十六进制部分,但如果有更简单的方法来进行验证,那将非常感谢!

谢谢,
凯文

设备:
MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 11:34
嗨hughesk,

嗨hughesk,

keil的输出是一个.hex intel格式文件,在flash中刻录的是实际的二进制文件,因为cli将.hex文件通过hex2bin.exe来生成.bin文件。如果您正在寻找验证标志,那么cli命令工具将嵌入一个验证标志。请检查智能代码片段的帮助文档(打开智能代码片段工具箱并检查帮助选项,在那里您将找到帮助文档),它还解释了可用的cli命令的58x和68x族。

由于MT_dialog

hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
你好,

你好,
一段时间后我会回到这个问题。我有两个后续问题:
1.我没有看到与闪存相关的验证标志的CLI选项。如果闪存期间使用的SmartSnippet和DA14580二进制文件已经进行了验证闪存,我只需要某种方式来证明在释放到生产之前。那么,你有一个验证标志,我错过了,或者以一次性演示或测试smartsnippet / da14580闪存验证?

2.如果没有验证标志或验证过程无法演示,那么我可以将闪存内容读入磁盘。这很简单,然后我可以将这个十六进制文件转换为二进制文件。然后我想比较两个二进制文件:
a. flash回读生成的二进制文件
湾从keil编译的hex文件生成的二进制文件
但是,我发现这两个有一些轻微的差异。忽略前8个字节(添加以使其启动),似乎有几个0x00在rescl中的0x00中的0x0在Keil-hex二进制中。这些地点是否可预测?除非我可以解释这些(允许的次要)差异,否则我无法进行直接验证,并且我不一定希望将它们硬编码为例外。

提前感谢您的帮助!

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 11:34
嗨hughesk,

嗨hughesk,

  1. 我不确定搞定问题,将文件刻录到Flash的CLI命令包括验证选项,如果设置[-verify]标志工具将验证闪存上的刻录二进制文件。你到底是什么意思“来自Flash验证的一次性演示”?该工具如果指示验证它将推出验证是否已成功。请检查SSToolbox的帮助选项工具的帮助文档。
  2. 关于第二个问题在二进制文件中将其下载到ARM中.bin文件,而不是从keil生成的.hex文件,您无法直接比较这两个文件。二进制文件中的那些区域是keil由于580具有的散点文件和内存组织而产生的孔。.ehex文件没有那种漏洞,因为它包括从hex2bin实用程序转换的地址。但是从读取生成的文本文件直接与您用于刻录FW的.bin文件(以不同的格式抵消)。

由于MT_dialog

hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
你好,

你好,
谢谢你的提示回复。

关于CLI选项,“SmartSnippets.exe -help”在SmartSnippets v3.8中不打印任何-verify选项。这是新功能吗?

hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
关于双星

对于二进制比较,我采取了以下具体步骤:
1.编译在Keil中的十六进制。致电这个keiloutput.hex.
2.在十六进制文件上运行'hex2bin.exe -l 8000'以生成32kb keiloutput.bin
3.通过JTAG探测将keiloutput.hex进行DA14580 SPI连接的闪光灯,选择“是”以使其启动。
4.读回Flash内容并保存为FlashContents.hex。
5.在FlashContents上运行'hex2bin.exe -l 8000'.hex创建FlashContents.bin
6.比较KeilOutput.bin和FlashContents.bin。

忽略FlashContents.bin的前8字节(由于可启动选项),文件几乎完全匹配,除了内存的三个部分,在FlashContents.bin中是'00'的集合,在KeilOutput.bin中是'FF'的集合。这组文件中的三个部分位于内存的开头,长度分别为192、28和92字节。如果你觉得有帮助的话,我很乐意通过电子邮件分享一个片段。

谢谢,
凯文

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 11:34
嗨hughesk,

嗨hughesk,

嗯,你使用的智能代码段版本是非常旧的,智能代码段工具箱套件已经替换了智能片段,但我认为即使这个版本有验证选项,-help命令不会显示此选项,但如果您尝试要使用Write命令错误,该工具将提示您使用正确的选项。您还可以查看该选项中可用的智能代码段帮助选项和PDF。

关于刻录和读取文件之间的比较,我完成了相同但在.b文件文件而不是十六进制的读回来,文件是相同的(可引导标题和原始文件具有FF填充除外)。

由于MT_dialog

hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
你好,

你好,
感谢SmartSnippets的版本建议——我没有意识到SmartSnippets本身在工具箱中被更新了(我以为只是一个IDE…)。无论如何,新版本确实在写flash CLI选项中有一个-verify。现在我的问题只是一个验证问题:

1.你有任何建议的方式来证明“验证”选项实际上执行了验证吗?一些方法,要么中断它和改变的读回,使它失败SPI flash验证一次或沿着这些行什么?这是在发布到生产环境之前对编程脚本进行验证所需要的。

2.或者,如果没有一个简单的方法来演示验证过程,然后回到。斌,我看到指定读回文件名以“。斌”会导致写二进制文件(目前还不清楚在决定使用的文件扩展名是Smartsnippets)的输出。然而,我仍然会遇到与使用hex2bin进行回读和转换时完全相同的问题。也就是说,在内存的开头有三个字符串,在读回中是00,在KeilOutput.bin中是FF(从KeilOutput转换而来)。使用hex2bin十六进制)。知道为什么这些不同吗?

谢谢,
凯文

hughesk
离线
最后看到:2年6个月前
加入:2014-04-26 02:56
跟进二元

跟进二元比较:

如果我使用新的SmartSnippets从一个十六进制文件刻录,我注意到(在我的特定的十六进制文件中)地址A8是出现在SmartSnippets窗口中的'——'部分的开始,我想这意味着未指定。如果我烧录到SPI Flash,然后读回来,从A8开始的区域被'00'填充。
使用hex2bin创建的,打开.bin文件,我看到' - '区域是用ff替换的。因此,回读闪存二进制文件与创建二进制的Hex2bin不匹配。

编辑:
看起来可以通过指定填充字节来解决这个问题:
Hex2bin.exe -p 0 [file.hex]
结果是'file.bin',它匹配回读Flash内存的内容。

我仍然有兴趣了解是否有一个方法来测试或演示Smartsnippets'-verify'选项,但如果没有,我对针对正确创建的二进制文件的回读比较感到满意。

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 11:34
嗨hughesk,

嗨hughesk,

关于CLI和验证选项,粘贴命令从智能代码片段工具箱手册:可执行类型spi -chip chip_version [-clk clk] [-cs cs] [-miso miso] [-mosi mosi] [-jtagjtag_serialNumber | -com_port portNumber] [-baudrate rate] [-gpio pinId] [-uart TxId][firmware firmware_file] -cmd write -file filename [-offset ofst] [-max size](验证)[-bootable] [-y] [-N -NOMESSAGES MESSIONFILTER]。命令所做的是写入闪存,然后执行读取以验证,但此行为对用户是透明的,但该工具将提示您读取闪存以验证,然后它会验证推出您的验证已成功。如果您正在寻找一个将显示整个过程的单独命令,则不提供此类事物。请从上述步骤中查找附加屏幕截图。

由于MT_dialog