本文主要介绍QNX 里面的 Typed memory 机制,它类似于 linux 里面的 reserved memory ,可以从系统内存中分出一部分内存用来给特定的硬件模块使用
软件版本:qnx7.1
如下图所示, 是QNX 官网对 Typed memory 的介绍,它和 linux 里面的 reserved memory 类似,可以从系统内存中分出一部分内存用来给特定的硬件模块使用,如GPU,VSP等硬件模块
在qnx 系统中执行 pidin syspage=asinfo 命令就可以看到系统中已有的Typed memory 分布,如下图所示
typed memory 之间是通过命名来区分的,上图中的/memory/below4G, /memory 等都代表着各个Typed memory
目前有两种方法,分别是使用as_add() 建立一个普通的内存池,和使用 as_add_containing() 建立一个DMA 内存池
如下图所示,是 qnx 官方的实例,使用 as_add() 接口来定义一个packet memory 并从系统内存中分出这块内存
如下图所示,是 qnx 官方对 as_add() 函数的介绍
通过 as_add() 建立的这个 packet memory (就是Linux 里面的reserved memory)就是一个内存池,驱动可以从里面申请内存给其硬件模块使用
如下图所示,是 qnx 官方的实例,使用as_add_containing()接口来定义一个 DMA-safe region 并从系统内存中分出这块内存
如下图所示,是 qnx 官方对as_add_containing()接口的介绍
通过 as_add_containing() 建立的这个DMA-safe region(就是Linux 里面的reserved memory)就是一个DMA内存池,驱动可以从里面申请内存给其硬件模块使用