收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段,由电子管,晶体管发展到集成电路,由机械调谐发展到数字调谐功能和质量有了长足的进步,在收音机这个家族中新的成员也在不断加入,如卫星广播接收机等,当社会进入网络时代后,便出现了网络收音机。但是这种收音机都是基于PC机到应用软件,也就是说这种网络收音机不能脱离电脑,而本系统通过网络接口与英特网相连,在嵌入式Linux提供的TCP/IP协议的基础上直接访问网络电台的地址,实现收音的功能,因而使该嵌入式网络收音机无需PC机,就可以方便的收听来自全世界的声音。
1 系统的结构及工作原理
系统的硬件结构框图如图1所示。本系统选用的ARM处理器是Sumsing(三星)公司的一款ARM9系列的芯片,型号为S3C2410。有线网卡芯片采用CS8900,该芯片是Cirrus Logic公司生产的一种局域网处理芯片,它的封装是100-pin TQFP,内部集成了RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口。无线网络接口采用无线网卡模块,该模块为USB接口,通过USB接口与S3C2410相连。FLASH芯片采用 K9F5608,用来存储启动引导程序U-boot、内核及文件系统,SDRAM芯片采用HY57V281620,作为该系统的内存。LCD选用16*4的字符型液晶显示模块,用来显示网络电台、音频文件名等相关信息。音频D/A转换芯片选用具有IIS接口的UDA1341。
该系统的软件模型如图2所示。系统以S3C2410及其外围电路为硬件平台,嵌入式uclinux和设备驱动程序为上层mplayer播放器和用户应用程序提供软件平台。
〈!--[if !vml]--〉〈!--[endif]--〉
图 1 硬件结构框图
图2 软件模型
2 系统的硬件设计
2.1 S3C2410
S3C2410 芯片基于 ARM920T 内核,采用五级流水线和哈佛结构,提供1.1MIPS/MHz 的性能,是高性能和低功耗的硬宏单元。ARM920T 具有全性能的MMU、指令和数据Cache以及高速AMBA总线接口。
作为 S3C2410 芯片的 CPU 芯核,16/32 位ARM920T RISC微处理器采用0.18ìm CMOS标准单元结构,具有独立的16kB指令缓存和16kB数据缓存。S3C2410 内部结构较复杂,提供可扩展的功能模块较多,主要有 ARM920T 内核(16-/32-bit RISC CPU),独立的 16kB 指令和 16kB 数据缓存,MMU虚拟内存管理单元,LCD控制器(支持STN和TFT),NAND flash boot loader,系统管理单元(SDRAM控制器等),3通道 UART,4通道 DMA,4通道具备PWM 功能的定时器,I/O 口,RTC(实时时钟),8通道10bit精度ADC和触摸屏控制器,IIC总线接口,IIS数字音频总线接口,USB主机,USB设备,SD/MMC卡控制器,2通道 SPI 和 PLL数字锁相环组成。其内部结构如图3所示。
图3 S3C2410内部结构图
S3C2410提供了多种存储设备的接口,其中包括接ROM、SRAM、SDRAM、NOR Flash、NAND Flash等,同时S3C2410的外接存储空间被分为8个bank,每个容量为128M。本系统中Flash存储器(Boot SRAM)、网络接口(NET)、LCD Frame Buffer和SDRAM存储器分别映射到存储空间的bank0、bank1、bank2和bank6。如图4所示。
图4 存储空间映射
2.2 网络接口
本系统分为有线网络接口和无线网络接口,有线网络接口选用CS8900芯片局域网处理芯片,其片选信号连接到S3C2410的nGCS1,因此网卡的地址空间映射到0X08000000~0X0FFFFFFF。无线网络采用带有USB接口的WLAN(Wireless Local Area Nerwork)卡,插入系统的USB接口即可。
2.3 SDRAM存储器
HY57V28160是一个数据宽度为16BIT,容量为16M字节的SDRAM芯片。HY57V28160与S3C2410的连接图如图5所示。
图5 HY57V28160电路图
SDRAM的地址空间映射到存储空间的bank6,如图5所示,HY57V28160的ncs引脚接到处理器的nGCS6。由于在处理器的存储空间中,字节是存储容量的唯一单位。而SDRAM(HY57V28160)的数据宽度为16,它的每一个存储单元都包含2个字节。因此SDRAM(HY57V28160)的A0引脚接到了S3C2410处理器的地址线ADDR01上面。 HY57V28160的容量为16M(2^24)字节,因此它需要ADDR00~ADDR23共24跟地址线来寻址,所以,BA0~BA1引脚应该接到ADDR22~ADDR23地址线上。
2.4 Flash存储器
本系统中,Flahs存储器主要用于存储U-boot、Linux内核及文件系统。常见的Flash存储器有NOR Flash和NAND Flash,两种Flash各有优缺点。本系统综合考虑了各项因素,选用了16M*16BIT的NAND Flash,型号为K9F5608。系统启动时,CPU从0x00000000地址开始运行,所以要将Flash的首地址映射到0x00000000,因此该Flash芯片的片选引脚要接到nGCS0,其电路图设计如图6所示。
图6 nand flash电路图
3 系统的的软件设计
3.1 嵌入式Linux的移植
嵌入式Linux内核的版本很多,一般情况下版本越高,系统越稳定,驱动更完善,本系统选择了2.6.18的Linux内核。其实对于2.6以后版本的Linux内核,对S3C2410的支持都有了很好的支持,所以移植过程都比较简单。
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下的一个媒体播放器,它对媒体格式的支持非常广泛,而且支持实时在线播放音视频流。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 --disable-dvdread --enable-fbdev --disable-mencoder --disable-mp3lib --enable-mad --enable-libavcodec --enable-live --with-livedir=/live555的目录/,其中,--host-cc=gcc是用来编译一些需要在host上执行的中间文件的,如codec-cfg。--cc=arm-linux-gcc如果没有将arm-linux-gcc的位置加入到$PATH中的话,在这个指定绝对路径好了。--target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本;第三部分是系统平台。--enable-static是设定静态连接。最后的一个2〉&1 | tee logfile意思是将执行的情况在输出到屏幕的同时记录到logfile文件中,在控制台下编译比较有用。
(4)、输入make命令开始编译,编译完成后在顶层目录生成mplayer可执行文件。
3.3系统软件主流程图
系统上电后,bootloader(U-boot)启动,完成硬件设备的初始化, 并引导系统内核启动。系统启动执行初始化任务后,首先配置网络连接,通过DHCP Clieant向DHCP Server申请获取IP地址。然后系统自动访问电台服务器,该服务器上有最近更新的世界各地的网络电台的URL地址,系统下载到该列表并更新原有列表后,自动连接列表的第一个网络电台。若在该过程中有按键产生,系统根据按键类型及当前状态调用相应的功能。系统主流程图如图7所示。
(a)
(b)
图7 系统主流程图
|