1. 问题现象与背景分析
最近在ZCU104开发板上调试AXI UARTLite时遇到了一个典型问题:在Vivado 2020.2中完成硬件设计后,通过Petalinux 2020.2构建的系统无法识别PL端扩展的串口设备。具体表现为:
- 系统启动后
/dev目录下没有出现预期的ttyUL*设备节点 - 反编译生成的设备树文件
pl.dtsi中虽然存在UART节点定义,但缺少关键的中断配置 - 通过
dmesg查看内核日志时,没有看到串口驱动加载成功的记录
这种情况在使用AXI UARTLite IP核时并不少见。根据Xilinx官方文档UG1144第193页的描述,完整的设备树节点应该包含寄存器映射、时钟配置和中断信号定义。但在自动生成的设备树中,中断相关配置项(interrupt-parent和interrupts)经常缺失。
2. 中断机制的关键作用
2.1 Linux串口驱动的工作模式
Linux内核中的串口驱动通常支持两种工作模式:
- 轮询模式:CPU定期检查设备状态,效率低下且占用资源
- 中断模式:设备通过中断通知CPU有数据到达,是标准工作模式
对于AXI UARTLite这种简单设备,其驱动在Linux内核中已经实现为中断驱动方式(代码位于drivers/tty/serial/xilinx_uartlite.c)。这意味着如果设备树中没有正确配置中断,驱动将无法正常工作。
2.2 中断信号连接验证
在Vivado Block Design中检查IP核连接时,需要特别注意:
- 确保
interrupt信号线已连接到AXI中断控制器 - 在Address Editor中确认中断号与硬件设计一致
- 通过<


2859

被折叠的 条评论
为什么被折叠?



