我有 ATmega328P 微控制器的编译十六进制文件,但没有源代码。我需要找到一种方法在 AVR 模拟器中调试它。
我已经做了什么:
我读到了 avr8js 模拟器项目,但我不知道如何将任何调试器插入到这个模拟器中。
您能告诉我有关 Windows/Linux/MacOSX 平台上执行此操作的工具吗?
你可以使用avr-gdb。
GDB 将接受十六进制文件,但显然由于缺少调试符号,调试功能将受到限制:
avr-gdb firmware.hex
要在模拟器中调试程序,您可以使用 simavr,它公开了一个 GDB RSP 调试服务器,您可以通过 GDB 连接到该服务器。
simavr -g --mcu atmega328p --freq 1000000 firmware.hex
然后,连接到simavr的GDB服务器,在GDB中:
(gdb) target remote :1234
此时就可以在GDB中调试程序了。
要反汇编GDB中的程序内存,可以使用
x
命令:
x/10bfi 0x100
10b
是字节数,fi
指示GDB拆解内存,0x100
是起始地址。所以上面的命令将从程序存储器中的地址 0x100 开始反汇编 10 个字节。
如果您有 AVR 兼容的调试工具,例如 Atmel-ICE 或 PICKit4,则可以使用 Bloom 等工具来调试程序。 Bloom 将连接到您的调试工具并通过 GDB 服务器向目标公开接口,就像 simavr 一样。免责声明:我是《Bloom》的作者。