版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSPBIOS环境下的数据通信论文对于数字信号处理应用来说, 数据的通信很关键。 在 TI 公司的DSP/BIOS环境下有3种通信方式,即基于管道(PIP, pipe )的通信、 基于流( SIO, stream I/O )通道的通信以及基于主机( HST, host ) 通道的通信。每一种通信方式都是通过调度其相应的内核对象来完成 的。DSP/BIOS提供了管理每一种通信方式的模块及相应地 API调用, 通过这些模块及调用,可以完成 DSP环境下的输入/输出(I/O )。 本文在对各种通信方式进行简要介绍的基础上 , 对各种通信方式进行 比较,并给出利用 PIP 对象进行数据通信的 1 个例
2、子。( 1)主机通信主机通信方式下,由HST对象完成主机与目标机之间的通信。HST对象静态配置为输入/输出,每一个HST对象内部是用数据管道 对象来实现的。开发DSP应用时,可以应用HST对象来模仿数据流和测试程序 算法对数据的处理。 在程序开发的早期, 特别是在测试信号处理算法 时,程序使用输入通道对象访问主机文件中的数据, 以及使用输出通 道对象把算法处理过的结果反馈回主机一侧, 以供查验或比较。 在程 序开发的后期,当算法开发完毕时,可以把HST对象改回到PIP对象, 通过利用 PIP 对象完成外设真实数据与目标应用程序之间的通信。2)管道通信管道(PIP)对象用于管理块I/O (也称为
3、基于流的I/O或者异 步 I/O )。每一个 PIP 对象维护着一个分为固定数量和固定大小的缓 冲区(称为帧)。所有的 I/O 操作在每一刻只处理 1 帧。尽管每一帧 长度是固定的,但是应用程序可以在每一帧中放置可变数量的数据 (但不能超过最大值) 。管道有两端,一端为写线程, 一端为读线程。 写线程一端用于向管道中添加数据, 读线程一端用于从管道中读取数 据。管道能够用于在程序内的任意 2 个线程之间传递数据。经常地, 管道的一端由 ISR 控制,另一端由软件中断函数控制。 数据通知函数 (也称为回调函数) 用于同步数据的传输, 包括通知读函数和通知写 函数。当读或写 1 帧数据时,这些函数
4、被触发,以通知程序有空闲帧 或者有数据可以利用。( 3)流通信流是一个通道,通过它,数据在应用程序与 I/O 设备之间传输。 流通道可以是只读的(用于输入)或者只写的(用于输出)。它对所 有 I/O 设备提供了一个简单通用接口, 允许应用程序完全不用考虑每 个设备操作的细节。流I/O的一个重要方面是它的异步特性。 当应用 程序正在处理当前缓冲区时, 一个新的输入缓冲区正在被添充和以前 的缓冲区正在被输出。 流交换的是指针而不是数据, 这就大大减少了 开销,使得程序更能满足实时约束的要求。流模块(SIO )通过驱动 程序来与不同类型的设备打交道。驱动程序由 DEV ( Device )模块管 理
5、。设备驱动程序是管理一类设备的软件模块。这些模块遵从通用 接口(由DEV提供),因此,流函数能够发出普通请求。图1给出了流与设备之间的交互示意图。( 4)各种通信方式比较DSP/BIOS 支持两种不同的数据传输模型,一种是管道模型,由PIP与HST模块使用;另一种是流模型,由 SIO与DEV模块使用。2 个模型都要求 1 个管道或者流具有 1 个读线程和 1 个写线程。 2 个模 型都通过拷贝指针而不是数据来完成数据的拷贝。 一般来说, 管道模 型支持低级通信,而流模型支持高级的、与设备无关的 I/O 。具体情 况如表 1 所列。管道对象(PIP与HST流对象(SIO与DEV程序员必须创建 自
6、己的驱动程序提供了一种创建设备驱动程序的更加结构化方法读 / 写线程可以是任意线程类型或者主机 PC端必须由使用SIO调用的 任务(TSK来处理,另一端必须由使用 D_调用的HWI处理PIP函 数是非阻塞的, 程序在管道写或读之间必须进行检查, 以确保缓冲区 可利用 SIO_put 、SIO_get 和 SIO_reclaim 是阻塞函数( SIO)_issue 是非阻塞函数)使用更少的内存,一般较快更加灵活,使用简单每个 管道拥有自己的缓冲区缓冲区能够从一个流传输到另一个流而不用 拷贝管道必须使用配置工具静态地配置流可以在运行时刻创建或者 使用配置工具静态地配置对推栈设备( stacking
7、 devic )没有内建地 支持提供对堆栈设备(stacking devic )的支持使用HST(内部PIP 实现)使得主机与目标机的通信容易起来 DSP/BIO提供了大量的设备 驱动程序在基于以上分析的基础上, 给出利用管道进行通信的 1 个例子。 该例是音频处理的一个例子。 数据从数据源输入到编码器以后经量化 通过串行口输入到目标机, 目标机处理完毕后再经串行口发送到编码 器,由编码器经扬声器输出。图 2 给出数据的流程图。( 1)管道设计该例中,设计了 DSS_rxPipe和DSS_txPipe两个管道,其中DSS_rxPipe用于数据的接收,DSS_txPipe用于数据的发送。2)线程
8、设计由于每个管道分别对应 1 个读写线程,因此,发送管道与接收 管道总共需要 4个读写线程。本例中为了简化设计, 只设计了 2 个线 程。其中,音频处理函数(设计为软件中断 SW)I 既作为接收管道的 读线程又作为发送管道的写线程;串行口接收中断处理服务例程 ISR 既作为接收管道的写线程又作为发送管道的读线程。每次中断发生时,串行口中断服务例程(ISR )把数据接收寄存 器(DRR中的数据字(32位)拷贝到数据接收管道的一空闲帧中。 当1帧被填满时,ISR把该满帧写到数据接收管道中(通过调用 PIP_put),供该管道的读线程(即音频处理函数)读取。音频处理 函数执行时, 它读取接收管道中的
9、一满帧, 处理完毕后再把它写到发 送管道的一空闲帧中,供该管道的读线程(即 ISR)发送。每次ISR 触发时,它从发送管道中读取一满帧(若有的话),并每次 32位字 地发向串行口发送寄存器(DXR直到1帧中的所有数据发送完毕。 然后,该空闲帧被回收到发送管道,供音频处理函数(即该管道的写 线程使用)。需要注意的是,由于例子当中发送速率与接收速率一样, 因此,中断处理函数不但负责数据的接收也负责数据的发送, 并且每 次中断执行时只发送 1 个 32位字。3 )需注意的问题PIP_alloc 和 PIP_put 由 PIP 对象的写线程调用, PIP_get 和PIP_free 由 PIP 对象的
10、读线程调用,这种调用顺序是非常重要的。 若打乱这种调用顺序,将会产生不可预测的后果。因此,每一次对 PIP_alloc 的调用都要跟着对 PIP_put 的调用才能继续调用 PIP_alloc ;对于 PIP_get ,情况也是如此。另外,为了避免 PIP 调用过程中产生递归,作为通知读 / 写函数的一部分,应该避免调用 PIP API 函数。 如果为了效率起见必须要这样做, 那么对诸如此类的调用应该加以保 护,以阻止同一管道对象的重入以及错误的PIP API调用顺序。例如,在发送管道 _读函数以及接收管道 _ 写函数的开始部分, 我们添加 了如下语句,以避免递归调用:static Int nested = 0;if (nested)/* 防止由于调用 PIP_get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州外语外贸学院《现代物业管理》2025-2026学年期末试卷
- 新余学院《学前教育政策与法规》2025-2026学年期末试卷
- 公路工程管理试题及答案
- 闽南师范大学《材料物理性能》2025-2026学年期末试卷
- 飞机无线电雷达系统装调工岗前工作质量考核试卷含答案
- 精密电成型网工岗前基础效率考核试卷含答案
- 片剂工岗前实操评估考核试卷含答案
- 碳八抽提苯乙烯装置操作工诚信强化考核试卷含答案
- 丙烯腈装置操作工变更管理竞赛考核试卷含答案
- 汽车锻造生产线操作工岗前技巧考核试卷含答案
- 黑龙江省考面试真题(省市级综合类)
- 2026年高考历史全真模拟试卷及答案(共五套)
- 2026年南阳科技职业学院单招职业技能考试题库带答案详解(a卷)
- 2026年春季人教PEP版四年级下册英语Unit 3 Time for school 教案(共6课时)
- 2026洛阳钼业招聘笔试题及答案
- 生成式AI赋能的情境化小学英语教学策略研究教学研究课题报告
- 厂区安全生产会议
- 2025年10月自考13124英语专试题及答案
- 书评写作:读书分享指南
- 黄金导购培训知识内容课件
- 房地产单边合同(标准版)
评论
0/150
提交评论