FPGA----zynq 7000与zynqMP内存区域保留方法

1、问题的由来:

我们在使用SoC时,不可避免的使用了AXI-HP通道以完成FPGA和ARM的交互,这个交互如果定义在内存区域,那么就需要将这一片内存区域保护起来,防止linux调用。

2、zynq与zynqMP的内存管理方式不同

3、对于zynq 7000系列的设备只需要写设备树的保护即可

bash 复制代码
/include/ "system-conf.dtsi"

/ {
    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        pl_buffer: buffer@2000000 {
            reg = <0x02000000 0x00000100>;
            no-map;
            compatible = "shared-dma-pool";
        };

        ps_buffer: buffer@2010000 {
            reg = <0x02010000 0x00000100>;
            no-map;
            compatible = "shared-dma-pool";
        };
    };
};

4、对于zynqMP系列,需要配置内核+设备数的原则

(1)配置内核,使得ddr可以通过 /dev/mem/ 被读写

bash 复制代码
#配置内核
petalinux-config -c kernel


#输入"/"进入搜索界面
#搜索:DEVMEM,并配置下述两个选项
DEVMEM=y
STRICT_DEVMEM=n

(2)编写设备树

bash 复制代码
/include/ "system-conf.dtsi"

/ {
    #address-cells = <2>;
    #size-cells = <2>;

    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;

        pl_buffer: buffer@02000000 {
            reg = <0x0 0x02000000 0x0 0x00000100>;
            no-map;
            compatible = "shared-dma-pool";
        };

        ps_buffer: buffer@02010000 {
            reg = <0x0 0x02010000 0x0 0x00000100>;
            no-map;
            compatible = "shared-dma-pool";
        };
    };
};

注意:必须是<2>,ARM64 内核需要这样才能正确解析 64-bit 地址,否则就报 unsupported node format

相关推荐
小蘇的FPGA8 小时前
fpga-wide-data-crc32
fpga开发
落雨无风21 小时前
fpga板级调试常见问题
fpga开发
码农小韩1 天前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
FPGA小迷弟1 天前
FPGA 与千兆以太网:各类物理接口的形式、区别、使用方法与应用场景详解
tcp/ip·macos·fpga开发·udp·fpga
NamoAmitabha1281 天前
Zynq 的 AXI GPIO,是“ARM 通过一条国际标准高速公路(AXI 总线),去遥控 FPGA 里的一个寄存器”。---deepseek
fpga开发·zynq--ps
NamoAmitabha1281 天前
ARM 不懂寄存器,它只懂内存地址---deepseek
fpga开发·zynq--ps
FPGA小迷弟1 天前
FPGA 千兆以太网帧格式全解:从 IEEE 802.3 帧结构到 Verilog 收发实现
人工智能·5g·fpga开发·架构·硬件架构
幻智星科技1 天前
FPGA数据采集接口选型终极指南
fpga开发·udp·硬件架构
星夜离尘561 天前
用 SystemVerilog 写一个可背压的流式 RLE 编码器:计数拆分、包尾与 flush 的完整实现
fpga开发
NamoAmitabha1282 天前
ARM 不懂寄存器,它只懂内存地址--deepseek
fpga开发·zynq--ps