You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zynq新增AXI DMA调用ioread32触发imprecise external abort故障

Zedboard openwifi新增SG模式AXI DMA触发内核崩溃排查方案

故障根因

你遇到的Unhandled fault: imprecise external abort (0x406)是ZYNQ平台CPU访问外设寄存器时收到总线错误应答的典型表现,故障点出在ioread32读寄存器阶段,说明驱动映射的虚拟地址对应的物理地址不可访问,具体原因集中在以下几类:

  • 地址配置不匹配:Vivado块设计中实际分配给新增AXI DMA的寄存器基地址、地址空间大小和设备树中填写的reg属性不一致,驱动ioremap映射到了不存在的物理地址区间,CPU读操作无外设应答触发错误。
  • 地址空间冲突:新增DMA分配的0x80420000 ~ 0x8042FFFF区间和其他已挂载外设的地址段重叠,实际访问到了不支持32位寄存器读操作的其他IP。
  • 硬件连线/时钟/复位异常:AXI DMA的S_AXI_LITE寄存器接口接错端口(比如误接PS的HP口而非GP口)、时钟频率和GP口时钟不匹配、复位引脚处于有效状态导致外设未正常上电,都会导致寄存器访问无应答。
  • IP配置与设备树/驱动不匹配:
    • 开了Scatter Gather模式但设备树未填写对应的SG属性,或compatible字段和Vivado中使用的DMA IP版本不对应,驱动按错误的寄存器偏移访问未实现的地址段
    • Vivado中仅使能了单方向通道(比如只开S2MM用于FPGA传数据到PS),但驱动默认初始化MM2S和S2MM两个通道,读取未实现的通道寄存器触发错误
    • 设备树中填写的中断号、通道数量等参数和硬件实际配置不符,初始化流程跑飞访问非法地址。

排查与解决步骤

  • 核对硬件地址配置
    打开Vivado块设计的Address Editor页面,确认新增AXI DMA的S_AXI_LITE接口分配到的基地址确实为0x80420000、空间大小0x10000,地址段无冲突告警。确认后重新导出XSA硬件文件,基于新的XSA生成设备树,不要手动硬改地址参数。
  • 修正设备树节点
    参考openwifi原生工程已有的两个DMA节点写法,补全新增DMA的所有必填属性,SG模式单S2MM通道的参考配置如下:
    axi_dma_2: dma@80420000 {
        compatible = "xlnx,axi-dma-v7_1"; // 字段和你Vivado中DMA IP的版本严格对应
        reg = <0x0 0x80420000 0x0 0x10000>;
        interrupt-parent = <&intc>; // 与工程使用的中断控制器节点一致
        interrupts = <0 31 4>; // 中断号与Vivado中连线到IRQ_F2P的端口号匹配,4代表高电平触发
        dma-channels = <1>;
        xlnx,include-sg = <1>;
        xlnx,sg-length-width = <23>; // 与DMA IP配置中SG传输长度位宽一致
        xlnx,include-mm2s = <0>; // 禁用未使用的MM2S通道,避免驱动访问不存在的寄存器
        #dma-cells = <1>;
    };
    
  • 核对硬件连线
    逐一确认块设计中以下连接正确:
    • DMA的s_axi_lite接口接PS的M_AXI_GP端口,不要接AXI HP端口
    • s_axi_lite_aclk时钟与PS GP口时钟同源,通常为100MHz
    • axi_resetn复位引脚接PS输出的低有效外设复位信号,不要悬空
    • DMA的中断引脚正确连接到PS的IRQ_F2P端口,中断号与设备树配置一致
  • 硬件访问验证
    系统启动后先不加载xilinx_dma驱动,用devmem命令直接读取DMA的版本ID寄存器验证硬件通路:
    devmem 0x80420000
    
    如果执行该命令就触发崩溃,说明是硬件连线/地址配置问题,和驱动无关;如果能正常读出数值,再排查设备树和驱动版本匹配问题即可。

内容的提问来源于stack exchange,提问作者Aaron3219

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:45:30