你好,
我想使用SmartSnippets.exe CLI工具在编程DA14580后读取闪光灯的内容,并自动将结果字节与原始六角文件文件进行比较。
请将我指向一个工具,以将keil-output hex文件转换为smartsnippets格式化的十六进制数据,反之亦然?
目前,Keil输出看起来像这样(这是英特尔十六进制格式吗?):
:020000042000DA
:100000000000980020b9040020c1040020d90c1040020d904002079
:10000000000000000/10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
智能代码段CLI输出一个看起来的文件:
地址十六进制文本
0x00000 70 50 00 00 00 00 00 4A D0 PP J?
0x00008 00 98 00 20 B9 04 00 20??
可以通过以编程方式将英特尔HEX转换为智能片段文件中所示的ASCII HEX,并将其剪断该文件的十六进制部分,但如果有更简单的方法来执行此验证,那将非常感谢!
谢谢,
凯文
设备:
嗨Hughesk,
Keil的输出是一个.hex英特尔格式文件,并且在闪存中刻录的是实际的二进制文件,因为CLI通过Hex2bin.exe通过.hex文件以生成.bin文件。如果这是您正在寻找的内容,CLI命令工具嵌入了验证标志。请检查智能片段的帮助文档(打开Smart Spetpets Toolbox并检查帮助选项,您还会发现帮助文件)它还可以解释58x和68x系列的CLI命令。
谢谢mt_dialog.
你好,
一段时间后我会回到这个问题。我有两个后续问题:
1.我没有看到与闪存相关的验证标志的CLI选项。如果闪存期间使用的SmartSnippet和DA14580二进制文件已经进行了验证闪存,我只需要某种方式来证明在释放到生产之前。那么,你有一个验证标志,我错过了,或者以一次性演示或测试smartsnippet / da14580闪存验证?
2.如果没有验证标志或无法演示验证过程,那么我可以将闪存内容读回磁盘。这是简单的,然后我可以将该十六进制文件转换为二进制文件。然后我想比较两个二进制文件:
一种。从闪存中生成的二进制文件读回来
湾从keil编译的hex文件生成的二进制文件
但是,我发现这两个有一些轻微的差异。忽略前8个字节(添加以使其启动),似乎有几个0x00在rescl中的0x00中的0x0在Keil-hex二进制中。这些地点是否可预测?除非我可以解释这些(允许的次要)差异,否则我无法进行直接验证,并且我不一定希望将它们硬编码为例外。
在此先感谢您的帮助!
嗨Hughesk,
谢谢mt_dialog.
你好,
谢谢你的提示回复。
关于CLI选项,'smartsnippets.exe -help'不会在smartsnippets v3.8中打印出任何-merify选项。这是一个新功能吗?
关于二进制比较,我采取以下具体步骤:
1.编译在Keil中的十六进制。致电这个keiloutput.hex.
2.在十六进制文件上运行'hex2bin.exe -l 8000'以生成32kb keiloutput.bin
3.通过JTAG探测将keiloutput.hex进行DA14580 SPI连接的闪光灯,选择“是”以使其启动。
4.读取闪存目录并保存为FlashContents.HEX。
5.在FlashContents上运行'hex2bin.exe -l 8000'.hex创建FlashContents.bin
6.将KeilOutput.bin与FlashContents进行比较。
忽略前8个字节的flashContents.bin(由于可引导选项),除了三个部分内存之外,文件几乎完全匹配,其中在FlashContents.bin是'00'和Keiloutput.bin的集合是'FF'。该特定文件集中的三个部分位于内存的开头附近,并且长度为192,28和92字节。如果您觉得有帮助,我会乐意通过电子邮件分享代码段。
谢谢,
凯文
嗨Hughesk,
嗯,你使用的智能代码段版本是非常旧的,智能代码段工具箱套件已经替换了智能片段,但我认为即使这个版本有验证选项,-help命令不会显示此选项,但如果您尝试要使用Write命令错误,该工具将提示您使用正确的选项。您还可以查看该选项中可用的智能代码段帮助选项和PDF。
关于刻录和读取文件之间的比较,我完成了相同但在.b文件文件而不是十六进制的读回来,文件是相同的(可引导标题和原始文件具有FF填充除外)。
谢谢mt_dialog.
你好,
感谢SmartSnippets版本建议 - 我没有意识到SmartSnippets本身在工具箱中更新(我认为只是一个IDE ......)。无论如何,较新版本确实在Write Flash CLI选项中具有验证。现在我的问题只是验证之一:
1.您是否有任何建议的方式证明“验证”选项实际执行验证?一些方法可以中断并改变回读,以便它失败一次或沿这些线路的SPI闪存验证?在释放到生产之前,需要对编程脚本进行验证。
2.或者,如果没有一种简单的方法来演示验证过程,那么返回到.bin,我确实看到指定以“.bin”结尾的读取文件名会导致写入二进制文件(它是尚不清楚文件扩展名实际用于确定SmartSnippets的输出)。但是,当我读回并使用Hex2bin转换时,我仍然存在完全相同的问题。也就是说,内存开头有三个字符串,返回和keiloutput.bin中的redback和ff中的00串(从keiloutput.hex使用hex2bin转换)。任何想法如何不同?
谢谢,
凯文
跟进二元比较:
如果我使用新的SmartSnippet从十六进制文件刻录,我注意到(在我的特定十六进制文件)地址A8是SmartSnippets窗口中出现的部分的开头,我假设意味着未指定。如果我燃烧到SPI闪光灯然后读回来,A8开始的区域充满了'00'。
使用hex2bin创建的,打开.bin文件,我看到' - '区域是用ff替换的。因此,回读闪存二进制文件与创建二进制的Hex2bin不匹配。
编辑:
看起来可以通过指定填充字节来解决:
hex2bin.exe -p 0 [file.hex]
导致“file.bin”匹配回读闪存的内容。
我仍然有兴趣了解是否有一个方法来测试或演示Smartsnippets'-verify'选项,但如果没有,我对针对正确创建的二进制文件的回读比较感到满意。
嗨Hughesk,
关于CLI和验证选项,将命令粘贴为智能代码箱工具箱手册:可执行文件-type spi -chip inch_version [-clk clk] [-cs cs] [-moso miso] [-jtagjtag_serialnumber|-com_port portnumber] [-baudrate率] [-gpio pinit] [--uart txid] [固件firmware_file] -cmd write -file文件名[-offset] [-max size][-核实][-bootable] [-y] [-N -NOMESSAGES MESSIONFILTER]。命令所做的是写入闪存,然后执行读取以验证,但此行为对用户是透明的,但该工具将提示您读取闪存以验证,然后它会验证推出您的验证已成功。如果您正在寻找一个将显示整个过程的单独命令,则不提供此类事物。请从上述步骤中查找附加屏幕截图。
谢谢mt_dialog.