基于uC/OS-II的低速率语音编码器系统设计
为预计的任务正常运行所需的最大时间。若等待时间内监视任务收到消息,则认为发送消息的任务运行正常,依照各任务执行顺序的先后下一任务开始运行,监视任务等待下一任务发送的消息。若等待时间已过,监视任务仍未收到消息,则系统的时间管理函数将强行把监视任务视为就绪态。因监视任务的优先权是最高的,它将抢占对CPU的控制权并采取相应的纠错方案。
操作系统层设计
在应用中,各个任务之间都有数据要交换,本设计中采用消息机制实现任务间通信。编码任务需要模拟接口任务发送的消息,以接收用于编码的语音数据;数字接口任务需要编码任务发送的消息,以接收用于发往信道的编码数据;解码任务需要数字接口任务发来的消息,以接收来自信道的用于解码的解码字;模拟接口任务需要解码任务发来的消息,以接收用于D/A转换的数字语音信号。回波抵消任务需要等待的消息来自模拟接口任务和解码任务。监控任务接收所有其任务发来的消息,确认系统是否正常运行。
在运行过程中,操作系统对各任务进行调度。其动作为:
系统启动时,建立所有的任务,除回波抵消任务外,都处于就绪态;
此时,监控任务优先级最高,查询消息队列,没有消息的到来,转为等待态;
模拟接口任务运行,接收/发送数据,发数据给回波抵消任务,并使回波抵消任务处于就绪态;如条件达到(如帧数已够),向编码任务发消息,传送数据,运行完毕,自行进入挂起态,等待下一次串口中断将其转为就绪态;
数字接口任务运行,接收/发送数据,如条件达到(如编码字数够),向解码任务发消息,传送数据,运行完毕,自行进入挂起态,等待下一次串口中断(或HPI中断)将其转为就绪态;
如消息足够,回波抵消任务运行,运行完毕,自行处于挂起态;
编码任务运行,如有模拟接口任务发来的消息,则运行,编码完毕,向数字接口发消息;否则,处于等待态;
解码任务运行,如有数字接口任务发来的消息,则运行,解码完毕,向模拟接口任务和回波抵消任务发消息;否则,处于等待态;
在所有任务都执行完毕后,Idle任务运行。
由于所有的任务都有严格的执行时间限制,因此,上述的任务流程在正常情况下可以顺利进行。否则,监控任务会重启系统。
结语
本文在TMS320C54X的硬件平台上实现uC/OS-II,并针对传统的系统设计方法设计的低速率语音编码器稳定性不佳的问题,提出了基于uC/OS-II的低速率语音编码器系统设计的方案。由于低速率语音编码器通常是单片的,内部任务相对较少。使用实时内核来管理这些任务,会增加系统的内存和CPU时间的消耗,而任务调度的优势不能很好地显示出来,该设计有一定局限性。但是,在系统的内存足够大、CPU运行速度足够快的情况下,使用实时内核设计低速率语音编码器,有利于系统的后继开发。
- 设计性能:物理综合与优化(04-28)
- 基于ARM+uCLinux的网络控制系统设计与实现(05-03)
- 嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现(06-09)
- 基于ARM7的新型嵌入式心电监护仪的研制(07-30)
- MOXA嵌入式计算机在变电站综合自动化中的解决方案(11-25)
- 爱特梅尔低功耗微控制器平台开发组合软件加速设计(02-05)