论文部分内容阅读
摘要:在DSP/BIOS提供的3种通信方式中,由于PIP对象的效率很高,因此使得它在基于DSP应用系统的输入输出中得到了广泛的应用。
关键词:DSP/BIOS;实时操作;方式
Abstract: in the DSP/BIOS of the three means of communication provided, because of the object PIP efficiency is very high, so make it in the application of the system based on DSP input and output are widely used.
Keywords: DSP/BIOS; The real-time operation; way
中图分类号:TN919 文献标识码:A文章编号:
引言:在DSP/BIOS提供的3种通信方式中,由于PIP对象的效率很高,因此使得它在基于DSP应用系统的输入输出中得到了广泛的应用。但是,我们在利用其所提供的便利的同时,一定要妥善处理好通知读/写函数的编写工作,以免发生递归调用,产生灾难性的后果。
DSP/BIOS 实时操作系统介绍
TI公司的DSP开发软件包括集成开发系统(CCS), 实时操作系统(DSP/BIOS),第三方算法库标准(eXpressDSP)。下面重点介绍DSP/BIOS。
DSP/BIOS是一个用户可剪裁的实时操作系统,主要由三部分组成:多线程实时内核(抢占式多线程);实时分析工具;芯片支持库。利用实时操作系统开发程序,可以方便快速的开发复杂的DSP程序。操作系统维护调度多线程的运行,只需将定制的数字信号算法作为一个线程嵌入系统即可;芯片支持库帮助管理外设资源,复杂的外设寄存器初始化可以利用直接图形工具配置;实时分析工具可以帮助分析算法实时运行情况。
DSP/BIOS以模块化方式提供给用户对线程、中断、定时器、内存资源、所有外设资源的管理能力都可以根据需要剪裁。实际应用中需要的定制算法作为一个线程插入DSP/BIOS的调度队列,由DSP/BIOS进行调度。
使用前需阅读了解DSP/BIOS用户手册和DSP/BIOS设备驱动的开发与使用,具体内容包括DSP/BIOS概述、程序生成、监测、线程调度、存储器和低級函数、I/O概述和管道、流I/O和设备驱动;设备驱动开发工具包(DDK)简介、DSP/BIOS设备驱动的结构和使用、使用DSP/BIOS设备驱动、GIO类驱动、微型驱动的开发步骤、IOM接口、PIO适配器、LIO模型到IOM模型的移植和GIO API的ASYNC扩展。
通信方式简介
2.1主机通信
主机通信方式下,由HST对象完成主机与目标机之间通信。HST对象静态配置为输入/输出,每一个HST对象内部是用数据管道对象来实现。
开发DSP应用时,可以应用HST对象来模仿数据流和测试程序算法对数据处理。在程序开发早期,特别是在测试信号处理算法时,程序使用输入通道对象访问来自主机文件中数据,以及使用输出通道对象把算法处理过结果反馈回主机一侧,以供查验或比较。在程序开发后期,当算法开发完毕时,可以把HST对象改回到PIP对象,通过利用PIP对象完成外设真实数据与目标应用程序之间通信。
2.2管道通信
管道(PIP)对象用于管理块I/O(也称为基于流I/O或者异步I/O)。每一个PIP对象维护着一个分为固定数量和固定大小缓冲区(称为帧)。所有I/O操作在每一刻只处理1帧。尽管每一帧长度是固定,但是应用程序可以在每一帧中放置可变数量数据(但不能超过最大值)。管道有两端,一端为写线程,一端为读线程。写线程一端用于向管道中添加数据,读线程一端用于从管道中读取数据。管道能够用于在程序内任意2个线程之间传递数据。经常地,管道一端由ISR控制,另一端由软件中断函数控制。数据通知函数(也称为回调函数)用于同步数据传输,包括通知读函数和通知写函数。当读或写1帧数据时,这些函数被触发,以通知程序有空闲帧或者有数据可以利用。
2.3流通信
流是一个通道,通过它,数据在应用程序与 I/O设备之间传输。流通道可以是只读(用于输入)或者只写(用于输出)。它对所有I/O设备提供了一个简单通用接口,允许应用程序完全不用考虑每个设备操作细节。流I/O一个重要方面是它异步特性。当应用程序正在处理当前缓冲区时,一个新输入缓冲区正在被添充和以前缓冲区正在被输出。流交换是指针而不是数据,这就大大减少了开销,使得程序更能满足实时约束要求。流模块(SIO)通过驱动程序来与不同类型设备打交道。驱动程序由DEV(Device)模块管理。
设备驱动程序是管理一类设备软件模块。这些模块遵从通用接口(由DEV提供),因此,流函数能够发出普通请求。
2.4各种通信方式比较
DSP/BIOS支持两种不同数据传输模型,一种是管道模型,由PIP与HST模块使用;另一种是流模型,由SIO与DEV模块使用。2个模型都要求1个管道或者流具有1个读线程和1个写线程。2个模型都通过拷贝指针而不是数据来完成数据拷贝。一般来说,管道模型支持低级通信,而流模型支持高级、与设备无关I/O。具体情况如表1所列。
表1 DSP/BIOS环境下通信方式的比较
3.需注意的问题
PIP_alloc和PIP_put由PIP对象的写线程调用,PIP_get和PIP_free由PIP对象的读线程调用,这种调用顺序是非常重要的。若打乱这种调用顺序,将会产生不可预测的后果。因此,每一次对PIP_alloc的调用都要跟着对PIP_put的调用才能继续调用PIP_alloc;对于PIP_get,情况也是如此。
另外,为了避免PIP调用过程中产生递归,作为通知读/写函数的一部分,应该避免调用PIP API函数。如果为了效率起见必须要这样做,那么对诸如此类的调用应该加以保护,以阻止同一管道对象的重入以及错误的PIP API调用顺序。例如,在发送管道的通知读函数以及接收管道的通知写函数的开始部分,我们添加了如下语句,以避免递归调用:static Int nested = 0;…if (nested){/*防止由于调用PIP_get函数而产生的递归调用*/return;}nested =1。
4.结束语
对于数字信号处理应用来说,数据的通信很关键。在TI公司的DSP/BIOS环境下有3种通信方式,即基于管道(PIP,pipe)的通信、基于流(SIO,stream I/O)通道的通信以及基于主机(HST,host)通道的通信。每一种通信方式都是通过调度其相应的内核对象来完成的。DSP/BIOS提供了管理每一种通信方式的模块及相应地API调用,通过这些模块及调用,可以完成DSP环境下的输入/输出 (I/O)。
参考文献
1.丁宜栋,骆万文,丛剑飞,王海城. DSP/BIOS环境下的数据通信. 单片机与嵌入式系统应用
2.张雄伟,曹铁勇. DSP芯片的原理与开发应用. 电子工业出版社,2000
注:文章内所有公式及图表请以PDF形式查看。
关键词:DSP/BIOS;实时操作;方式
Abstract: in the DSP/BIOS of the three means of communication provided, because of the object PIP efficiency is very high, so make it in the application of the system based on DSP input and output are widely used.
Keywords: DSP/BIOS; The real-time operation; way
中图分类号:TN919 文献标识码:A文章编号:
引言:在DSP/BIOS提供的3种通信方式中,由于PIP对象的效率很高,因此使得它在基于DSP应用系统的输入输出中得到了广泛的应用。但是,我们在利用其所提供的便利的同时,一定要妥善处理好通知读/写函数的编写工作,以免发生递归调用,产生灾难性的后果。
DSP/BIOS 实时操作系统介绍
TI公司的DSP开发软件包括集成开发系统(CCS), 实时操作系统(DSP/BIOS),第三方算法库标准(eXpressDSP)。下面重点介绍DSP/BIOS。
DSP/BIOS是一个用户可剪裁的实时操作系统,主要由三部分组成:多线程实时内核(抢占式多线程);实时分析工具;芯片支持库。利用实时操作系统开发程序,可以方便快速的开发复杂的DSP程序。操作系统维护调度多线程的运行,只需将定制的数字信号算法作为一个线程嵌入系统即可;芯片支持库帮助管理外设资源,复杂的外设寄存器初始化可以利用直接图形工具配置;实时分析工具可以帮助分析算法实时运行情况。
DSP/BIOS以模块化方式提供给用户对线程、中断、定时器、内存资源、所有外设资源的管理能力都可以根据需要剪裁。实际应用中需要的定制算法作为一个线程插入DSP/BIOS的调度队列,由DSP/BIOS进行调度。
使用前需阅读了解DSP/BIOS用户手册和DSP/BIOS设备驱动的开发与使用,具体内容包括DSP/BIOS概述、程序生成、监测、线程调度、存储器和低級函数、I/O概述和管道、流I/O和设备驱动;设备驱动开发工具包(DDK)简介、DSP/BIOS设备驱动的结构和使用、使用DSP/BIOS设备驱动、GIO类驱动、微型驱动的开发步骤、IOM接口、PIO适配器、LIO模型到IOM模型的移植和GIO API的ASYNC扩展。
通信方式简介
2.1主机通信
主机通信方式下,由HST对象完成主机与目标机之间通信。HST对象静态配置为输入/输出,每一个HST对象内部是用数据管道对象来实现。
开发DSP应用时,可以应用HST对象来模仿数据流和测试程序算法对数据处理。在程序开发早期,特别是在测试信号处理算法时,程序使用输入通道对象访问来自主机文件中数据,以及使用输出通道对象把算法处理过结果反馈回主机一侧,以供查验或比较。在程序开发后期,当算法开发完毕时,可以把HST对象改回到PIP对象,通过利用PIP对象完成外设真实数据与目标应用程序之间通信。
2.2管道通信
管道(PIP)对象用于管理块I/O(也称为基于流I/O或者异步I/O)。每一个PIP对象维护着一个分为固定数量和固定大小缓冲区(称为帧)。所有I/O操作在每一刻只处理1帧。尽管每一帧长度是固定,但是应用程序可以在每一帧中放置可变数量数据(但不能超过最大值)。管道有两端,一端为写线程,一端为读线程。写线程一端用于向管道中添加数据,读线程一端用于从管道中读取数据。管道能够用于在程序内任意2个线程之间传递数据。经常地,管道一端由ISR控制,另一端由软件中断函数控制。数据通知函数(也称为回调函数)用于同步数据传输,包括通知读函数和通知写函数。当读或写1帧数据时,这些函数被触发,以通知程序有空闲帧或者有数据可以利用。
2.3流通信
流是一个通道,通过它,数据在应用程序与 I/O设备之间传输。流通道可以是只读(用于输入)或者只写(用于输出)。它对所有I/O设备提供了一个简单通用接口,允许应用程序完全不用考虑每个设备操作细节。流I/O一个重要方面是它异步特性。当应用程序正在处理当前缓冲区时,一个新输入缓冲区正在被添充和以前缓冲区正在被输出。流交换是指针而不是数据,这就大大减少了开销,使得程序更能满足实时约束要求。流模块(SIO)通过驱动程序来与不同类型设备打交道。驱动程序由DEV(Device)模块管理。
设备驱动程序是管理一类设备软件模块。这些模块遵从通用接口(由DEV提供),因此,流函数能够发出普通请求。
2.4各种通信方式比较
DSP/BIOS支持两种不同数据传输模型,一种是管道模型,由PIP与HST模块使用;另一种是流模型,由SIO与DEV模块使用。2个模型都要求1个管道或者流具有1个读线程和1个写线程。2个模型都通过拷贝指针而不是数据来完成数据拷贝。一般来说,管道模型支持低级通信,而流模型支持高级、与设备无关I/O。具体情况如表1所列。
表1 DSP/BIOS环境下通信方式的比较
3.需注意的问题
PIP_alloc和PIP_put由PIP对象的写线程调用,PIP_get和PIP_free由PIP对象的读线程调用,这种调用顺序是非常重要的。若打乱这种调用顺序,将会产生不可预测的后果。因此,每一次对PIP_alloc的调用都要跟着对PIP_put的调用才能继续调用PIP_alloc;对于PIP_get,情况也是如此。
另外,为了避免PIP调用过程中产生递归,作为通知读/写函数的一部分,应该避免调用PIP API函数。如果为了效率起见必须要这样做,那么对诸如此类的调用应该加以保护,以阻止同一管道对象的重入以及错误的PIP API调用顺序。例如,在发送管道的通知读函数以及接收管道的通知写函数的开始部分,我们添加了如下语句,以避免递归调用:static Int nested = 0;…if (nested){/*防止由于调用PIP_get函数而产生的递归调用*/return;}nested =1。
4.结束语
对于数字信号处理应用来说,数据的通信很关键。在TI公司的DSP/BIOS环境下有3种通信方式,即基于管道(PIP,pipe)的通信、基于流(SIO,stream I/O)通道的通信以及基于主机(HST,host)通道的通信。每一种通信方式都是通过调度其相应的内核对象来完成的。DSP/BIOS提供了管理每一种通信方式的模块及相应地API调用,通过这些模块及调用,可以完成DSP环境下的输入/输出 (I/O)。
参考文献
1.丁宜栋,骆万文,丛剑飞,王海城. DSP/BIOS环境下的数据通信. 单片机与嵌入式系统应用
2.张雄伟,曹铁勇. DSP芯片的原理与开发应用. 电子工业出版社,2000
注:文章内所有公式及图表请以PDF形式查看。