我在可编程设备中嵌入了序列号字符串“1080910”,该设备已使用ALL-100编程器下载到二进制文件中。这是我的主文件。我需要将此序列号更改为需要使用主文件重新刷新的单元的序列号 - ALL-100编程器使用XACCESS用户界面,其具有显示地址位置,十六进制数据字段和Ascii字段的编辑功能。这个文件中的某个地方是序列号字符串 - 任何人都可以帮助我找到和编辑序列号字符串,因为我无法使用搜索功能找到它并且无法直观地获取数字序列。帮助!!!
答案 0 :(得分:2)
如果数据在源代码中有符号地址,并且不是局部变量,则其地址将出现在链接器生成的映射文件中。如果它是用文字常量初始化的局部变量,则数据将存在于静态初始化数据中,其位置也应在映射文件中标识。
另一种可能性是您的应用程序映像已压缩,启动代码在运行时将其扩展到RAM中。如果数据和代码地址在RAM而不是ROM中,这在地图文件中是显而易见的。如果是这种情况,那么你所尝试的将是非常困难的。您必须知道所使用的压缩算法,以及图像的哪个部分是压缩部分(其中一部分将是从ROM运行的解压缩代码)。然后,您必须解压缩图像,修改字符串,然后重新压缩它。此外,如果解压缩对压缩或解压缩的数据执行任何类型的校验和,则还必须重新计算和修改它。
如果从一开始就要求这样做,那么最好在链接描述文件中保留空格,或使用特定于编译器的扩展来绝对定位特定位置的数据。
答案 1 :(得分:1)