无需使用RS232串口查看MicroBlaze处理器输出的技术问询
MicroBlaze无RS232串口实现控制台输出方案
完全可以实现你要的效果,Xilinx针对Spartan 3、Spartan 6、Virtex 5这类旧款FPGA配套的EDK/SDK工具链原生支持两类无需RS232硬件的控制台输出方案,使用体验和本地运行C/C++程序查看控制台基本一致:
- JTAG虚拟UART方案
这是最常用的调试方案,全程走现有FPGA下载器的JTAG链路,不需要额外接任何外围硬件。
配置步骤:- 硬件搭建时在EDK/Platform Studio中给MicroBlaze系统添加
axi_jtag_uartIP核,或者直接开启MicroBlaze调试模块(MDM)内置的UART功能,将该接口设为系统默认的标准输入输出设备 - 软件侧在SDK中编译工程时,BSP会自动适配该设备,你直接用
printf()、puts()等标准C库IO函数即可,输出内容会直接打印在SDK内置的Serial Terminal视图中
该方案延迟低、稳定性好,适合大量调试日志输出场景。
- 硬件搭建时在EDK/Platform Studio中给MicroBlaze系统添加
- 半主机(Semihosting)模式方案
不需要额外添加任何硬件IP,只要MicroBlaze开启了调试功能即可使用。
配置步骤:- 硬件侧无需做任何修改,保持MicroBlaze调试功能开启状态即可
- 软件侧在SDK的工程编译配置中开启半主机模式链接,直接调用标准C库IO函数,输出内容会直接打印在XMD(EDK 14.7及更早版本)或XSCT控制台中
该方案适合少量日志输出场景,缺点是输出延迟比JTAG UART高,且必须保持调试器处于连接状态才能正常输出。
旧器件适配注意事项
你用到的Spartan 3、Virtex 5最高支持到EDK 14.7版本,上述两个方案在该版本中均原生支持,不需要额外适配;Spartan 6可兼容最高2019.1版本的SDK,功能完全一致。两种方案都不需要修改应用层的C/C++代码,仅需调整BSP的标准IO设备配置即可,原有写好的打印逻辑可以直接复用。
内容的提问来源于stack exchange,提问作者Arslan Majid
相关产品推荐
相关产品推荐

