版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、快速实现 ARM 和 DSP 的通信和协同工作 德州仪器( TI)的第一颗达芬奇( DaVinci )芯片(处理器) DM6446 已经问世快 三年了。继 DM644x 之后,TI 又陆续推出了 DM643x ,DM35x ,DM6467 , OMAP353x等一系列 ARMDSP或 ARM 视频协处理器的多媒体处理器平台。 很多有很强 DSP 开发经验或 ARM 开发经验的工程师都转到达芬奇或通用 OMAP (OMAP353x)平台上开发视频监控、视频会议及便携式多媒体终端等产品。大家 都面临着同一个问题,那就是如何实现 ARM 和 DSP 或协处理器的通信和协同工 作?TI 的数字视频软件
2、开发包( DVSDK )提供了 Codec Engine这样一个软件模块 来实现 ARM 和 DSP或协处理器的协同工作。有很多工程师反馈这个软件模块非 常好用,节省了很多开发时间,也有工程师认为 TI 提供的资料太多,不知如何快 速上手。本文将从一个第一次接触 Codec Engine的工程师角度出发,归纳 TI 提供 的相关资源(文档,例程和网络资源)并介绍相关开发调试方法帮您快速入门 Codec Engine。1. Codec Engine 概述如图1所示, Codec Engine是连接 ARM 和DSP或协处理器的桥梁,是介于应用层 (ARM 侧的应用程序)和信号处理层( DSP 侧
3、的算法)之间的软件模块。 ARM 应 用程序调用 Codec Engine的 VISA (Video, Image, Speech, Audio) API ,如图 1 中 VIDENC_process(a, b, c 。Codec Engine的 stub (ARM 侧)会把参数 a, b, c以及要 调用 DSP侧 process这个信息打包,通过消息队列( message queu)e 传递到 DSP。 Codec Engine的 skeleton(DSP侧)会解开这个参数包,把参数 a, b, c转换成 DSP 侧对应的参数 x, y, z(比如 ARM 侧传递的是虚拟地址,而 DSP只
4、能认物理地 址), DSP 侧的 server(优先级较低,负责和 ARM 通信的任务)会根据 process这 一信息创建一个 DSP侧的 process(x, y, x任务最终实现 VIDENC_process(a, b, c 的 操作。图 1 达芬奇软件结构框图通过第一部分的介绍,我们知道了 TI 数字视频软件开发包( DVSDK )中 的 Codec Engine软件模块可以帮助我们轻松地实现 ARM 和 DSP 或协处理器的 协同工作,以及 Codec Engine软件模块的概要情况,下面我们将告诉你如何走 完 Codec Engine 入门的第一步和第二步。2. Codec Eng
5、ine 入门第一步从 Codec Engine发布说明文档 ( release notes)开始 。有些初学者认为 Codec Engine文件包结构复杂,很难找到自己想找的文档 或例子。其实在 Codec Engine文件包的根目下有一个发布说明文档,比如 Codec Engine 1.20根 目录下的 release_notes_codec_engine_1_20.htm。l 这个文档 就是你了解 Codec Engine的开始,里面有关于该版本 Codec Engine的介绍、相 关文档资料的链接、新的功能、支持哪些芯片、已知的bug、修正了哪些 bug及例子等等的具体说明。具体如图 2
6、 蓝色字体所示。浏览该文档后,初学者至 少可以知道哪里可以找到自己想要的文档或例子。举例来说,如果想找相关的 文档,点击 Documentation 就可以看到这个 Codec Engine文件包里的文档的链 接。图 2 Codec Engine 1.20 Release Note截s 图3. Codec Engine 入门第二步了解 Codec Engine的运行环境及依赖的软件模块和工具 。点击 Codec Engine的发布说明文档 (如图 2)的 Validation Info ,我们可以知道Codec Engine 1.20需要和以下软件模块和工具配合使用:Framework Com
7、ponents 1.20.02xDAIS 5.21XDC Tools 2.93.01DSP/BIOS Link 1.40.05, configured for the DM6446 EVM? C6x Code Generation Tools version 6.0.8? DSP/BIOS 5.31.05? MontaVista Linux v4.0? Red Hat Enterprise Linux 3 (SMP因此,我们需要在该 Codec Engine安装的 DVSDK 文件包下面检查上面提到的软件 模块和工具是否安装,版本是否正确。否则,可能会编译不过Codec Engine的例子。那
8、么,什么是 Framework Components,什么是 xDAIS ,什么又是 XDC Tools 呢?你可以分别到它们的根目录下浏览它们各自的发布说明文档,做一个总体的了 解。这里我们简单介绍一下,可以帮助大家尽快找到和自己相关的重点及资源1 Framework Components是 TI 提供的一个软件模块,负责 DSP 侧的 memory 和 DMA 资源管理。因此, DSP 算法工程师需要了解这个软件模块。 Components FAQ2 xDAIS 是一个标准,它定义了 TI DSP 算法接口的标准。这样大大提高了 DSP算法软件的通用性。 DSP算法工程师要写出能被 ARM
9、 通过 Codec Engine 调用的算法,必须保证自己的算法接口符合这个标准。因此, DSP 算法工程师 也必须了解这个软件模块。3 XDC Tools和 gmake类似,是一个工具。 XDC 根据用户定义的一套 build 指 令,通过调用用户指定的 ARM 工具链( Tool Chain)和 DSP 编译器( C6x Code Generation Tools )build 出 ARM 侧和 DSP 侧的可执行文件。可以先不必 细究这个工具,只需通过编 Codec Engine 的例子,知道如何设置 build 指令就 可以了。4 DSP/BIOS Link 是实现 ARM 和 DSP
10、 之间通信的底层软件, Codec Engine 就 是建立在这个底 层软 件之上。在修改 系统 内存分配(缺省 是 256MB 的 DDR2)时, DSP/BIOS Link 1.38版本的用户需要修改 DSP/BIOS Link 的配置 文件,并重新 build DSP/BIOS Link 。而 DSP/BIOS Link 1.40 版本以后的用户就 无需此操作。 Overview the DVEVM memory map5 C6x Code Generation Tools 是 Linux 环境下 C6000 系列 DSP 的编译器。我们 用CCS开发 DSP时都是用的 Windows环
11、境下的 DSP编译器。6 DSP/BIOS 是 TI 免费提供的 DSP 实时操作系统。和上面 C6x Code Generation Tools一样,这里的 DSP/BIOS也是 Linux 环境下的版本。 DSP系统工程师需要 了解这个操作系统。4. Codec Engine 入门第三步根据自己的角色参考相关的文档和例子进行开发。开发 ARM DSP平台需要三类工程师: ARM 应用程序工程师、 DSP算法工程师 和 DSP系统工程师。而开发 ARM 协处理器平台只需要 ARM 应用程序工程师。 下面就让我们针对这三类工程师做分别介绍。如果您使用的是TI 或TI 第三方的编解码算法,就不需
12、要关注 DSP算法工程师的部分。如果使用 ARM 协处理器平 台,就只需关心 ARM 应用工程师的部分。4.1. DSP算法工程师应该如何着手?这里我们不讨论如何开发 DSP 算法,只讨论 DSP 算法工程师怎样让自己的算法可 以被 ARM 通过 Codec Engine调用。(参考 ,这个 文档会讲到 codec package及相关的 .xs和.xdc文件, Codec Engine1.20及以上版本 的用户可以先不细究这些内容,后面会介绍工具帮您自动生成这些文件。)1 熟悉 xDAIS 和 xDM 标准xDM 只是 xDAIS 的扩展,因此,需要先了解 xDAIS 。在 xDAIS 软件
13、包根目录下 的发布说明文档里,可以很快找到关于 xDAIS 和 xDM 的文档链接。在 xDAIS 安装路径下的 examples/ti/xdais/dm/examples/g711有一个 g711_sun_internal.c,这个算法不符合 xDAIS 标准。在同一个路径下的 g711dec_sun_ialg.c (decode和r g711enc_sun_ialg.c (encode是r 封装成符合 xDM 标准 之后的编解码算法。可以通过这个例子学习和了解如何把自己算法封装成符合 xDM 标准的算法。xDAIS 6.10 及其以后的版本,包含了一个工具 QualiTI ,可以检查您的
14、DSP算法是 否满足 xDAIS 标准(但不会检查是否满足 xDM )。具体请参考: XDAIS Compliance Tool2 熟悉 Framework ComponentsFramework Components主要包括两个模块 DSKT2 和 DMAN3 ,它们分别负责 DSP 侧的 memory 和 EDMA 资源管理。 DSP算法使用的 memory必须是先向 DSKT2 提 出申请并由 DSKT2 分配得到的。同样 DSP 算法使用的 EDMA 通道也是向 DMAN3 申请并由 DMAN3 分配得到的。而关于 QDMA 的操作,是通过 ACPY3 这 个模块实现的。这样的好处是很
15、容易对 DSP 侧不同的算法做整合,不同的算法之 间不用担心资源( Memory 和 EDMA )的冲突问题。在 Framework Components软 件包根目录下的发布说明文档里,可以很快找到相关 文档的链接。在 Framework Components安装路径下packagestisdofcdman3examples有一个 Fast Copy的例子,可以帮您理解如何基 于 Framework Components的 ACPY3 模块实现 QDMA 的操作。另外,有些用户 DSP 侧的算法比较简单,在确保不和 ARM 侧 EDMA 资源冲突的 前提下在算法里直接操作 EDMA 不使用
16、DMAN3 也是可以的。这样做的弊端是和 其它算法做整合时会遇到资源使用冲突的问题。系统工程师应该如何着手?通常 DSP算法工程师都会把自己的符合 xDM 标准算法编成一个 .lib 文件(或 .a64P),供 DSP系统工程师调用。 DSP系统工程师最终 build 出一个 DSP Server(也就是 DSP的可执行程序 .x64P,和 CCS下编译生成的 .out 类似)。(参 考 .xdc 和 .bld 等文 件, Codec Engine1.20及以上版本的用户可以先不细究,后面介绍工具帮您自动生 成这些文件。)1 如果现在有一个 .lib 文件(或 .a64P )(算法必须符合 x
17、DM 标准),如何生 成自己的 DSP Server 呢?下面 URL 有详细的关于 RTSC Codec and Server Package Wizard 工具介绍,教您如何把一个 .lib 文件封装成 RTSC Codec 包和 RTSC DSP Server包,并最终 build 出 DSP 的可执行程序 .x64P。 Codec And Server Package Wizards just want my video codec to work with the DVSDK2 如果您使用的是 Codec Engine 1.20以前的版本,请参考 Codec Engine 安装路 径
18、下 examples/servers/video_copy这个例子。这时就需要搞清楚 sprued6c.pdf和 sprued5b.pdf中提到的 .xdc 和.xs 等文件的功能,也可以在 video_copy 中的相关 文件的基础上修改手动创建出自己的 RTSC Codec包和 RTSC DSP server包。3 创建好 RTSC Codec 和 RTSC DSP Server包之后,就是如何 build 出 .x64P 的问题了。点击图 2 所示的 Examples,就可以找到 build Codec Engine 例 子的说明文档的链接。按照这个文档做一遍后,就可以对如何 build
19、 Codec Server有一个清楚的了解。其中关键是修改 user.bld 和 xdcpaths.mak文件, 设置 Codec Engine依赖的其它软件模块和工具的正确路径。4 如果自己的硬件 DDR2 大小和例子中的 256Mbytes 不一致,需要修改 DSP的.tcf 文件和其他配置。还有些工程师不清楚如何分配 memory 及如何 决 定 具 体 段 , 如 : DDRALGHEAP 和 DDR 的 大 小 , 以 及 如 何 配 置./loadmodules里的参数都请参考: the DVEVM memory map4.3. ARM 应用程序工程师应该如何着手?ARM 应用工程
20、师需要调用 Codec Engine的 VISA API ,最终编出 ARM 侧的可执行 程序,因此,必须根据自己的应用学习相关的 VISA API 、如何创建应用侧 Codec Engine 的 package及配置文件。(参考 ,这个文档也涉及到如何调试 Codec Engine的内容)。1 了解 ARM 应用程序调用 Codec Engine 的流程、 VISA API 和其他 Codec Engine API 。可以参考 Codec Engine 安装路径下 examples/apps/video_copy 的 例 子( 较 简 单 ) 或 者 DVSDK 安 装 路 径 下 demo
21、s 里 的 encode/decode/encodedecod例e 子(较复杂)。 r2 了解 ceapp.cfg文件。 sprue67d.pdf 有相关介绍,可以先读懂 examples/apps/video_copy/ceapp.cfg3 用4.2 3中提到的方法学习如何 build ARM 侧的可执行程序。4 如何在多线程中调用 codec engine,参考: Threads using Codec Engine Handle5 还可以参考以下三个文档了解更多 TI demo 的 ARM 应用程序的结构、线 程调度等具体的问题。EncodeDecode Demo for the DaV
22、inci DVEVM/DVSDK 1.2 (Rev. A (spraah0a.htm, 8 KB 27 Jun 2007 AbstractEncode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A (spraa96a.htm, 8 KB 27 Jun 2007 AbstractDecode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A (spraag9a.htm, 8 KB 27 Jun 2007 Abstract5. 使用中常碰到的问题1 如果遇到问题可以先访问 Engine FAQ2 有些工程师没有 D
23、SP 开发经验,或者暂时没有仿真器通过 JTAG 调试 DSP。可以参考下面网页的内容,先做一个 “ Hello World的”例程对 ARM 和 DSP如何协同工作有个感性认识。 to build an ARM/DSP Hello World program on the DaV3 很多工程师都是参考 video_copy 的例子,在它的基础上把自己的算法加 进去。因为有源代码,这样比较容易。但肯定要根据自己算法的需要修改 ARM 和 DSP 之间传递的 buffer 和参数,重要的是先保证 ARM 侧的应用程 序可以把 buffer 和参数正确传递到 DSP,DSP可以把处理之后的 buf
24、fer 正 确的传到 ARM 侧的应用程序。把这个通路打通之后,就比较容易定位问 题是出在 ARM 应用程序还是 DSP侧的算法。另外,参考 video_copy 例子 时注意代码的注释,以便清楚哪一句代码可以删掉哪一句必须要修改或保 留。如果要扩展 xDM 的数据结构请参考: data structures in xDM4 Codec Engine DSP侧会涉及到 Cache 一致性的问题。请参考: Management5 关于 Codec Engine系统调试,有以下几种方法:打开 Codec Engine trace,通过打印信息看问题出在什么地方。比如 engine_open失败, DSP 侧不能创建 codec 等等。Codec Engine 2.0 及 以 上 版 本 , 请 参 考 : CE Debugging Feature in CE 2.0Codec Engine 1.x版本,请参考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年标准化城市园林绿化工程承包合同版
- 2024年离婚财产合同标准格式一
- 区域合作协议范文
- 新兴主播经济的合作合同范本
- 2024年版现代化啤酒广场租赁合同一
- 2024年房地产土地中介合作协议版B版
- 国际贸易咨询服务协议书
- 科研项目组听课制度与管理
- 患者跌倒、坠床等意外事件的防范制度、措施、报告制度、处置预案、工作流程
- 2025家政保洁服务合同
- 大学生职业生涯规划成品
- 2024-2025学年度北师大版八年级上册物理期中模拟测试卷
- 2024年中考数学真题完全解读(湖南卷)
- 变压器搬迁施工方案
- 《概率论与数理统计》教材
- 高等传热学全册课件
- 静脉留置针所致静脉炎的标准化护理预防流程
- 常住人口登记表(集体户口)-英文翻译
- 专科《法理学》(第三版教材)形成性考核试题及答案
- 人教版2024年新教材七年级上册英语各单元考点复习提纲
- 山东省物业管理条例
评论
0/150
提交评论