《CMEM与DSPLINK详解(一)》:CMEM与DSPLINK简介
CMEM与DSPLINK简介
在双核(ARM+DSP)系统中(典型的为达芬奇系统),如何共享缓冲区并进行通信是一个值得学习和思考的问题。
CMEM是一个连续物理存储空间分配模块,使得ARM端Linux进程和DSP端算法之间能够共享缓冲区。DSPLINK即DSP/BIOS LINK是基于DaVinci架构处理器的ARM与DSP端进行通信。
1、CMEM由于应用程序是运行在 MontaVista Linux 之上,在应用程序里进行的地址空间都是虚拟地址,实际上的物理地址空间不一定是连续的,当将这个指针传递给 DSP 端的算法时, DSP 不能够进行处理,因为 DSP 端的算法运行在 DSPBIOS 之上,而 DSP端只能访问实的物理地址,为了解决这个问题, TI 提供了一个 CMEM 模块,用于解决这个问题。
CMEM 是一个连续物理存储空间分配模块,使得 ARM 端 Linux 进程和 DSP 端算法之间能够共享缓冲区。当应用程序需要在共享缓存区动态申请一个连续的物理空间时,通过调用 CMEM 的 API 可以实现,申请得到的空间可以供 DSP 端访问,进行算法处理时数据的传递与处理。
对于DVS365开发套件,CMEM位于:..\dvsdk_2_10_00_17\linuxutils_2_24_02\packages\ti\sdo\linuxutils\cmem
注意:DVS365下的cmem下的demo和测试代码make不通过,待处理。。。。基本测试流程如下图所示:
CMEM Demo 提供了以下测试程序, apitest 用于演示测试 CMEM 的 API 功能,translate 用于演示虚拟地址与实物理地址之间的转换,具体流程如下图所示:
DSPLINK 即 DSP/BIOSTMLINK
是基于 DaVinci 架构处理器的 ARM 与 DSP 端进行通信, DSPLINK 提供了一套通用的 API,从应用层抽象出 ARM 与 DSP 的物理连接特性,从而降低用户开发程序的复杂度。
DSPLINK 可以为用户提供以下 API 服务:
--基本的处理器控制;
--基于逻辑通道的数据传输;
--基于 DSP/BIOS 的 MSGQ 模块的消息传递机制,支持 Zero Copy和 ProcessorCopy
两种物理机制的消息传递。
在实际应用中,应用可能不需要 DSPLINK 提供的所有模块功能,而且可能只需要一种消息传递机制,因此 TI 的 DSPLINK 提供了可配置功能,用户可以根据自己的需要进行裁剪配置,以满足应用需求。
DSPLINK的软件架构如下图所示:
从上图看,在 GPP 端,一般运行一个操作系统,基于 GPP 上还有以下模块:OS抽象层、LINK Driver、Processor Manager、DSP/BIOS LINK API。
--OS抽象层 :该层包含了 DSPLINK 需要的一些通用的 OS 服务部件,提供一套通用的 API 与 OS 的其他组件隔离,其他组件通过API 访问不进行直接的访问。而此特性也使DSPLINK 可以方便的移植到不同操作系统中。
--LINK Driver :该层包含了基于 GPP 与 DSP 的物理连接的底层控制操作,负责 GPP 与 DSP 之间的数据传输和 DSP 的运行等操作。
--Processor Manager:该层维护一个针对所有模块的 Book-Keeping 信息,通过 API 给用户提供通过 LINK Driver 的控制操作。
--DSP/BIOS LINK API:该层是提供给 GPP 端的接口,是非常轻小型的组件,API 层可以认为是基于 PROCESSOR MANAGER 和LINK DRIVER 之上的层。
2.2、DSPLINK DRIVER 是 DSP/BIOS 中驱动的一部分,该部分驱动只负责基于物理连接之上与 GPP 之间的交互。 DSP 端没有 DSPLINK 的 API ,通信是基于DSP/BIOSTM 模块上的 SIO、 GIO、 MSGQ 模块实现。
NSIndexSet 简介 NSIndexSet (以及它的可修改子类, NSMutableIndexSet) 是一个排好序的,无重复元素的整数集合。它看上去有点像 支持离散整数的 NSRange .它能用于快速查找特定范围的值的索引,也能用于快速计算交集, 同时,Foundation collection class 提供了很多好用的方法,方便你使用 NSIndexSet.
TrueLicense简介 TrueLicense是一个开源的证书管理引擎,官网 使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目 默认校验了开始结束时间,可扩展增加mac地址校验等。 其中还有ftp的校验没有尝试,本文详细介绍的是本地校验 license授权机制的原理: 生成密钥对,方法有很多。
exosip 和 pjsip 简介 oSIP oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了。它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制API,它主要提供一些解析SIP/SDP消息的API和事务处理 的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和 proxy server lib:partysip.
相关文章
- javaWeb服务详解(含源代码,测试通过,注释) ——applicationContext-Service.xml
- PHP引用(&)使用详解
- Dubbo支持的协议的详解
- Android自定义属性,format详解
- SQL User-Agent注入详解
- Prometheus详解(五)——Prometheus Exporter简介
- Kubernetes详解(五十八)——Kubernetes排错方法
- Openstack详解(一)——云计算简介
- Linux firewall防火墙详解(一)——firewall基础知识简介
- .NET Core下的日志(2):日志模型详解
- Python语言学习:Python语言学习之文件读取&写入/操作系统(OS模块详解)的简介、案例应用之详细攻略
- DL之MaskR-CNN:Mask R-CNN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之pix2pix:pix2pix(cGAN)自动上色算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之U-Net:U-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之DeepLabv2:DeepLab v2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之PSPNet:PSPNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之FCN:FCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之DeconvNet:DeconvNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之SSD:SSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- @GetMapping和@PostMapping详解
- Linux shell cut 命令详解
- 【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】
- SpringBoot微服务项目打包成Docker镜像详解