基于ARM的嵌入式网络收音机的设计

2019-07-12 20:12发布

基于ARM的嵌入式网络收音机的设计 摘要:研究了一种基于ARM处理器的嵌入式网络收音机的设计方案。该系统以ARM处理器及其外围设备为硬件平台,以嵌入式Linux为操作系统,实现了网络收音、局域网共享音频文件和本地SD/MMC卡内音频文件的播放功能,该系统还使用了无线网卡模块,通过USB接口与系统连接。由于该系统运用嵌入式Linux提供的TCP/IP协议直接与网络电台的地址连接,所以省去PC机,就可以轻松的收听全世界的网络电台,而且体积较小,移动方便。 关键字:嵌入式系统;LinuxARM;网络收音 收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段,由电子管,晶体管发展到集成电路,由机械调谐发展到数字调谐功能和质量有了长足的进步,在收音机这个家族中新的成员也在不断加入,如卫星广播接收机等,当社会进入网络时代后,便出现了网络收音机。但是这种收音机都是基于PC机到应用软件,也就是说这种网络收音机不能脱离电脑,而本系统通过网络接口与英特网相连,在嵌入式Linux提供的TCP/IP协议的基础上直接访问网络电台的地址,实现收音的功能,因而使该嵌入式网络收音机无需PC机,就可以方便的收听来自全世界的声音。

1系统的结构及工作原理

系统的硬件结构框图如图1所示。本系统选用的ARM处理器是Sumsing(三星)公司的一款ARM9系列的芯片,型号为S3C2410。有线网卡芯片采用CS8900,该芯片是Cirrus Logic公司生产的一种局域网处理芯片,它的封装是100-pin TQFP,内部集成了RAM10BASE-T收发滤波器,并且提供8位和16位两种接口。无线网络接口采用无线网卡模块,该模块为USB接口,通过USB接口与S3C2410相连。FLASH芯片采用 K9F5608,用来存储启动引导程序U-boot、内核及文件系统,SDRAM芯片采用HY57V281620,作为该系统的内存。LCD选用16*4的字符型液晶显示模块,用来显示网络电台、音频文件名等相关信息。音频D/A转换芯片选用具有IIS接口的UDA1341。 该系统的软件模型如图2所示。系统以S3C2410及其外围电路为硬件平台,嵌入式uclinux和设备驱动程序为上层mplayer播放器和用户应用程序提供软件平台。 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控制器(支持STNTFT),NAND flash boot loader,系统管理单元(SDRAM控制器等),3通道 UART4通道 DMA4通道具备PWM 功能的定时器,I/O 口,RTC(实时时钟),8通道10bit精度ADC和触摸屏控制器,IIC总线接口,IIS数字音频总线接口,USB主机,USB设备,SD/MMC 卡控制器,2通道 SPI PLL数字锁相环组成。其内部结构如图3所示。 3 S3C2410内部结构图  
S3C2410提供了多种存储设备的接口,其中包括接ROMSRAMSDRAMNOR FlashNAND Flash等,同时S3C2410的外接存储空间被分为8bank,每个容量为128M。本系统中Flash存储器(Boot SRAM)、网络接口(NET)、LCD Frame BufferSDRAM存储器分别映射到存储空间的bank0bank1bank2bank6。如图4所示。 4 存储空间映射

2.2 网络接口

本系统分为有线网络接口和无线网络接口,有线网络接口选用CS8900芯片局域网处理芯片,其片选信号连接到S3C2410nGCS1,因此网卡的地址空间映射到0X08000000~0X0FFFFFFF。无线网络采用带有USB接口的WLANWireless Local Area Nerwork)卡,插入系统的USB接口即可。

2.3 SDRAM存储器

HY57V28160是一个数据宽度为16BIT,容量为16M字节的SDRAM芯片。HY57V28160S3C2410的连接图如图5所示。 5 HY57V28160电路图 SDRAM的地址空间映射到存储空间的bank6,如图5所示 ,HY57V28160ncs引脚接到处理器的nGCS6。由于在处理器的存储空间中,字节是存储容量的唯一单位。而SDRAMHY57V28160)的数据宽度为16,它的每一个存储单元都包含2个字节。因此SDRAMHY57V28160)的A0引脚接到了S3C2410处理器的地址线ADDR01上面。 HY57V28160的容量为16M2^24)字节,因此它需要ADDR00~ADDR2324跟地址线来寻址,所以,BA0~BA1引脚应该接到ADDR22~ADDR23地址线上。

2.4 Flash存储器

本系统中,Flahs存储器主要用于存储U-bootLinux内核及文件系统。常见的Flash存储器有NOR FlashNAND Flash,两种Flash各有优缺点。本系统综合考虑了各项因素,选用了16M*16BITNAND Flash,型号为K9F5608。系统启动时,CPU0x00000000地址开始运行,所以要将Flash的首地址映射到0x00000000,因此该Flash芯片的片选引脚要接到nGCS0,其电路图设计如图6所示。 6 nand flash电路图

3 系统的的软件设计

3.1 嵌入式Linux的移植

嵌入式Linux内核的版本很多,一般情况下版本越高,系统越稳定,驱动更完善,本系统选择了2.6.18Linux内核。其实对于2.6以后版本的Linux内核,对S3C2410的支持都有了很好的支持,所以移植过程都比较简单。Linux2.6.18移植到S3C2410的基本过程如下: (1)、下载Linux2.6.18内核,并解压到相应目录。 (2)、修改内核顶层目录下的Makefile文件,指明交叉编译器。进入Linux-2.6.18内核目录,输入命令vi Makefile,找到ARCHCROSS_COMPILE两项,将其修改为ARCH = armCROSS_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移植

MplayerLinux下的一个媒体播放器,它对媒体格式的支持非常广泛,而且支持实时在线播放音视频流。Mplayer的移植过程如下: (1)、下载源代码MPlayer-current.tar.bz2,并解压。 2)、为了让mplayer支持在线播放,从而能够播放网络电台,还必须下载安装网络协议包(主要指RTSPMMS等协议)。可从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 ClieantDHCP Server申请获取IP地址。然后系统自动访问电台服务器,该服务器上有最近更新的世界各地的网络电台的URL地址,系统下载到该列表并更新原有列表后,自动连接列表的第一个网络电台。若在该过程中有按键产生,系统根据按键类型及当前状态调用相应的功能。系统主流程图如图7所示。 (a) (b)7 系统主流程图    

4 结束语

来源:http://hi.baidu.com/freedom_asic/blog/item/738b46d3abfbe531960a16e4.html