基于 R8610 的嵌入式网络音频播放系统设计与实现*

2013-09-19 06:27王小磊任定成
深圳职业技术学院学报 2013年3期
关键词:进程嵌入式音频

王小磊, 易 定, 任定成

(深圳职业技术学院 计算机工程学院,广东 深圳 518055)

目前主要的网络音频播放方式为:基于PC的网络音频播放器和嵌入式网络音频播放系统[1].虽然基于 PC的网络音频播放器[2]在设计和实现上都很成熟,但是携带的灵活性限制了这类软件的发展.与基于 PC的网络音频播放器相比,嵌入式网络音频播放系统则具有体积小,功能专业化高,成本低,稳定性高,实时性好等特点[3].目前较成熟的设计方案是以 ARM 系列处理器来实现[4-5],虽然此类方案虽然易于搭建,但是实现的成本较高,不利于推广,而且在网络音频的节目管理上也没有一个合理的机制.

为了控制嵌入式网络音频系统的生产成本,同时保证系统对各类网络音频的播放性能,本文设计一种以X86架构的CPU—R8610为核心的嵌入式网络音频播放系统.通过使用该芯片来搭建硬件平台在成本控制上具有较大的优势.同时,在网络音频的节目管理上,配合该系统使用了一种相对完善的网络音频播放体系,在该体系下可以较好地完成网络音频终端对网络音频节目的管理.

1 系统的核心硬件选择

本系统在设计之初,充分考查了多个设计方案,选择了3款CPU:最早实现嵌入式网络音频播放的BC5,应用比较广泛的S3C2410以及本设计所使用的R8610进行比较,具体见表1.

表1 CPU对比表

对于系统的硬件选择着重考虑:芯片的性能、网络的支持以及PCB的加工等.从表1可以看到,与其它2款CPU相比,R8610的处理能力并不是最强的,但其133MHz的主频完全满足网络音频播放的需求,可以充分发挥处理器的性能.在网络的支持上,R8610自身集成了2个网络接口,免去了硬件设计上对于网络控制器的选择,能更好的节省硬件使用成本.此外,在PCB的加工上,R8610可以采用2层板的设计,降低了对加工工艺的要求.通过以上对比说明采用R8610所做的设计方案与其它方案相比具有较大的价格和工艺优势,利于产品的推广.

2 系统的架构设计

根据网络音频的传输过程,本系统的总体网络设计方案如图1所示.在该网络设计方案中涉及:网络音频服务器、节目管理服务器、网络音频播放系统和互联网4大部分.网络音频播放系统在进行网络音频播放时,首先向节目管理服务器发送连接请求,在通过用户认证以后,获取相应的节目列表,然后根据用户的选择,向对应的网络音频服务器发送连接请求,并最终获取网络音频.

在硬件上以底层的硬件接口,32bit的R8610和外围电路为平台,在此基础上进行Linux系统的移植,流媒体播放器的移植,通过音频播放系统来接收用户指令,控制网络音频的播放.

图1 系统的网络结构图

图2 网络音频播放系统的硬件架构图

系统的硬件设计如图2所示,在设计上系统以 R8610CPU为核心,采用了 EN29LV320为Flash,用来启动系统的Bootloader,Linux内核和文件系统.采用了32M的SDRAM为系统提供32M的内存资源.在系统的音频 D/A转换上,采用CMI8738芯片通过PCI总线连接R8610,接收CPU所处理好的流媒体音频,并将该数字信号进行模拟信号的转换,然后通过NJM4558接收CMI8738的模拟信号,将信号进行放大处理,并输送到音频输出接口处.系统和用户的交互上,利用 LCD通过GPIO接口与R8610相连,接收R8610的控制指令,实现和用户的操作界面的交互.IR感应装置利用GPIO与R8610进行连接,当用户按下遥控按键后,IR进行按键的感应,并将按键的代码发送到R8610,让应用程序进行功能的解读.在网络的支持上由于R8610集成了两个网络接口,将RJ45接口利用MII总线连接到R8610的MAC控制器,实现系统对以太网的硬件支持.

网络音频播放系统的主要功能是,通过访问节目管理服务器来获取网络音频的地址,从而通过流媒体传输从网络音频服务器端获取音频资源,用户可以通过按键的控制,实现对网络音频播系统的系统设置、网络设置、音频播放控制和信息查看等.

3 系统软件设计与实现

根据系统的运行操作对象以及相应的功能设计,本系统分为图3所示的3个层分和7大功能模块.其中用户界面层用以和用户进行信息的交互,将系统当前的运行模式和运行状态及时的反馈给用户,同时接收用户的按键指令;系统管理层用以实现用户对系统的各类配置,它是系统运行状态的决定层,系统正常运行的决定层;音频播放层网络音频播放层是本系统的核心功能层,它根据用户的播放选择实现对音频的获取和播放.

图3 系统的软件层次设计图

网络音频播放系统的功能复杂多样,下面仅介绍系统的核心网络音频播放的实现.网络音频的功能启用由用户所控制.操作的处理过程如图 4所示.系统在完成了启动后,首先对当前的网络状态进行测试,并将测试结果反馈给用户.当网络正常的情况下,用户进行网络播放的选择,然后才能够使用系统的网络播放功能.系统首先向节目管理服务器进行节目列表的查询,判断列表的获取是否正常.当获取了节目列表以后,系统利用LCD屏幕将列表信息反馈给用户,用户通过按键或者遥控等设备进行选择,在得到用户的选择以后,系统将开启播放进程,进行网络音频服务器的连接,当连接成功以后,向网络音频服务器发出网络音频数据的请求,在获取网络音频服务器的允许以后,开始进行音频数据的下载,最后由流媒体播放器进行缓冲和解码,并播放给用户.

图4 网络音频播放时序图

在系统的实现上其中一个关键点是采用何种进程通信方式,让系统能够快速响应用户指令,调用流媒体播放器,进行音频的播放.在 Linux下的 IPC进程间通信(Interprocess Communication)总共有五种类型: 共享内存(Shared Memory)、内存映射(Mapped Memory)、管道(Pipes)、FIFOs和套接字(Sockets).socketpair是Linux下套接字的一种特殊使用,其函数原型为:int socketpair(int domain,int type,int protocol,int sv[2]),4个参数依次的作用是:

1)套接口的域 指定套接字通信中使用的网络介质,可以使是 AF_INET,AF_UNIX,AF_ISO,AF_XFA等.由于在本项目中使用该套接字实现系统内部的进程通信,因此将采用AF_UNIX.

2)套接口类型 有三种类型:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)及原始套接字.流式套接字提供的是一个有序,可靠,双向字节流的连接.发送的数据可以确保不会丢失,复制或乱序到达.因此在本项目中使用SOCK_STREAM.

图5 在线播放的父子进程调用流程图

3)使用的协议 该参数可以为套接字选择一个特定的协议类型参数,声明了希望创建哪种类型的套接口.由于本系统不需要选择一个特定的协议,只需要使用其默认值即可.

4)文件描述符的指针 用以保存创建的套接字对.

通过对socketpair的调用,能创建一对已连接的无名套接字,实现在同一个文件描述符中读写一个双向通信的管道,而不用像 Pipes那样要开通两个管道.该功能函数的流程如图5所示,在完成了系统的初始化后,首先利用socketpair()函数建立一对匿名的已经连接的套接字,建立的两个套接字描述符会放在sv[0]和sv[1]中,然后利用fork()进行创建当前进程的副本,从而产生一个子进程.在父进程中关闭描述符 sv[0],在子进程中关闭描述符sv[1],然后在子进程中利用 dup2(sv[0],STDOUT_FILENO);dup2(sv[0], STDIN_FILENO);dup2(sv[0], STDERR_FILENO)等操作,将 sv[0]和系统的标准输入和输出进行连接,实现子进程的sv[0]与父进程的sv[1]的关联,从而实现了父子进程的全双工通信.系统在运行过程中由父进程接收用户的指令,进行解析然后利通管道发送到子进程中,由子进程向流媒体播放器发送播放控制指令.

4 测试结果

系统的调试以各个开发模块为单位,首先将新增加或改动的模块连接入参考软件,保证在调试某个模块的软件时其余部分软件的运行是正确的.通过对各个开发模块的测试,检查各个程序模块是否正确地实现了规定的功能.当所有新开发的模块分别调试过之后,再按照模块之间的相互关系将某几个相关的模块合起来进行集成测试,以检查与设计相关的软件体系结构的有关问题,以及各个子系统之间的影响和协同合作能力.最后,在实际运行环境中对整个软件系统进行系统测试,具体的性能测试结果见表 2,在程序的用户命令响应上,取得了较好的效果.

表2 流媒体音频播器的性能测试表

[1] 尹秀文,曾碧,徐以山,等. 基于龙芯 SoC 的嵌入式网络收音机设计[J]. 计算机工程, 2010,36(16):281-285.

[2] 罗雄科. 基于ARM与LINUX的嵌入式流媒体播放器的研究与实现[D].浙江大学,2006:1-2.

[3] 顾人奎. 基于 Linux系统的网络实时流媒体嵌入式终端的构建[D].华中科技大学,2006:7-8.

[4] 卓碧华,陈良银,胡大裟,等. 基于ARM内核的网络收音机的设计与实现[J]. 西南民族大学学报(自然科学版),2007,33(4):886-889.

[5] 袁海林. 基于 ARM 的嵌入式网络收音机的设计[J].微计算机信息, 2007,23(7-2):122-124.

猜你喜欢
进程嵌入式音频
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
基于Daubechies(dbN)的飞行器音频特征提取
搭建基于Qt的嵌入式开发平台
音频分析仪中低失真音频信号的发生方法
嵌入式软PLC在电镀生产流程控制系统中的应用
Pro Tools音频剪辑及修正
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器