基于ARM的网络收音机
基于ARM 的嵌入式网络收音机的设计
Design of the Embedded Ethernet Radio on ARM Processor
(湖北民族学院) 袁海林
YUAN Hai-lin
摘要:研究了一种基于ARM 处理器的嵌入式网络收音机的设计方案。该系统以ARM 处理器
及其外围模块为硬件平台,以嵌入式Linux 为操作系统,以Mplayer 为网络播放软件,实现
了嵌入式网络收音机的全部功能。以嵌入式技术来实现网络收音机,是一个设计技术的创
新。该设计有较高的科研价值和极好的市场应用前景。
关键字:嵌入式系统;Linux;ARM9;网络收音
中图分类号:TP391 文献标识码:A
Abstract: This paper researches the scheme of design embedded Ethernet radio on
ARM processor. The system realizes function of the Ethernet radio, by using ARM
processor and some outer module as hardware platform, and using embedded Linux as
operation system, and using Mplayer as Ethernet broadcast software. It is a
innovation of the design technology that use embedded technology to realizes
function of the Ethernet radio. It has high research value and wide foreground of
market apply.
Keyword: embedded system;Linux;ARM9;Ethernet radio
收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段,由电子管,
晶体管发展到集成电路,由机械调谐发展到数字调谐功能等,其技术和品质都有了长足的进
步。如今,在收音机这个家族中新的成员也在不断加入,如卫星广播接收机等。当社会进入
网络时代后,更是出现了网络收音机这种跨越全球的信息接收设备。但是,目前这种网络收
音机大多是通过基于PC 机上的软件开发来实现的其功能的,也就是说这种网络收音机不能
脱离电脑这种相对比较大的和比较昂贵的设备。
为了克服PC 机形式的网络收音机的缺点,本文研究了一种基于ARM 的嵌入式技术的网
络收音机的设计方案。该方案以ARM 处理器及其外围模块作为硬件平台,以嵌入式Linux 作
为操作系统,以Mplayer 作为网络播放软件,再配合设计的用户应用程序,共同实现了嵌入
式网络收音机的全部功能。这种设计方法在网络收音机的设计史上是一个创新。同时,随着
网络技术的高速发展,该设计将具有极好的市场应用前景。
1 系统的结构及工作原理
系统的层次结构如图1 所示。系统以S3C2410 及其外围电路为硬件平台,以嵌入式Linux
和设备驱动程序作为系统的软件平台,为上层Mplayer 播放器和用户应用程序提供用户接口
支持[1]。在这三层结构的支持下,共同来实现嵌入式网络收音机的全部功能。
图1 系统层次结构图
系统的硬件结构框图如图2 所示。本系统选用的ARM 处理器是Sumsing(三星)公司的一
款ARM9 系列的芯片,型号为S3C2410。网卡芯片采用的是Cirrus Logic 公司的一颗网络处
理芯片CS8900。FLASH 芯片采用的是 K9F5608,用来存储启动引导程序U-boot、内核及文
件系统,SDRAM 芯片采用的是HY57V281620,作为该系统的内存。16*4 的字符型液晶显示模
块用来显示网络电台、音频文件名等相关信息。音频D/A 转换芯片选用的是飞利浦公司的
UDA1341 芯片,该芯片具有IIS 接口,可以方便的与S3C2410 连接。
图2 系统硬件结构框图
系统在Linux 提供的TCP/IP 协议的支持下,通过应用程序和Mplayer 控制,经过网卡
连接到internet 上指定的网络电台服务器,下载网络电台列表。系统支持在按键的控制下
的网络电台选择和LCD 上显示电台信息等功能。Mplayer 解析出选中的电台的IP 地址后,
再连接到要收听的电台的网站,系统便可以接收并解析出该网站发出的流媒体数据。系统将
接收到的流媒体数据保存到SDRAM 中。之后,经过Mplayer 的解码,送到音频D/A 转换芯片,
即可收听到该网络电台播放的声音等信息。
2 系统的硬件设计
2.1 S3C2410
本系统的硬件核心平台采用的是Samsung 公司的处理器S3C2410。该处理器内部集成了
ARM 公司ARM920T 处理器核的32 位微控制器,资源丰富,带独立的16KB 的指令Cache 和
16KB 数据Cache、MMU 虚拟内存管理单、LCD 控制器、RAM 控制器、NAND 闪存控制器、3 路
UART、4 路DMA、4 路带PWM 的Timer、并行I/O 口、8 路10 位ADC、Touch Screen 接口、
I2C 接口、I2S 接口、2 个USB 接口控制器、2 路SPI,主频最高可达203MHz[2]。其内部结
构如图3 所示。
图3 S3C2410 内部结构图
2.2 网络接口
系统的网卡芯片采用Cirrus Logic 公司的一种局域网处理芯片CS8900,该芯片内部集
成了RAM、10BASE-T 收发滤波器,并且提供8 位和16 位两种接口。其片选信号连接到S3C2410
的nGCS1,因此网卡的地址空间映射到0X08000000~0X0FFFFFFF。在Linux 内核中,一般都
含有CS8900 的驱动程序,使用时只需修改驱动与处理器的地址映射关系,并在配置内核的
Device Driver 选项中,选中CS8900 项。
2.3 SDRAM 存储器
本设计的SDRAM 采用的是HY57V281620 芯片。该芯片是一个数据宽度为16BIT,容量为
16M 字节的SDRAM。HY57V281620 与S3C2410 的连接图如图4 所示。
DATA00
DATA01
DATA02
DATA03
DATA04
DATA05
DATA06
DATA07
DATA09
DATA10
DATA11
DATA12
DATA13
DATA14
DATA15
nWBE0
nWE
nSCAS
nSRAS
nGCS6
ADDR01
ADDR02
ADDR03
ADDR04
ADDR05
ADDR06
ADDR07
ADDR08
ADDR09
ADDR10
ADDR11
ADDR22
ADDR23
SCKE
SCLK0
nWBE1
VCC 1
2 DQ0
VCCQ 3
4 DQ1
5 DQ2
VSSQ 6
7 DQ3
8 DQ4
VCCQ 9
10 DQ5
11 DQ6
VSSQ 12
13 DQ7
VCC 14
15 DQML
16 nWE
17 nCAS
18 nRAS
19 nCS
A13(BA0) 20
A12(BA1) 21
A10(AP) 22
A0 23
A1 24
A2 25
A3 26
VCC 27
VSS 28
A4 29
A5 30
A6 31
A7 32
A8 33
A9 34
A11 35
36 NC
3378 CCLLKKE
39 DQMH
40 RSV VSS 41
42 DQ8
VCCQ 43
44 DQ9
45 DQ10
VSSQ 46
47 DQ11
48 DQ12
VCCQ 49
50 DQ13
51 DQ14
VSSQ 52
53 DQ15
VSS 54
U2 HY57V281620
ADDR12
DATA08
VCC
DATA_BUS
ADDR_BUS
图4 HY57V281620 电路图
HY57V281620 的ncs 引脚接到处理器的nGCS6。由于在处理器的存储空间中,字节是存
储容量的唯一单位。而HY57V281620 的数据宽度为16 位,它的每一个存储单元都包含2 个
字节。因此HY57V281620 的A0 引脚接到了S3C2410 处理器的地址线ADDR01 上面。
HY57V281620 的容量为16MB,因此它需要ADDR00~ADDR23 共24 跟地址线来寻址,所以,
BA0~BA1 引脚应该接到ADDR22~ADDR23 地址线上。
3 系统的的软件设计
3.1 嵌入式Linux 的移植
嵌入式Linux 内核的版本很多,一般情况下版本越高,系统越稳定,驱动更完善,本系
统选择了2.6.18 的Linux 内核。其实对于2.6 以后版本的Linux 内核,对S3C2410 的支持
都有了很好的支持,所以移植过程都比较简单[3]。Linux2.6.18 移植到S3C2410 的基本步骤
如下:
(1)下载Linux2.6.18 内核,并解压到相应目录。
(2)修改内核顶层目录下的Makefile 文件,指明交叉编译器。进入Linux-2.6.18 内
核目录,输入命令vi Makefile,找到ARCH 和CROSS_COMPILE 两项,将其修改为ARCH = arm,
CROSS_COMPILE = arm-linux-。
(3)设置PATH 环境变量,使其可以找到交叉编译工具。输入su root,进入root,在
输入vi/etc/bashrc , 在结尾处加入以下行: export
PATH=/usr/local/arm/3.4.4/bin:$PATH,然后重启终端或重新登陆即可。
(4) 设置Flash 分区。首先要在arch/arm/mach-s3c2410/devs.c 文件中添加分区信
息,其次在arch/arm/mach-s3c2410/mach-smdk2410.c 文件的smdk2410_devices[]的成员
中添加&s3c_device_nand。这样Linux 内核启动时,就会对Flash 分区的设置初始化。
( 5 ) 禁止Flash ECC 校验。修改drivers/mtd/nand/s3c2410.c 文件, 找到
s3c2410_nand_init_chip() 函数, 在该函数体最后加上一条语句: chip->eccmode =
NAND_ECC_NONE。
(6)配置内核。通过make menuconfig 命令配置内核。
(7)编译内核,make zImage 命令,得到Linux 内核的映像文件zImage。
(8)制作根文件系统。
3.2 Mplayer 移植
Mplayer 是Linux 下的一个多媒体网络播放器。它的主要功能是对接收到的各种格式的
流媒体数据进行解码,同时也完成对接收的网络电台的IP 地址进行解析的任务。Mplayer
支持mp3、ogg 和wma 等多种格式的流媒体数据进行解码,是一个功能十分强大的开源应用
软件。Mplayer 的移植步骤如下:
(1)下载源代码MPlayer-current.tar.bz2,并解压。
(2)为了让mplayer 支持在线播放,从而能够播放网络电台,还必须下载安装网络协
议包(主要指RTSP、MMS 等协议)。可从www.live555.com 上下载live555 协议包,解压后
配置并编译。
(3)配置mplayer 的命令格式如下:
./configure --cc=arm-linux-gcc --target=arm-armv4-linux --enable-static
--disable-win32 --host-cc=gcc --disable-dvdread --enable-fbdev
--disable-mencoder --disable-mp3lib --enable-mad --enable-libavcodec
--enable-live --with-livedir=/live555 的目录/ --2>&1 | tee logfile。
其中,--host-cc=gcc 是用来编译一些需要在host 上执行的中间文件的,如codec-cfg。
--cc=arm-linux-gcc 是用来指定交叉编译工具。关于 --target=arm-armv4l-linux 这个参
数要注意的是它被分为三部分,第一部分的arm 是指arch,这里设定为arm;第二部分的
armv4l 是指具体的版本;第三部分是系统平台。--enable-static 是设定静态连接。--2>&1
| tee logfile 意思是将执行的情况在输出到屏幕的同时记录到logfile 文件中,在控制台
下编译比较有用。
(4)输入make 命令开始编译,编译完成后在顶层目录生成mplayer 可执行文件。
3.3 软件主流程图
系统主流程图如图5 所示。系统上电后,bootloader(U-boot)启动,完成硬件设备的初
始化, 并引导系统内核启动。系统启动执行初始化任务后,首先配置网络连接,通过运行
DHCP Clieant 向DHCP Server 申请获取本系统IP 地址。然后系统自动访问默认的电台服务
器,该服务器上有最近更新的世界各地的网络电台的URL 地址,系统下载该列表,并更新上
次保存的列表。然后系统判断有无按键按下,若有按键按下,系统根据按键选择相应网络电
台,若在一定时间段内没有按键按下,系统自动连接电台列表的第一个电台地址,并开始播
放该网络电台。 同时,LCD 将显示电台的有关信息和系统信息。在播放过程中,同样可以
根据按键来中断、选择网络电台。
图5 系统主流程图
4 结束语
本设计基于ARM 的嵌入式技术,通过软硬件等三层结构,实现了一个嵌入式网络收音机
系统。该系统克服了PC 机形式的网络收音机的诸多缺点,是一个极具创新思维的设计。随
着网络技术和嵌入式技术的高速发展,该设计具有很好的市场应用前景和科研价值。
本文作者创新点:
1、首次提出了用嵌入式技术设计网络收音机的系统设计方案,极具创新特点。
2、实现了Mplayer 软件在Linux 系统平台下向ARM9 的移置。
参考文献
[1] 周立功等.ARM 微控制器基础与实践[M].北京航空航天大学出版社,2003.7.
[2] 李侃,廖启征. 基于s3c2410平台与嵌入式Linux的图像采集应用[J].微计算机信息,
2006,3-2:125-127.
[3] 孙琼. 嵌入式Linux 应用程序开发详解[M]. 人民邮电出版时, 2006.7.
基金项目:湖北省教育厅重点项目,项目编号:2003A008
作者简介:袁海林(1962-) 男, 汉族,硕士,副教授,主要从事嵌入式技术的应用和研究。
Author brief introduction: YUAN Hai-lin, male, 1962, the Han nationality, master,
associate professor, primary engaging in application and scientific research of
embedded system design technology.
[ 本帖最后由 sdjntl 于 2010-10-11 17:32 编辑 ]