开发环境:Ubuntu18.04

软件环境:Linux内核、uboot源码及FPGA程序

硬件环境:zynq 开发板 mz7100

关于本文中所述问题,PS(arm Linux)与(FPGA) 共享的事PS端的内存。开发板的内存共有1G(0x00000000 ~ 0x40000000),其中768M(0x00000000 ~ 0x30000000)为Linux操作系统所拥有,剩余256M(0x30000000 ~ 0x40000000)作为PS与PL共用的内存。

这样,就需要解决解决Linux系统预留内存的问题,解决该问题有两种方法:一种是通过配置uboot启动参数,另一种是修改Linux源码,我采用了第一种。

1、配置uboot启动参数。

我们采用配置uboot启动参数的方式,把Linux系统可占用的内存空间限定到了 768M,参数如下:

optargs=mem=768M ethaddr=00:0a:35:00:01:20 cma=128M

其中,mem=768M 就是配置的启动参数。这样做的好处是,在不修改内核源码的情况下,就可以轻松的解决内存预留的问题,不足之处在于,这样只能预留高地址段的内存,系统会自动把低地址段的内存分配至系统。

2、通过修改内核源码的方式

通过 memblock_free、memblock_remove两个函数来释放掉指定物理地址。

个人理解是,这种方式相当于先让内核占用完整的内存,并建立内存映射表,然后通过这两个函数,再释放掉指定物理地址的映射关系,达到内存预留的目的。这种方法的好处在于可以可以灵活的实现内存预留,想预留那块内存您做主,不便之处在于需要修改内存。

推荐一个帖子:https://www.uisrc.com/forum.php?mod=viewthread&tid=2506&extra=

另:

解决完内存共享的问题以后,我们需要把VDMA输入的视频流(HDMI)写入到共享的内存中,在调试vdma的驱动时,发现dma

申请内存总是失败。经过查看内核允许申请最大连续内存是16M(左图),而我们的DMA需要申请的连续内存是64M,因此会报错,通过配置参数 cma=128M,把内核允许申请连续内存的大小改为128M(右图),这样就满足了我们的需求,解决了驱动的问题。

zynq平台,PS 与 PL共享内存的方法相关推荐

  1. PS和PL共享DDR

    本文中,在SDK中先采用helloworld模板来检查整个工程是否创建成功,得到正确的结果后,再加入PS操作DDR的代码(用的是ZCU102).本文主要描述整个设计的流程,过程容易忘记,所以记录,也方 ...

  2. (124)FPGA面试题-ZYNQ的PS和PL端怎么交互的?

    1.1 FPGA面试题-ZYNQ的PS和PL端怎么交互的? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-ZYNQ的PS和PL端怎么交互的: 5)结束语 ...

  3. app与bootloader共享内存的方法(分散加载文件)

    app要升级时要通知bootloader,然后进入bootloader模式,app要如何通知bootloader呢?以前用了写入升级标志到eeprom的方式,然后bootloader再去读取,这是一种 ...

  4. ZYNQ中PS、PL的含义

    在刚学习ZYNQ的过程中,看到学习文档上有下面这样一句话: GPIO可以通过 MIO连接到 PS端的引脚,也可以通过 EMIO连接到 PL.本章将介绍如何使用GPIO外设通过 MIO控制 PS端的 L ...

  5. zynq IRQ_P2F ----ps中断pl

    在zynq 学习中,中断分PPI,SGI,SPI.其中spi产生的中断可以给cpu,也可以给PL. 在xilinx官方资料里绝大部分是PL中断ps的examples,常见的就是GPIO中断-按键中断 ...

  6. ZYNQ:PS和PL

    刚学ZYNQ,看到里面反复提到PS和PL,不知道是什么意思,还以为PS是PhotoShop. 查一查资料才发现PS是programming system 可编程系统的意思 也就是 ARM里面的SOC部 ...

  7. ZYNQ 7000 PS和PL 信号、接口、管脚分布

    1.ZYNQ 7000 PS端和PL端都有自己独立的电源引脚(Power Pin) 2.PS端接口和信号: PS_CLK(System reference clock) POR_RST_N(Power ...

  8. FPGA概念理解之:ZYNQ、PS、PL、APU、ARM、SOC、URAT、GPIO...

    ARM ARM(Advanced RISC Machine)处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器. ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价 ...

  9. ZYNQ 之PS 和PL 互联技术之AXI

    1. ZYNQ 概述 2.  AXI 概述 AXI (Advanced eXtensible Interface)是xilinx 从6系列fpga开始引入的一个接口协议,主要描述了主设备和从设备之间的 ...

最新文章

  1. 数据库查询速度极慢【个人工作问题解决过程记录】
  2. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
  3. mysql 优化设计库_数据库优化设计与SQL优化
  4. 说说我最近比较迷的Criminal Minds
  5. java调用dubbo服务器_dubbo源码分析-服务端注册流程-笔记
  6. 微信红包接口 java_【java微信开发】红包接口调用
  7. Linux下的用户、组和权限的详细解释
  8. vue 调用webservice_调用webService的几种方式
  9. HDU 5090 Game with Pearls (贪心)
  10. 【转】7个顶级心理预言
  11. linux服务器关闭web,linux关闭防火墙后还访问不了Web?已解决,关闭防火墙及清除防火墙策略...
  12. 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
  13. snmp windows工具_局域网IP扫描工具下载-局域网IP扫描工具(SoftPerfect Network Scanner)v7.3.0官方版...
  14. TortoiseSVN打分支、合并分支、切换分支
  15. FPS的瞄准准心的一种写法
  16. 注册一个域名需要多少钱_域名注册需要多少钱?注册一个域名一般要多少钱?贵吗?...
  17. 什么是高位数,中位数,低位数
  18. 多模态机器学习入门——文献阅读(一)Multimodal Machine Learning: A Survey and Taxonomy
  19. 学习RNN-part2
  20. Fail2Ban 简介与使用

热门文章

  1. (css)el标签添加下划
  2. IDEA方法之间取消下划实线
  3. python爬取精美壁纸
  4. 在 CentOS 7 下配置 Android 开发环境
  5. linux 分配磁盘空间
  6. ScrollView的上下联动事件 触摸事件传递机制
  7. 声道切换 android,[RK3288][Android6.0] Audio中的单声道到双声道的转换处理过程
  8. 一杯鸡汤,敬给自己的坚持
  9. Matlab中error函数的使用
  10. 华南农业大学 Linux 期末简答速成