STM32固件提取:从JlinkARM.dll中寻找JlinkOB

需积分: 0 0 下载量 20 浏览量 更新于2024-06-30 收藏 2.5MB DOCX 举报
本文主要介绍了如何从JlinkARM.dll文件中提取STM32固件的过程,作者遇到的问题以及解决方法。 STM32固件提取过程: 1. 首先,作者提到了一位大神成功从JlinkARM.dll中提取出STM32F072的JlinkOB固件,但该固件源于5.12版本的DLL,而作者使用的版本为6.10j,导致固件升级提示和设备连接问题。 2. 为了自己提取固件,作者决定使用WinHex工具进行操作。首先尝试寻找5.12版本中固件的相同前缀(如0x381C0020),但在6.10j版本的DLL中未找到匹配。 3. 作者意识到固件可能在不同版本中有变化,因此下载了5.12j版本的JlinkARM.dll,并成功定位到固件起始位置,固件以381C开头。 4. 接着,作者尝试在6.10j版本中通过查找5.12j版本固件前的特定字节序列来定位固件,找到可能的起始位置4A2500EA,但还需要确定固件的长度。 5. 作者回到5.12j版本的描述中寻找线索,原博客提到固件从偏移量0x6D26BC开始,长度为0x0A0E8(41192字节)。 解决策略: 1. 假设在6.10j版本中找到的4A2500EA是固件的起始位置,作者需要寻找对应的长度信息。这可以通过对比两个版本DLL中的固件结构,或者搜索其他文档或论坛来获取。 2. 另一种思路是,作者可以使用类似于5.12j版本的提取方法,从6.10j版本的JlinkARM.dll的相同偏移量开始尝试提取固件,然后检查提取的数据是否与STM32固件相符。 3. 为了确认固件,作者可能需要使用十六进制编辑器或专用的二进制提取工具来读取和分析提取的固件数据,确保其完整性并能正确应用于STM32芯片。 总结: 本文展示了在不同版本的JlinkARM.dll中寻找并提取STM32固件的方法,包括使用WinHex工具进行十六进制比较和搜索,以及如何根据已知版本的信息推断其他版本的固件位置。这种方法对于固件更新或自定义JLink固件时非常有用,但也需要注意固件的版本兼容性和潜在的设备兼容性问题。