读回十六进制以验证编程

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

你好,
我想使用SmartSnippets.exe CLI工具读取flash的内容编程后的DA14580,并自动比较的结果字节与原始的十六进制文件。
请将我指向一个工具,以将keil-output hex文件转换为smartsnippets格式化的十六进制数据,反之亦然?

目前,Keil输出看起来是这样的(这是英特尔的十六进制格式吗?)
: 020000042000 da
: 1000000000980020 b9040020c1040020d904002079
: 1000100000000000000000000000000000000000 e0

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

可以通过编程将英特尔十六进制转换为Smart Snippets文件中显示的ASCII十六进制,并只删除该文件的十六进制部分,但如果有更简单的方法来执行此验证,将非常感激!

谢谢,
凯文

设备:
MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨hughesk,

嗨hughesk,

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

由于MT_dialog

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

你好,
过一段时间我再回到这个问题上来。我还有两个问题:
1.我没有看到一个CLI选项验证标志相关的闪存。如果Smartsnippets和在闪烁期间使用的DA14580二进制文件已经对闪存进行了验证,那么在发布到生产环境之前,我只需要一些方法来演示这一点。那么,您是否有一个验证标志,我错过了,或任何方式一次性演示或测试Smartsnippets/DA14580闪存验证?

2.如果没有验证标志或验证过程无法演示,那么我可以将闪存内容读回磁盘。这很简单,然后我可以将那个十六进制文件转换为二进制文件。然后我想比较两个二进制文件:
a. flash读回产生的二进制数据
b. keil编译的十六进制文件生成的二进制文件
然而,我发现两者有一些细微的区别。忽略前8个字节(为使其可引导而添加的),似乎从flash的回读中有一些0x00的字符串在Keil-hex二进制中是0xFF。这些地点可以预测吗?除非我能解释这些(诚然是很小的)差异,否则我不能进行直接的验证,而且我也没有必要将它们硬编码为异常。

提前感谢你的帮助!

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨hughesk,

嗨hughesk,

  1. 我不确定得到的问题,CLI命令烧录文件到flash包括一个验证选项,如果设置[-verify]标志工具将验证烧录的二进制文件在flash上。"闪光验证的一次性演示"是什么意思?如果该工具被指示进行验证,它将提示验证成功。请检查SSToolbox的帮助选项工具的帮助文档。
  2. 关于第二个问题,你下载到ARM中的二进制文件。bin文件,而不是keil生成的。hex文件,你不能直接比较这两个文件。那些带有FF的二进制区域是keil产生的洞,这是由于580具有分散文件和内存组织的事实。hex文件没有这种漏洞,因为它包含了从hex2bin实用程序转换过来的地址。但是从读取中生成的文本文件可以直接与你用来烧录fw的.bin文件相比较(当然是不同的格式)。

由于MT_dialog

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

你好,
感谢您的及时回复。

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

hughesk
离线
最后看到:2年7个月前
加入:2014-04-26 02:56
至于二进制

对于二元比较,我采取了以下具体步骤:
1.在Keil中编译为十六进制。称之为KeilOutput.hex
2.在十六进制文件上运行'hex2bin.exe - l8000 '生成一个32KB的KeilOutput.bin
3.程序KeilOutput。通过JTAG探针使用SmartSnippets v3.8将DA14580 spi连接Flash的十六进制,选择“Yes”使其可引导。
4.读回Flash内容并保存为FlashContents.hex。
5.在FlashContents上运行'hex2bin.exe - l8000 '。hex创建FlashContents.bin
6.比较KeilOutput.bin和FlashContents.bin。

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

谢谢,
凯文

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨hughesk,

嗨hughesk,

智能片段版本,您使用的是很老,聪明的片段工具箱套件已经取代了聪明的片段,但我认为,即使是这个版本的验证选项,- help命令不会显示此选项,但如果你想使用写命令错误的工具将提示您正确的选择。您还可以检查Smart Snippets帮助选项和该选项中可用的pdf。

关于烧录和读文件之间的比较,我做了相同的,但读回是在.bin文件而不是十六进制,文件是相同的(除了引导头和原始文件有FF填充)。

由于MT_dialog

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

你好,
感谢您对SmartSnippets版本的建议-我没有意识到SmartSnippets本身是在工具箱中更新的(我以为只是一个IDE…)。不管怎样,新版本确实在写flash CLI选项中有一个-verify。我的问题是一个验证问题

1.您是否有任何建议的方式来演示'verify'选项实际上执行一个验证?有什么方法可以中断它,改变回读,让它失败一次SPI flash验证,或者沿着这些线?这是在发布到产品之前验证编程脚本所需要的。

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

谢谢,
凯文

hughesk
离线
最后看到:2年7个月前
加入:2014-04-26 02:56
追踪二进制数据

后续二进制比较:

如果我使用新的SmartSnippet从十六进制文件刻录,我注意到(在我的特定十六进制文件)地址A8是SmartSnippets窗口中出现的部分的开头,我假设意味着未指定。如果我燃烧到SPI闪光灯然后读回来,A8开始的区域充满了'00'。
打开一个用hex2bin创建的。bin文件,我看到'——'区域被FF代替了。因此,回读flash二进制文件与hex2bin创建的二进制文件不匹配。

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

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

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨hughesk,

嗨hughesk,

关于CLI和verify选项,从Smart Snippets工具箱手册中粘贴命令:可执行类型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] [-nomessages messagfilter]。什么命令是写入flash,然后执行一个读回为了验证,但这种行为对用户是透明的,其阅读的工具只会提示您flash为了验证然后它要么promt您验证成功与否。如果您正在寻找一个单独的命令,将显示整个过程,没有这样的东西是不可用的。请在附件中找到上述程序的截图。

由于MT_dialog