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

相关推荐
tju新生代魔迷8 分钟前
Verilog HDL 学习笔记(十)| 第10章 时序和延迟
笔记·学习·fpga开发
aprilaaaaa6 小时前
(TC397 学习笔记)二、ICU和TIM的时钟计算
笔记·学习·fpga开发
X_xcccc9 小时前
2026高端FPGA开发平台权威评测与选型指南
fpga开发
威嵌神州9 小时前
军工加固计算机七大核心特性解析|国产化、宽温、强加固工程实现
嵌入式硬件·计算机网络·fpga开发
FPGA小迷弟9 小时前
高云半导体深度解读:国产FPGA车规赛道的领跑者
fpga开发
努力搬砖的小H9 小时前
FPGA应用技巧之Block Design基本使用方法
功能测试·fpga开发·zynq·block design
ALINX技术博客10 小时前
【黑金云课堂】FPGA技术教程FPGA 基础:HDMI视频输入与环路输出实验
fpga开发·音视频
hahaha601611 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
珞光电子USRP SDR软件无线电平台1 天前
国产嵌入式SDR平台LW-E320-G详解:射频、FPGA、ARM架构与应用选型
arm开发·fpga开发·架构
FPGA小迷弟1 天前
【硬核通俗】FPGA实现SDR软件无线电完整技术解析(原理+架构+实战)
fpga开发·dsp开发·sdr·无线电