基于ARM Cortex-M3的嵌入式网络播放系统

2010-09-27 01:40皮亦鸣
电子设计工程 2010年1期
关键词:驱动程序以太网嵌入式

王 坤,皮亦鸣

(电子科技大学 电子工程学院,四川 成都 610054)

基于ARM Cortex-M3的嵌入式网络播放系统

王 坤,皮亦鸣

(电子科技大学 电子工程学院,四川 成都 610054)

针对一般嵌入式播放系统无网络功能,提出一种网络播放系统硬件平台设计方案。该方案采用ARM Cortex-M3构架的LM3S1138作为主控制器,以USB控制器CH375﹑网络器件ENC28J60和音频解码器VS1003作为外围器件,采用μC/OS作为操作系统。并给出系统软件的设计方法,包括设备驱动程序设计和应用程序设计。通过测试,该系统能流畅下载和播放网络歌曲,并能广泛应用于家电产品、车载电子产品和公共广播场所。

嵌入式系统;ARM Cortex-M3;以太网接口;API;应用程序

随着网络应用的普及,为普通嵌入式系统增加网络功能,能更好满足消费者对网络资源的需求。这里采用基于ARM Cortex-M3的微控制器LM3S1138实现一种具备网络功能的播放终端系统,该系统不仅具有良好的播放效果,还可从网络音乐服务器上点播音乐并实时播放。

1 网络播放系统的设计方案

该网络播放系统由服务器﹑用户终端和音响设备组成。其中,服务器通过以太网提供音乐资源,用户终端通过网络下载音频数据再实现音频解码,音响设备实现音乐播放。图1给出该系统设计框图。

图1 网络播放系统设计框图

该系统设计采用基于ARM Cortex-M3的控制器LM3S1138作为主控制器。该控制器改进了代码密度,减少中断延时,实现Thumb-2指令集,并具有更低功耗,适用于嵌入式微处理器[1];网络模块采用以太网控制器ENC60J28;音频编解码器采用VS1003,该器件拥有自主产权的DSP处理器核,具有高性能﹑低功耗等特性;并采用USB总线接口器件CH375扩展存储模块,支持海量存储。

将嵌入式实时操作系统μC/OS-II移植到主处理器上,实现多任务的调度管理[2]。系统工作时,通过操作播放器上的配置按钮,设置服务器和用户终端的相关网络配置,点击播放器中的连接按钮,发送连接服务器请求,服务器收到用户终端的连接请求,验证终端帐号正确后开始网络连接,向用户传送点播的资源列表,用户终端在播放器界面显示列表,此时,用户可以选择点播的歌曲,然后将音乐文件下载到存储设备中,下载完毕后,服务器关闭网络连接,播放器就可播放已下载歌曲。

2 系统硬件模块设计[3-5]

2.1 以太网接口

ENC28J60是独立的以太网控制器,采用业界标准的SPI串行接口,具有10 Mb/s SPI接口,符合IEEE802.3协议,内置10 Mb/s以太网物理层器件(PHY)及介质访问控制器(MAC)。另外,它还具有可编程8 KB双端口SRAM缓冲器,此缓冲存储器具有灵活可靠的数据管理机制,以高效方式进行信息包的存储、检索和修改,以减轻主控器件的内存负荷。

图2为网络接口硬件连接示意图。ENC28J60通过SPI总线实现与LM3S1138的数据传输,CS为片选信号,SCLK为时钟信号,MOSI/MISO为数据传输串口。此外,ENC28J60还与网络变压器HR901170A相连,引出RJ45接口。

图2 网络接口硬件连接

2.2 音频接口

VS1003音频编解码器为VS10XX系列第3代产品,包括MP3/WMA/MIDI解码和ADPCM编码2个单器件。其内置有高性能﹑低功耗的DSP处理核(VSDSP),工作内存,可供用户程序使用的5.5 KB RAM,串行SPI总线接口,高质量的采样频率可调的过采样D/A转换器以及16位的过采样A/D转换器。图3为音频编解码器模块硬件连接示意图,VS1003采用SPI总线与LM3S1138实现通信。其中,SCLK为输入时钟,CS为片选信号,MOSI/MISO为数据串口,Demand为命令有效信号,VS1003外接音频输出设备[4]。

图3 音频编解码模块硬件连接

2.3 USB控制接口

CH375是一款支持USB-HOST主机方式和USB-DEVICE/SLAVE从设备方式的器件,主机端点输入和输出缓冲区各64字节,支持常用的12 Mb/s全速USB设备,支持USB设备的控制传输﹑批量传输﹑中断传输。内置固件处理海量存储设备的专用通讯协议,支持Bulk-Only传输协议和SCSI,UFI,RBC或等效命令集的USB存储设备。

图4为USB控制接口模块硬件连接示意图,CH375通过UART串口与LM3S1138传输数据,INT为中断信号,TXD/RXD为数据传输串口,CH375连接USB存储设备。

图4 USB控制接口模块硬件连接

3 系统软件设计

μC/OS-II是专门为嵌入式应用设计的实时操作系统内核,其具有以下优点:源代码公开,代码结构清晰,注释详尽,组织有条理,具有良好的可扩展性和可移植性,最多可以管理60个任务。该系统移植的μC/OS-II由用户层﹑中间件层﹑μC/OS-II源码层﹑μC/OS-II移植层和驱动库组成。用户层存放用户代码及设置,其中Main.c是用户编写任务处,Main.h定义堆栈大小及优先级;中间件层Middleware存放UART﹑SPI等串口通信中间件和 TCP/IP协议栈 LwIP;μC/OS-II源码层Source存放 μC/OS-II的源代码;μC/OS-II移植层 Port存放μC/OS-II基于 LM3S的移植代码,包括 OS_CPU_C.C,OS_CPU_A.A,OS_CPU.C等3个必要文件;驱动库层是直接面向硬件设备层,它是硬件设备和应用程序之间的枢纽,直接与系统底层的硬件设备打交道,按照硬件设备的具体工作方式读写设备寄存器,将寄存器的数据与应用软件交互,ENC28J60﹑VS1003和CH375的驱动函数都在该层。

3.1 网络驱动程序

本系统采用ENC28J60以太网控制器,需编写网络设备驱动程序,实现低层网络接口及硬件函数驱动。该驱动程序设计主要包含网卡的初始化和数据的发送接收[5]。

网卡初始化的驱动程序包括定义发送缓冲区大小﹑发送缓冲区数﹑ENC28J60的片选信号﹑ENC28J60的复位引脚以及网卡自检。具体程序代码如下[6]:

#define MAC_TX_BUFFER_SIZE (600) //定义发送缓冲区大小

#define MAC_TX_BUFFER_COUNT(1) //定义发送缓冲区数

#define LM1138_CS_ENC28J60 GPIO_PIN_3//ENC28J60的片选信号PA.3

#defineLM1138_RESET_ENC28J60 GPIO_PIN_1 //ENC28J60的复位引脚

Void ENC28J60_PowerOn_Init(void) //ENC28J60 上电初始化函数

网卡数据传输的驱动程序包括申请IP地址,建立与服务器的连接,以及数据的接收和发送等,图5为其程序流程。

图5 网卡数据传输流程

3.2 文件系统

文件系统是一种以结构化格式存储和信息检索的实现方法,可使用户方便快捷的管理存储数据。文件系统一般包括 FAT32/16,NTFS,ext2/3,NFS 等,本设计采用 FAT16,可支持2 GB的最大分区,用于管理U盘中的音频文件,该文件系统的实现主要针对USB接口器件CH375进行驱动开发。

在CH375驱动设计中,先实现FAT32/16文件系统层,再实现文件级API应用层。文件系统层采用CH375开发商提供的U盘文件级子程序库来实现,CH375的U盘文件级子程序库具有以下特性:支持常用的FAT16和FAT32文件系统,磁盘容量可达100 GB以上,支持多级子目录,支持8.3格式的大写字母和中文文件名,支持小写字母或长文件名,支持文件打开、删除、读写以及搜索等。文件系统移植好后,再进行API应用层驱动设计。应用层驱动包括CH375引脚配置、文件读写缓冲区配置、CH375读写程序的设计。在读写程序的设计中,要注意对CH375的延时操作,满足CH375的时序要求。

3.3 音频驱动程序

音频驱动的设计主要是针对VS1003的初始化设置和实现音频数据流的传输,并对应用层提供API接口,这里完成了音频播放功能程序的设计。

在该程序设计中,首先对LM1138和VS1003控制接口的(MISO﹑MOSI﹑SCK﹑CS﹑Demand) 引脚进行相应配置,VS1003初始化配置完成后,开始等待系统的播放标志置位,播放标志为“0”时,重新初始化 VS1003,播放标志为“1”时,接收到系统的播放消息,使能SPI接口,选择将要播放的数据包,把音频数据写入SPI的缓冲存储区,然后再发送给VS1003的数据寄存器,当音频数据发送完成后,开始由VS1003处理这些音频数据,实现模拟音频数据的输出,该函数能够流畅地完成音频播放功能[4]。

3.4 用户应用程序

系统的应用程序主流程如图6所示。

图6 应用程序主流程

系统主任务启动后,先初始化人机界面库函数,它提供了操作界面的按键中断处理函数以及LCD的显示函数;再读取初始系统配置数据,如本地IP、服务器IP、用户账号、密码等,完成网络、音频编解码以及存储等模块的初始化;然后,主任务再创建多个子任务,包括ENC28J60task,CH375task,VS1003task,humaninterfacetask,接着进入消息循环,消息循环是整个应用程序的核心部分,通过消息循环,系统不断获取用户操作消息,并做出相应处理,实现系统功能;当收到一个退出消息时,系统强制主任务跳出消息循环,关闭播放器操作界面,系统退出应用程序[2]。

4 系统测试及分析

系统调试成功后,可流畅地从服务器中下载音频数据,保存到外接USB设备中,然后再通过音频解码从音响播放出来。图7为该系统主界面,系统音质良好,达到设计要求。

图7 播放主界面

5 结束语

本系统设计采用基于ARM Cortex-M3的嵌入式器件LM3S1138作为主控制器件,采用ENC28J60作为网络接口器件,在μC/OS-II平台上构建一个实时的网络播放系统[7-8]。该系统能够实现网络点播功能。如将ENC28J60更成为具有USB接口的无线网卡,则该系统还具有无线网络功能。而随着以太网技术的深入发展,将嵌入式系统与网络结合,在嵌入式实时操作系统中引入TCP/IP协议栈,以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向,且对于一些基于网络接口的嵌入式系统都将具有广泛的应用前景。

[1]ARM.Cortex-M3 technical reference manual[EB/OL].2008.http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337e/DDI0337E_cortex_m3_r1p1_trm.pdf.

[2]邵贝贝.嵌入式实时操作系统μC/OS-Ⅱ[M].北京:北京航空航天大学出版社,2003.

[3]Luminary Micro.Stellaris peripheral driver library user’s guide[EB/OL].2008.http://www.cs.put.poznan.pl/wswitala/download/pdf/PDL-LM3S-uvision-UG-1716.pdf.

[4]孙天亮,陈伟元,王豪才.基于ARM核的音频编解码器单器件系统[J].单片机与嵌入式系统应用,2001(10):68-71.

[5]刘 淼.嵌入式系统接口设计与驱动程序开发[M].北京:北京航空航天大学出版社,2006.

[6]谭浩强.C程序设计[M].2版.北京:清华大学出版社,2002

[7]伍兴艳,皮亦鸣.一种嵌入式MP3音频点播系统的设计与实现[J].电子设计工程,2008,16(10):32-33.

[8]朱维杰.基于BU9435的嵌入式MP3播放模块设计[J].电子设计工程,2009,17(2):8-10.

Embedded network display system based on ARM Cortex-M3

WANG Kun,PI Yi-ming
(Department of Electronic Engineering,UEST of China,Chengdu610054,China)

Aiming at the common embedded multimedia system without network function,an embedded hardware platform program for the network display system is presented.This system design uses LM3S1138 with ARM Cortex-M3 as the main controller,uses USB controller CH375,Ethernet controller ENC28J60 and audio-decoder VS1003 as the periphery chips,and uses μC/OS as operation system.The method of the system software design is given,including the device diver design and application program design.In the test,this system design downloads and plays the music on the net fluently,it is widely used in house electrical appliances,car electronics products and public broadcasting.

embedded system;ARM Cortex-M3;Ethernet interface;API;application program

TP393

A

1674-6236(2010)01-0071-03

2009-07-21 稿件编号:200907070

广东省教育部产学研结合项目(2008B090500230)

王 坤(1984—),男,湖北黄冈人,硕士研究生。研究方向:雷达信号处理。

猜你喜欢
驱动程序以太网嵌入式
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
计算机硬件设备驱动程序分析
搭建基于Qt的嵌入式开发平台
谈实时以太网EtherCAT技术在变电站自动化中的应用
嵌入式软PLC在电镀生产流程控制系统中的应用
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
基于MPC8280的CPU单元与内部总线驱动程序设计