4.2 使用XMD对EDK设计进行调试
设备配置完毕后,可以通过MDM界面直接调试软件程序。GDB通过MDM和Xilinx Microprocessor Debug (XMD) 与 MicroBlaze 核相连。XMD是标准GDB接口和一种用于调试程序和校验微处理器系统的TCL(工具命令语言)接口的一个简化程序。XMD被用于与MicroBlaze以及PowerPC的GDB(mb-gdb & powerpc-eabi-gdb) 结合起来调试。Mb-gdb 和 powerpc-eabi-gdb通过用远程TCP协议与XMD通讯并控制相应目标。GDB既能在同一台电脑也能通过远程网络的电脑与XMD相连。
按照下列步骤来调试设计:
4.2.1 使用XMD
(1) 在XPS中,选择 Debug → XMD Debug Options。XMD调试操作对话框允许用户指定连接方式,默认是JTAG链路。对MicroBlaze有三种连接方式:
Simulator –XMD能够与MicroBlaze ISS相连 Hardware –XMD能够与在硬件上的MDM外围相连 Stub –XMD能够通过XMDSTUB与 JTAG UART 或者 UART 相连另外,虚拟平台– 允许虚拟模型(C模型)被使用(不在这次指导之内)。
(2) 确认Hardware被选择。选择Save。
选择Debug → Launch XMD。

图 4.2.1 XMD控制台
4.2.2 XPS UART Lite Register描述
(3) 在XMD%后打入命令:mwr , 0x84020004(base_addr+0x4) 0x61,可以将0x61对应ASCII码值a写入UART中。(如果初始地址为0x84020000,则为0x84020004)
图 4.2.2 XMD命令
图 4.2.3 HyperTerminal显示‘a’字符图 4.2.4、图 4.2.5:XMD UART Lite Register 输出命令
(4) 在XMD%后打入命令:mrd 0x84020000,来查看当前RS232的输出值,可以看到为0x0。
图 4.2.4 XMD UART Lite Register读入命令(一)(5) 在Hyperterminal上输入a,再打入命令:mrd 0x84020000,来查看当前RS232的输出值,可以看到为0x61。
图 4.2.5 XMD UART Lite Register读入命令(二)对照下表4.1,选择希望操作的地址进行操作。
该表显示了所有的XPS UART Lite registers和地址:
表4.1
4.2.3 使用GDB
(6) 在XPS中,选择Debug → Launch Software Debugger来打开GDB界面(在XMD已经启动的情况下)。
GDB中,选择File → Target Settings 来显示目标选择对话框,见图 4.2.6
点击OK。
图 4.2.6 GDB Target Selection(7) 在GDB中,选择File → Open…
在TestApp_Memory目录下选择executable.elf。C代码是可见的,因为用于调试(-g option) 的Create symbols在compiler options中被选成default。
(8) 在GDB中,选择File → Exit。
在XPS的Applications窗口下,双击工程: TestApp_Memory。
Debug and Optimization标签下设置Optimization级别为No Optimization。
点击OK。
图 4.2.7 Compiler Options(9) 重新编译代码
把新的executable.elf下载到GDB中。
选择Run → Run
在主程序中会有个自动的断点。GDB允许你单次执行C或者类似的代码。
注意:在寄存器窗口默认值是以16进制显示的,而在源窗口下是以10进制显示的。