zynq平台,PS 与 PL共享内存的方法

开发环境: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两个函数来释放掉指定物理地址。

个人理解是,这种方式相当于先让内核占用完整的内

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Zynq是一款Xilinx公司的片上系统(SoC),它将传统的处理系统(PS,即Processing System)和可编程逻辑(PL,即Programmable Logic)集成在一起。PSPL之间的通信是通过DMA(Direct Memory Access)实现的。 DMA是一种高效的数据传输方式,它可以在不经过处理器的情况下直接将数据从一个设备传输到另一个设备的内存中。在Zynq中,DMA控制器可以在PSPL之间进行数据传输,以实现高速的数据交换。 在使用ZynqPSPL之间进行通信时,首先需要在PL中实例化一个DMA控制器,并将其配置为与PS内存进行交互。然后,在PS中通过相应的软件驱动程序或API接口配置和控制DMA控制器。通过设置合适的寄存器和缓冲区,可以实现从PSPL的数据传输或从PLPS的数据传输,以及在传输过程中的中断处理。 PSPL之间的DMA通信可以实现快速的数据交换,因为数据可以直接在PL中进行处理,无需经过PS的干预。这对于需要高速数据处理的应用非常有用,比如图像处理、信号处理等。 需要注意的是,使用DMA进行PSPL之间的通信需要合理地配置和管理DMA控制器的缓冲区和寄存器,以及在PSPL之间的数据传输过程中进行正确的同步和互斥操作,以避免数据冲突和错误。 总之,Zynq PSPL之间的通信使用DMA可以实现高速的数据传输和处理,为嵌入式应用带来了更大的灵活性和高效性。 ### 回答2: Zynq系统中的PS(Processing System)与PL(Programmable Logic)之间的通信可以通过DMA(Direct Memory Access)实现。 DMA是一种特殊的数据传输机制,它可以在不需要CPU的干预下,在内存和外设之间直接传输数据。在Zynq系统中,PSPL之间的DMA通信可以通过AXI(Advanced eXtensible Interface)总线实现。 首先,在Zynq系统中,PS可以使用AXI DMA控制器来设置数据传输的源地址、目的地址、传输长度等参数。这些参数可以通过PS的程序来配置。 然后,在PL中,我们可以使用AXI接口来设计自定义的IP(Intellectual Property)核,该IP核可以与AXI DMA进行通信。这个IP核可以通过PL的开发工具进行开发和配置。 接下来,通过适当的设计和配置,我们可以在PL中连接AXI DMA核和其他IP核,以实现PSPL之间的数据传输。例如,我们可以将一个读取数据的IP核连接到AXI DMA的输入端口,将一个写入数据的IP核连接到AXI DMA的输出端口。这样,当AXI DMA启动数据传输时,读取数据的IP核将从PL的某个存储器中读取数据,然后通过DMA传输到PS的某个存储器中,而写入数据的IP核将从PS的某个存储器中读取数据,然后通过DMA传输到PL的某个存储器中。 总之,通过使用AXI DMA和适当的设计和配置,Zynq系统中的PSPL之间可以进行高效的数据传输和通信。这种方式可以提高系统的性能和可扩展性,并且降低了CPU的负载,提供了更好的系统整合能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值