无线电电子与电气工程百科全书 如何检查 HEX 文件。 无线电电子电气工程百科全书 许多无线电爱好者试图根据杂志出版物在微控制器上复制这个或那个设备,常常会遇到乍一看难以解释的困难。 看来微控制器的可维护性是毋庸置疑的,编程器也井然有序,并且设备完全按照图表组装,但它拒绝按应有的方式工作。 在这种情况下,经常有人抱怨开发的作者 - 他们说,他提出了一个不起作用的程序! 事实上,在绝大多数情况下,一切都是不同的。 问题在于,在将程序的十六进制文件“打印”到印刷出版物的页面上之后,将其手动输入计算机时会出现错误。 从软盘复制文件或从互联网“下载”文件时,发生故障的频率要低得多。 如何检查HEX文件? 这个问题的答案在已发表的文章中。 HEX 文件中的任何拼写错误,即使乍一看是最无害的,都会导致微控制器 (MCU) 执行不正确的命令,通常完全扭曲其操作的指定算法,并可能导致制造设备完全不可预测的行为。 在这种情况下,即使是最有资格的专家也无法根据外部迹象准确指示错误的位置。 剩下的就是非常仔细地、反复地检查 HEX 文件与原始文件。 我们心理的特殊性在于,一旦检查过某件事,我们就会下意识地相信自己不会犯错,而在反复检查过程中,我们经常会错过一些我们第一次没有注意到的事情。 因此,有一个即使不深入工作本质,也会进行“独立掌控”的助手是有用的。 在任何情况下都不应忽略由扫描仪读取并使用 FineReader 程序和类似程序识别的程序文本。 实践表明,即使是非常高质量的印刷文本,字符识别错误也是不可避免的。 当手动(从键盘)输入 HEX 文件或通过扫描获得的电子版本时,最常发生以下情况:
这些缺陷中最无害的是最后一个。 与其他不同的是,它不会影响程序的性能。 在大多数情况下,关于违反行序的情况也是如此。 然而,对输入数据的正确性进行严格控制的程序员仍可能拒绝具有此类错误的文件。 必须说的是,许多程序员的软件在从磁盘读取 HEX 文件时会监视 HEX 文件的正确结构。 这种情况的某些可能性是此类文件的结构所固有的,例如,您可以在作者的文章“MK 上的设备的开发和调试”(“Radio”,2001 年,第 5 期,第 19 页)中阅读相关内容。 XNUMX)。 问题在于,程序员经常只报告检测到错误,而没有任何详细信息,让用户自己解决。 在这种情况下,有缺陷的文件通常会被全部或部分加载到编程器中,如果您不小心发出“编程”命令,错误的数据将被传输到 MK 的内存中。 此后,验证将成功完成(验证MK和编程器的存储器内容),用户将得到一切正常的印象。 在这方面,PonyProg 程序(2.05 版及更早版本)的行为非常危险。 除了 HEX 之外,还有其他几种可用的输入文件格式,加载时会尝试选择所需的一种。 由于无法识别错误的正确文件格式,她仍然将其输入为二进制。 在图中。 图 1 显示了此类输入后 PonyProg 编程器窗口的视图。 内存中不包含命令的机器代码,而是构成文本 HEX 文件的字母和数字的 ASCI 代码。 MK自然不会按照这样的“程序”运作。 输入与第一个文件相同的无错误文件后,同一窗口的视图如图 2 所示。 XNUMX. 请注意,在这两种情况下,程序员都没有给出任何错误消息或有关自动确定的文件格式的信息。 该程序可以帮助您在将 HEX 文件输入编程器之前找到并纠正其中的错误 检查十六进制。 借助它的帮助,您可以通过在计算机键盘上键入其内容来创建新的 HEX 文件。 在后一种情况下,验证与数据输入同时发生。 输入包含多个错误的 HEX 文件后 CheckHEX 程序的数据窗口如图 3 所示。 XNUMX. 在其左上角显示光标的当前坐标,显示按下该键时将在何处输入字符。 右侧有一个窗口,单击该窗口可以随时取消或重新启用错误检查。 在手动数据输入期间阻止控制可能很有用,否则每个未完成的行都伴随着许多只会分散注意力的消息。 警告和错误消息窗口(图 4)位于主窗口下方。 以“信息”一词开头的消息仅指示 HEX 文件的某些行的特殊状态。 在本例中,有两条这样的线。 第一个是可选的,因为即使没有它,地址计数也会从零开始。 这些行(在文件的不同位置可能有几行)允许您寻址超过 64 KB(32 Kwords)的内存。 正是它们的存在将 INX32 格式的 HEX 文件与 INX8M 格式的类似文件区分开来。 第 25 行标志着 HEX 文件的结尾。 如果它后面有任何数据(第 26 行),程序员将不会接受它。 例如,这可用于在 HEX 文件中放置文本注释。 在示例中,源文件的第 20 行只是移至此处,将其留空。 原则上,HEX 文件中存在空行是可以接受的,但一些程序员可能仍然认为它们是错误的。 为了以防万一,CheckHEX 程序会对此发出警告。 请注意第 3 行的校验和错误消息。这可能是字符串中任何字符(冒号除外)输入错误的结果,应特别小心检查。 如果有意更改了字符串中的一个或多个字符(例如,为了纠正程序中的实际错误),括号中显示的“正确”校验和非常有用。 在本例中,错误是由于输入数字 8 而不是字母 B 导致的。 第四行第五个字符中所犯错误的性质很明显。 我们只注意到,为了方便视觉搜索错误,主窗口中的文本字体不包含西里尔字符;它们的位置被与正确字符毫无共同之处的字符所取代。 但是,错误消息包含俄语字母。 数据窗口右侧有一个窗口,显示 MK 内存的图片,其中充满了分析文件中的代码。 该窗口的一个片段如图 5 所示。 0060. 白色对应于空闲单元,蓝色或红色对应于已占用单元。 图中的说明文字(它们不在真实窗口中)指的是 PIC 控制器的典型内存分布;对于其他 MK 和 RPOM,它可能完全不同。 通过在窗口内移动鼠标光标,您可以确定其中显示的任何单元格的地址。 在这种情况下,光标(窗口右上角的十字线)指向地址 OOSON 处的字节——地址 XNUMXH 处双字节字的低位。 当然,没有设计要加载的程序并且没有仔细分析它的用户通常不知道哪些单元应该被占用,哪些单元不应该被占用。 尽管如此,注意被占用单元的连续序列中的中断并再次确保它们不会由于错误而出现,就像在考虑的情况下一样,这是有意义的。 红线表示在这些地址输入的代码在文件中多次出现。 在示例中(见图 3),第七行和第八行是相同的。 如果重复行是由于手动输入数据时不小心造成的,则可以将其删除。 但更常见的情况是,罪魁祸首是该行的地址部分(从第四个到第七个字符)中出现的错误。 在这种情况下,不仅错误地址处的代码会被扭曲,而且给定行最初所属的存储区域也将保持未定义状态。 这一切都需要反复检查。 总之,我们注意到在CheckHEX程序窗口中有三个控制按钮: - 创建一个新的 HEX 文件; - 打开并检查现有的; - 保存创建或编辑的文件。 当您尝试加载或创建另一个文件而不首先保存旧文件的修改版本时,程序始终会提醒您执行此操作。 程序退出之前也会发生同样的事情。 作者:A. Dolgiy,莫斯科 查看其他文章 部分 微控制器. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 用于触摸仿真的人造革
15.04.2024 Petgugu全球猫砂
15.04.2024 体贴男人的魅力
14.04.2024
其他有趣的新闻: ▪ 自解体电话 ▪ 易腐烂的标签
免费技术图书馆的有趣材料: 本页所有语言 www.diagram.com.ua |