问题标签 [hex-file]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
debugging - 修复 intel HEX 文件的校验和问题
我制作了以下 intel hex 文件片段来测试几个 8051 处理器模拟器:
我使用的一个位于此处:http ://www.jroweb.de/8051/
根据我的研究,据我了解,英特尔十六进制文件的校验和是通过将所有十六进制数字对(最后一个除外)相加来计算的,然后将结果与 255 进行与运算以获得 8 位值,将值取反,加 1,然后做 mod 256。
我基本上遵循了这些论坛的受访者的数学:
当我执行计算时,上面代码片段中每一行的校验和值都是正确的,但是在我上面提到的 8051 处理器模拟器程序中,它在最后一行显示校验和错误。它认为该值应该是 7F 而不是 7E。
是否有可能在最后一个 hex 文件行中存在误报(这会使某些软件误以为 7F 是正确的值)?如果是这样,我应该如何安排我的十六进制文件中的最后一行来修复它?
visual-c++ - 从英特尔 HEX 记录文件打印行
我正在尝试通过串行连接将 Intel Hex 文件的内容发送到微控制器,该微控制器将处理发送的每一行并根据需要将它们编程到内存中。处理代码期望在 Hex 文件中出现的行被发送,包括每行末尾的换行符。
此代码在 Windows 10 PC 上的 Visual Studio 2013 中运行;作为参考,微控制器是 ARM Cortex-M0+ 型号。
但是,下面的代码似乎并没有按照我预期的方式处理 Intel Hex 记录文件。
目前,串行传输调用已被注释掉,for 循环用于验证文件是否被正确读取。我希望看到 hex 文件的每一行都打印到终端上。相反,我什么也得不到。有任何想法吗?
编辑:经过进一步调查,我确定程序甚至没有进入 while 循环,因为文件无法打开。我不知道为什么会这样,因为该文件存在并且可以在记事本等其他程序中打开。但是,我对文件 I/O 的经验并不丰富,所以我可能会忽略一些东西。
stm32 - 使用 stm32 将音频文件加载到外部内存中
我想将 bin 格式的音频文件移动到外部闪存。我用incbin
这个。音频文件存在于.map
文件中,但.hex
文件中缺少这些数据。
给我一个解决这个问题的方法。
arm - 我可以从 IAR 工作台中的十六进制输出文件中获取项目设置值吗?
我是 IAR 工作台和嵌入式软件的任何部分的初学者。我突然不得不为控制器产品编译十六进制代码。因此,我成功地将现有的十六进制文件(完全没有错误)上传到使用闪存加载程序的产品中,并且我检查了所有功能是否正常工作。但是当我上传十六进制文件时,我更改了原始文件中的一些测试值(因为,我必须稍后更改一些值以满足客户的要求),我可以上传但它根本不起作用..我认为调试或其他值丢失。
在这种情况下,有没有办法获取现有的hexa文件中设置的调试值或其他链接器值?因为前任没有留下任何有关设定值的信息,所以很难询问原始设定值。
我使用 ewarm,IAR 8.5ver(没有许可证版本。所以我只能使用这个程序 30 天,因为我在过去的 IAR 版本中失败了很多次)
如果您有任何建议或设置调试/链接器值,请告诉我(我更改了配置文件,链接器中的输出)感谢您阅读本文!
c - PicSimlab 0.7.5版本1分钟内关机非常频繁
picsimlab 工具 0.7.5 版工具在 Windows 10 中打开该工具后 1 分钟内关闭。我尝试再次卸载并安装,仍然面临同样的问题。我正在尝试加载通过在 MPLAB X IDE V5.35 中运行 C 项目生成的十六进制文件我在 ubuntu20.04 中尝试了相同的 picsimlab,它在那里运行良好,在 Windows 中它非常频繁地关闭
elf - 尝试在 srec_cat 中复制使用 ielftool 制作的 CRC
因此,我试图找出一种srec_cat
在将代码放在微控制器上之前计算 CRC 的方法。现在,我的构建后脚本使用ielftool
from IAR 进行计算并将其插入到 hex 文件中的正确位置。
我想知道如何srec_cat
使用相同的十六进制文件生成相同的 CRC。
这是产生我要复制的 CRC32 的 ielftool 命令:
--checksum APP_SYS_ApplicationCrc:4,crc32:1mi,0xffffffff;0x08060000-0x081fffff
APP_SYS_ApplactionCrc
是将存储校验和并添加 4 字节偏移量的符号crc32
是算法1
指定补码m
反转输入字节和最终校验和i
用起始值初始化校验和值0xffffffff
是起始值- 最后,
0x08060000-0x081fffff
是计算校验和的内存范围
我已经尝试了很多东西,但是我认为这是迄今为止我最接近同一命令的srec_cat
:
-crop 0x08060000 0x081ffffc -Bit_Reverse -crc32_b_e 0x081ffffc -CCITT -Bit_Reverse
-crop 0x08060000 0x081ffffc
以某种方式指定将计算 CRC 的内存范围-Bit_Reverse
m
当放置在正确的位置时,应该做与 ielftool相同的事情-crc32_b_e
是算法。(我还不确定我需要大端_b_e
还是小端_l_e
)0x081ffffc
是内存中放置 CRC 的位置-CCITT
初始种子( 中的起始值ielftool
)都是一位(这是默认值,但我想我会把它扔在那里)
有没有人知道如何复制 ielftool 的 CRC?还是我只是徒劳无功?
我是 CRC 的新手,除了基础知识外,我知道的不多。如果我有完全相同的算法,这是否重要?当我将代码放在板上时,CRC 是否仍然有效?
注意:我目前正在使用ielftool 10.8.3.1326
和srec_cat 1.63
python - python中的.hex文件读取或.bin - 获取第一个地址值
我有各种 .hex 文件。其中一些从地址 0x0000 开始,一些从 0x3000 开始。在第二个选项中,我必须用“F”填充缺失的地址。但是在简单地将 .bin 文件转换为 .hex 之后,我不了解第一个地址。有没有办法知道它以便程序可以决定是否需要添加一些字符?
eclipse - 在 Eclipse 中自动将两个 hex 文件合并为一个
我在 Eclipse 的同一工作区中有一个引导加载程序项目和一个应用程序项目。
我想将这两个项目的 hex 文件合并为一个 hex,这样我就可以同时在我的 MCU 中刷入两个项目。
我知道使用一些工具(https://www.keil.com/support/docs/2666.htm)可以做到这一点,但我希望合并过程在 Eclipse 中使用构建后命令或其他命令进行。
谢谢
c++ - 在 c++ 中使用 fstream 读取/写入二进制数据和控制字符
我正在尝试使用 C++ 编写一个程序,在字符串和字符之间执行 XOR 操作。结果存储在一个文件中,稍后再读回。XOR 操作的某些输出导致字符成为控制字符,如 SOH、ACK、STX、BEL。然后,这些控制字符会阻止程序继续运行,因此它只会将 XOR 操作输出的一半写入或读取到文件中。我尝试使用 ios::binary 模式来避免这种情况发生,但问题仍然存在。有没有其他方法可以强行避免控制字符操作?