在实际应用中,需要保留一段专用内存,给驱动程序或者应用程序,比如给PL 访问的一段内存,用于查表,等等。
本文介绍如何在petalinlux 里实现保留一段内存。在这里我引用原文有3种方式预留内存:普通的,DMA,CMA。我的应用中打算使用普通的,32位方式。但这里3种方式都介绍。
其中重要的参考来自:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841683/Linux+Reserved+Memory
预留内存
要从系统地址空间保留内存范围,可以在设备树配置中使用保留的内存节点。 每个子节点定义一个特定的内存空间,并且可以根据内核文档中所述可用于保留内存节点的不同参数进行配置。 然后可以通过memory-region参数将保留的存储空间分配给特定的设备驱动程序。
用于64位Cortex-A53 MPSoC的system-top.dts文件中的设备树节点:
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
reserved: buffer@0 {
no-map;
re

本文介绍了在PetaLinux系统中为驱动程序或应用程序预留专用内存的方法,包括普通预留、通过DMA API预留和为CMA预留。通过设备树配置,可以创建内存保留区域,然后在驱动程序中使用memremap或ioremap映射。此外,文章还讨论了如何为DMA操作预留内存以及扩展CMA内存池。
最低0.47元/天 解锁文章
4463

被折叠的 条评论
为什么被折叠?



