我遇到了 PIC Micro 控制器的问题。
我有一个很久以前编写的微控制器,我丢失了相关的源代码和原理图。现在我需要反转端口的值。我可以使用一些非门来做到这一点,但这样做很麻烦。或者,我需要将整个程序写回去。
我不希望在 PIC C 或 MikroC 中看到代码。拥有可理解的汇编代码就足够了。
那么有人对我可以用于此目的的优质 HEX 反编译器有任何经验吗?根据你的经验有什么意见吗?:)
编辑:设备 PIC 16F84A
我遇到了 PIC Micro 控制器的问题。
我有一个很久以前编写的微控制器,我丢失了相关的源代码和原理图。现在我需要反转端口的值。我可以使用一些非门来做到这一点,但这样做很麻烦。或者,我需要将整个程序写回去。
我不希望在 PIC C 或 MikroC 中看到代码。拥有可理解的汇编代码就足够了。
那么有人对我可以用于此目的的优质 HEX 反编译器有任何经验吗?根据你的经验有什么意见吗?:)
编辑:设备 PIC 16F84A
反编译不太可能是一个实用的解决方案,甚至更不可能存在用于您的特定编译器和指令集组合的工具。
然而,反汇编很简单,尽管您是否能够理解生成的代码是另一回事,因为 HEX 文件中没有保留任何注释或符号;如果您有原始目标代码,它可能会使反汇编更具可读性。有很多 PIC 反汇编器可用,只需谷歌它;我不能针对任何特定的问题指导您,因为有许多具有不同指令集的 PIC 系列,而您没有具体说明。
一个简单的反汇编方法是将您的 HEX 文件加载到 MPLAB 中并选择 View->Disassembly Listing,然后右键单击窗口并选择“Output to File”。这个输出可能需要一些按摩才能适合输入到汇编程序。
在官方 PICList 技术参考中有一个 PIC 反汇编器列表。
许多人从不使用独立的反汇编器,而是更喜欢在他们最喜欢的 PIC 模拟器中使用反汇编器。
我知道这是一个旧帖子,但是我最近遇到了类似的问题,并没有在网上找到一个非常完整的答案。由于硬盘驱动器故障,我丢失了 MPLAB X IDE 项目,幸运的是我已经用代码的工作版本对设备进行了编程。
恢复 .hex 请
按照以下步骤从已编程设备中恢复 .hex 信息:
使用 MPLAB X IDE 和您的 PIC 编程器(我使用 PICkit3)从已编程的器件中读取 .hex 文件:
反汇编 .hex
您可以在 MPLAB X IDE 中查看反汇编,但不能编辑或保存它(或者至少我不知道如何去做),而且它非常神秘。我发现最简单的,没有附加条件的反汇编器是与 gputils 一起打包的,它被称为 gpdasm。要下载和安装,请访问此处的 gputils 页面:
https://gputils.sourceforge.io/
现在打开命令提示符并导航到 .hex 文件所在的文件夹。使用以下命令从 .hex 生成汇编源文件:
gpdasm -p p16f84a -csno hexfile.hex > asmfile.dis
使用 -c -s -n 和 -o 选项,这会生成非常好的列表,非常接近能够按原样组装。显然变量名称和标签无法恢复,但至少可以识别子例程,这使事情变得容易得多。希望这对将来的某人有所帮助。
如果我没记错的话,您应该能够将 hex 文件加载到 MPLAB IDE 中并从那里查看汇编代码以及运行它并在仿真器中逐步执行代码。
如果设备不受代码保护,您还可以使用它从设备读取代码。