QNX Typed memory介绍

文章目录

  • 前言
  • 一、什么是 Typed memory
  • 二、查看系统已有Typed memory 的方法
  • 三、Typed memory 的使用方法
    • 1.定义一个packet memory并从系统内存中分出它
    • 1.1 as_add()
    • 1.2 as_add_containing()
    • 2. 从 Typed memory 中申请内存
    • 2.1 POSIX method 申请内存
    • 2.2 QNX Neutrino method 申请内存
  • 四、Typed memory 使用实例
    • 1. Allocating contiguous memory from system RAM
    • 2. Allocating contiguous memory from system memory below4G
    • 2. 创建一个普通的packet memory
    • 3. 创建一个 DMA-safe region
  • 总结
  • 参考资料


前言

本文主要介绍QNX 里面的 Typed memory 机制,它类似于 linux 里面的 reserved memory ,可以从系统内存中分出一部分内存用来给特定的硬件模块使用
软件版本:qnx7.1


一、什么是 Typed memory

如下图所示, 是QNX 官网对 Typed memory 的介绍,它和 linux 里面的 reserved memory 类似,可以从系统内存中分出一部分内存用来给特定的硬件模块使用,如GPU,VSP等硬件模块
QNX Typed memory介绍_第1张图片

二、查看系统已有Typed memory 的方法

在qnx 系统中执行 pidin syspage=asinfo 命令就可以看到系统中已有的Typed memory 分布,如下图所示
QNX Typed memory介绍_第2张图片
typed memory 之间是通过命名来区分的,上图中的/memory/below4G, /memory 等都代表着各个Typed memory

三、Typed memory 的使用方法

1.定义一个packet memory并从系统内存中分出它

目前有两种方法,分别是使用as_add() 建立一个普通的内存池,和使用 as_add_containing() 建立一个DMA 内存池

1.1 as_add()

如下图所示,是 qnx 官方的实例,使用 as_add() 接口来定义一个packet memory 并从系统内存中分出这块内存
在这里插入图片描述
如下图所示,是 qnx 官方对 as_add() 函数的介绍
QNX Typed memory介绍_第3张图片

通过 as_add() 建立的这个 packet memory (就是Linux 里面的reserved memory)就是一个内存池,驱动可以从里面申请内存给其硬件模块使用

1.2 as_add_containing()

如下图所示,是 qnx 官方的实例,使用as_add_containing()接口来定义一个 DMA-safe region 并从系统内存中分出这块内存
QNX Typed memory介绍_第4张图片
如下图所示,是 qnx 官方对as_add_containing()接口的介绍
QNX Typed memory介绍_第5张图片
通过 as_add_containing() 建立的这个DMA-safe region(就是Linux 里面的reserved memory)就是一个DMA内存池,驱动可以从里面申请内存给其硬件模块使用

你可能感兴趣的:(QNX,车载系统)