首页 基于嵌入式ARM-Linux的播放器的设计与实现

基于嵌入式ARM-Linux的播放器的设计与实现

举报
开通vip

基于嵌入式ARM-Linux的播放器的设计与实现基于嵌入式ARM-Linux的播放器的设计与实现 基于嵌入式ARM-Linux的播放器的设计与实现 摘要 随着21世纪的到来,人类进入了PC时代。在这一阶段,嵌入式技术得到了飞速发展和广泛应用。由此,本文提出了一种基于嵌入式ARM-Linux的播放器设计与实现的方案。 本文首先详细分析了ARM体系结构,研究了嵌入式Linux操作系统在ARM9微处理器的移植技术,包括交叉编译环境的建立、引导装载程序应用、移植嵌入式Linux内核及建立根文件系统,并且实现了嵌入式Linux到S3C2410开发板的移植。 由于嵌入式系统...

基于嵌入式ARM-Linux的播放器的设计与实现
基于嵌入式ARM-Linux的播放器的设计与实现 基于嵌入式ARM-Linux的播放器的设计与实现 摘要 随着21世纪的到来,人类进入了PC时代。在这一阶段,嵌入式技术得到了飞速发展和广泛应用。由此,本文提出了一种基于嵌入式ARM-Linux的播放器设计与实现的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 本文首先详细分析了ARM体系结构,研究了嵌入式Linux操作系统在ARM9微处理器的移植技术,包括交叉编译环境的建立、引导装载程序应用、移植嵌入式Linux内核及建立根文件系统,并且实现了嵌入式Linux到S3C2410开发板的移植。 由于嵌入式系统本身硬件条件的限制,常用在PC机的图形用户界面GUI系统不适合在其上运行。为此,本文选择了Minigui作为研究对象,在对其体系结构等方面进行研究基础上,实现了Minigui到S3C2410开发板的移植,完成了嵌入式图形用户界面开发,使得系统拥有良好的操作界面。 对于播放器,本文实现了Linux系统下的通用媒体播放器—Mplayer到S3C2410开发板的移植。通过对音频数据输出的研究,解决了Mp1ayer播放声音不正常的问题,实现了一个集音乐和视频播放于一体的嵌入式多媒体播放系统。 最后,总结了论文所做的工作,指出了嵌入式播放器所需要进一步解决和完善的问题。 关键词:嵌入式ARM-Linux; S3C2410; Mplayer; GUI界面; Minigui Player Designing and Implement Based On Embedded ARM-Linux Abstract Along with the 21st century arrivals, the humanity enters the post PC time. In this stage, embedded technology gets rapidly developed and widely used. So, this paper aims to design a player based on embedded ARM-Linux. First, in this paper, ARM architecture and the characteristic are analyzed in detail. The emphasis of the study is put on the porting techniques of embedded Linux operation system based on the ARM9 micro-processor, which include setting cross complier、transplanting Bootloader、transplanting embedded Linux kernel and setting root file system; Furthermore, implement the technique of transplanting Embedded Linux to S3C2410 board. GUI (Graphical User Interfaces) systems which are supported by normal PCs cannot run well on the embedded systems, just because of the restriction of the hardware of embedded devices. So, this paper selects Minigui as research object. Based on the Minigui architecture and its other aspects, the technique of transplanting Minigui to S3C2410 board is given in detail, and then an embedded GUI system is established and it also makes the handle interface friendly. About the player, this paper implements transplanting the universal player on Linux-Mplayer to S3C2410 board. By learning of audio data, it solves the problem of sound abnormality, and achieves an embedded multimedia system which could play audio and video files. Key words: Embedded ARM-Linux; S3C2410; Mplayer; GUI interface; Minigui 目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc199561211" 摘要 I HYPERLINK \l "_Toc199561212" Abstract II HYPERLINK \l "_Toc199561213" 目录 III HYPERLINK \l "_Toc199561214" 第一章 绪论 1 HYPERLINK \l "_Toc199561215" 1.1系统研究背景 1 HYPERLINK \l "_Toc199561216" 1.1.1 多媒体播放器与嵌入式系统 1 HYPERLINK \l "_Toc199561217" 1.1.2 嵌入式多媒体播放器国内外发展现状 1 HYPERLINK \l "_Toc199561218" 1.2 嵌入式处理器 3 HYPERLINK \l "_Toc199561219" 1.3 嵌入式系统 4 HYPERLINK \l "_Toc199561220" 1.3.1嵌入式系统的概述 4 HYPERLINK \l "_Toc199561221" 1.3.2 嵌入式系统的选择 6 HYPERLINK \l "_Toc199561222" 1.4 本文的意义和主要工作 7 HYPERLINK \l "_Toc199561223" 第二章 系统软硬件平台的搭建 8 HYPERLINK \l "_Toc199561224" 2.1 硬件开发平台的介绍 8 HYPERLINK \l "_Toc199561225" 2.1.1 核心板 8 HYPERLINK \l "_Toc199561226" 2.1.2 外设板 8 HYPERLINK \l "_Toc199561227" 2.1.3 设计所用硬件介绍 9 HYPERLINK \l "_Toc199561228" 2.2 硬件平台的设计方案 9 HYPERLINK \l "_Toc199561229" 2.2.1 核心板设计 9 HYPERLINK \l "_Toc199561230" 2.2.2 外设电路设计 14 HYPERLINK \l "_Toc199561231" 2.3 嵌入式软件开发环境 15 HYPERLINK \l "_Toc199561232" 2.3.1 引导装载程序 16 HYPERLINK \l "_Toc199561233" 2.3.2 宿主机开发环境配置 17 HYPERLINK \l "_Toc199561234" 2.3.3 交叉开发环境的建立 18 HYPERLINK \l "_Toc199561235" 2.3.4 内核的编译 18 HYPERLINK \l "_Toc199561236" 2.3.5 烧制内核映像和文件系统 20 HYPERLINK \l "_Toc199561237" 2.4 嵌入式图形用户界面的实现 21 HYPERLINK \l "_Toc199561238" 2.4.1 图形用户界面minigui的简介 21 HYPERLINK \l "_Toc199561239" 2.4.2 MiniGUI在S3C2410开发板上的移植过程 21 HYPERLINK \l "_Toc199561240" 第三章 Mplayer的移植 24 HYPERLINK \l "_Toc199561241" 3.1 Mplayer的简介 24 HYPERLINK \l "_Toc199561242" 3.2 Mplayer的移植 24 HYPERLINK \l "_Toc199561243" 3.2.1 安装交叉编译工具及解压源代码 24 HYPERLINK \l "_Toc199561244" 3.2.2 编译Mplayer 25 HYPERLINK \l "_Toc199561245" 3.3 调试 26 HYPERLINK \l "_Toc199561246" 第四章 嵌入式播放器Mplayer的设计 30 HYPERLINK \l "_Toc199561247" 4.1 播放器的工作流程 30 HYPERLINK \l "_Toc199561248" 4.2 播放器的逻辑结构 30 HYPERLINK \l "_Toc199561249" 4.3 Mplayer播放器的目录文件组织结构 31 HYPERLINK \l "_Toc199561250" 4.4 播放器对解码器和输出设备的管理方式 33 HYPERLINK \l "_Toc199561251" 第五章 总结与展望 35 HYPERLINK \l "_Toc199561252" 5.1 本文主要完成的工作及结论 35 HYPERLINK \l "_Toc199561253" 5.2 完善与展望 35 HYPERLINK \l "_Toc199561254" 致谢 36 HYPERLINK \l "_Toc199561255" 参考文献: 37 第一章 绪论 1.1系统研究背景 从上世纪末开始,随着计算机和电子技术的发展走上快车道,便携式电子设备,诸如智能手机,个人电子助理(PDA)的运算存储能力和通信能力都得到了长足的进步,便携式设备的用户界面也变的越来越友好,从早期的只能显示单色文字的LED,发展到现在大尺寸6万色彩色液晶屏幕。因此,用户已经不再仅仅满足于早期的便携式电子设备提供的传统的,简单的语音通信或文档处理功能。随着多媒体技术发展,用户希望能够在轻巧的便携式设备上同样能够享受到过去只能在笨重的台式机或笔记本电脑上才能享受到语音甚至视频等多媒体服务。 1.1.1 多媒体播放器与嵌入式系统 随着芯片技术的快速发展,嵌入式系统的性能逐步提高,功能也越来越丰富。嵌入式系统在众多领域的应用给我们的生活带来了便利,并且对人们的生活方式的改变和生活质量的提高具有重要的影响。在这些领域中,消费电子产品的应用具有更为广泛的潜力,尤其是便携式消费电子产品。当前,消费类电子产品更新换代的速度进一步加快,市场需求不断增大。在MP3数码随身听取得巨大的市场成功后,支持视频的便携式播放器逐渐进入消费者的视线,成为继MP3之后的新一代数码影音娱乐平台。受MP3的影响,人们习惯的将这一类嵌入式多媒体系统称作MP4。 在法国Archos公司推出第一款MP4掌上影院后,众多企业均看好MP4的发展态势。新一代MP4良好的发展前景和潜在的市场,成为移动数码产业的新亮点,吸引着众多厂商大力研发,并将其推向市场。 除播放视频这一基本功能外,嵌入式多媒体系统还附带了若干增值功能,如音乐播放、图片浏览、游戏、调频收音、录音、电子 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 以及拍照、录像功能。 1.1.2 嵌入式多媒体播放器国内外发展现状 目前嵌入式多媒体的内部结构,比较成熟的解决方案有三种:基于 SigmaDesigns851x系列芯片的解决方案、基于 TlDM32ODSP+ARM处理器的解决方案和基于工 ntelPXA27x的解决方案,这三种解决方案是目前的主流方案。上述几种方案各有特点: (1)SigmaDesigns 851x 方案 SigmaDesignS851x处理器是目前性能最强、最全面的专业解码芯片,采用双核设计,将200MHz 32位RISC处理器和MPEG解码处理器集成于单芯片上,在无需其它外围芯片支持的情况下,完成系统所需各种接口的提供、系统处理以及流畅的 WMA V9、 DivXV3.11、 DivXV4.X和S.X、MPEG-4、MPEG-2、MPEG-1等音视频解码。其中对系统要求极高的MPEG-2解码, SigmaDesigns851x能轻松达到3OfpsDI,流畅自如,难能可贵! 优点:单芯片,低成本,低功耗;硬核视频解码,视频播放效果好 缺点:无法播放网络视频格式RM,RMVB等 (2)TI DM320 DSP-I-ARM处理器的解决方案 作为DSP巨头,TI力推DM320 DSP的PMP解决方案。TI方案是利用DM320 DSP进行音视频编解码处理,ARM处理器负责系统处理及提供外围设备接口。与SigmaDesigns方案一样,TI方案支持的媒体类型非常丰富,能支持WMV、 DivXV3.11、 DivXV4.X和5.X、MPEG-4、MPEG-2、MPEG-1等。但由于 TlDM320为纯DSP芯片,因此必须配合ARM处理器才能组成完整的解决方案,因此在成本上并不具备优势。 优点:支持的媒体类型丰富,编解码能力强 缺点:必须配合ARM处理器,成本不占优势,功耗较大;不支持网络视频格式RM,RMVB (3)Intel PXA27x 的解决方案 Intel公司于2003年底推出了性能最为强劲的PXA27x嵌入式处理器,最高频率可达624MHz。作为一款性能及其强劲的嵌入式处理器,配合嵌入式Linux或wince操作系统,PXA27x理论上可以支持任何媒体格式,并通过软件升级,支持未来媒体格式。但由于MPEG-2对硬件的极高要求,因此单纯依靠PXA27x处理器进行MPEG-2编解码是不现实的。Intel公司于2004年推出了2700G多媒体加速芯片,配合PXA270进行视频加速与3D加速。同时,PXA27x加入了wireless MMX技术和SpeedStep动态电源管理技术,不但大大增强了PXA270的媒体处理能力,而且极大降低了系统功耗,延长PMP产品的电池寿命。 2700G的加入,更使PXA27x方案成为全能解决方案,不但完美解决了MPEG-2编解码问题,更使基于PXA27x的PMP产品能向多功能化发展,可以加入游戏、摄像等功能,成为个人娱乐终端。 优点:支持目前所有的媒体类型,可通过软件升级支持未来媒体类型;接口丰富,可支持SD、MS、CF等;支持最大400万象素摄像头;支持动态电源管理,功耗低 缺点:成本可能较高 目前市面上还有其它几种非主流方案,如PxA255解决方案、Sunplus SPCA536解决方案、 Freescalei.MX21解决方案等。基于PXA255的方案特点是功耗较低,且能够支持较多的媒体格式,但缺点是无法支持大尺寸图像的编解码,如MPEG-2等。 Sunplus SPCA536解决方案价格低廉,但仅支持MPEG-4编解码与JPEG,支持媒体类型单纯,功能单一 ;FreeSCalei.MX21芯片原为智能手机专门设计,接口类型比较丰富,但音视频处理能力一般,无法进行流畅的MPEG-4播放,无法处理MPEG-2视频。 由于PMP(便携式多媒体播放器)产品的研发难度较大,目前市面上的大多数PMP产品均为国外或台湾设计。中国大陆消费类娱乐产品的生产商因研发能力普遍较低而无法自己研发产品,因此未来中国大陆PMP设计制造将更多的按照生产商 +Design House的模式进行,这样生产商可以充分发挥自己的渠道和规模优势,而 Design House则发挥自己的强设计能力和低营运成本优势,双方合作则能够共同把PMP市场做大、做强。 国内目前也有进行PMP方案设计的公司,如南京东集公司 (www.seuic.com),采用的是Intel嵌入式处理器PXA255方案。采用SigmaDesignS解决方案的公司主要集中在深圳,如深圳市深视通科技开发有限公司(www.sstvision.com),该公司目前己经设计出了基于 SiglnaDesigns85n处理器的成熟的PMP解决方案,并制作了DEMO。而 TIDM320方案,目前主要依靠TI合作伙伴美国Ingenient公司推广[1]。 1.2 嵌入式处理器 嵌入式处理器是嵌入式硬件平台的核心,负责系统事件的响应、任务的调度、外围器件的控制以及信号的处理。嵌入式处理器是由通用计算机中的CPU演变而来的。它的特征是32位以上,具有较高的性能。与通用计算机中的CPU不同的是,嵌入式处理器在实际嵌入式应用中只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。嵌入式处理器体积小、功耗低、成本低、可靠性高的优点使其在互联网、通信、消费类电子等多个领域得到了广泛的应用。目前主要的嵌入式处理器按体系结构不同可分为五大类:ARM、MIPS、POWERPC、x86和SH系列。 ARM内核是由ARM公司开发的一系列32位RISC处理器内核,当前有6个系列的产品:ARM7,ARM9,ARM9E,ARM10E,SecurCore以及最新的ARM11系列。目前业界可以提供ARM内核处理器的著名半导体公司有Intel,TI,Freescale, Analog Devices, Cirrus Logic和Samsung等。本课题设计采用的S3C2410处理器就是Samsung提供的一款采用32位ARM内核的处理器。 S3C2410 内部集成了微处理器和一些手持设备的常用外围组件, 特别适用于手持产品。S3C2410微处理器是一个多用途的通用芯片,它内部集成了微处理器和常用外围组件,可用于各种领域。它是应用于手持设备的低成本实现,提供了更高性价比。 HHARM2410 套件由核心板和底板(外设板或称基本板)组成,核心板上集成Samsung S3C2410 处理器,64M SDRAM以及16M 的FLASH,为您的应用研发提供了足够的空间。底板上则提供以下外设接口:一个四线RS-232 串口(COM1), 一个USB HOST接口, 一个10M/100M自适应以太网接口, 一个TFT LCD接口, 一个触摸屏接口。核心板和底板配合即构成一个最小的完整应用系统。系统具有体积小、耗电低、处理能力强、等特点,能够装载和运行嵌入式Linux 操作系统。用户可以在这个系统平台上进行自主软件开发。HHARM2410 套件中提供底板硬件电路图及硬件设计文档,极大的方便了用户进行硬件扩展开发。 HHARM2410套件提供完备的嵌入式Linux 开发环境及丰富的开发调试工具软件。 S3C2410 微处理器的精彩特性[2]: ARM920T 嵌入式处理器内核,主频可达203MHz; 扩展总线最大频率100MHz; 32 位数据,27 位外部地址线 ; 完全静态设计(0-203M) ; 存储控制器(八个存储体) : 包含 RAM(SDRAM)控制器,NAND 控制器 ; 复位时引导芯片选择(8-,16-比特存储或NAND 可供选择) ; 四个带有PWM 的16 位定时器 多达 55 个中断源的中断控制器 ; RTC; 三个UART ,Supports IrDA 1.0; 四个 DMA 通道; (支持外设 DMA) 8通道,500KSPS,10-bit ADC; 支持 STN  与 TFT LCD 控制器; 看门狗; IIS音频接口; 两个USB口; IIC-Bus接口; 两个串行外围接口电路(SPI) SD卡接口; HHARM2410开发套件硬件主要结构: Sumsung S3C2410 处理器 16Mbytes 16 位FLASH 64Mbytes 32 位SDRAM 一个四线 RS-232 接口 一个 10M/100M 自适应以太网接口 一个TFT LCD 接口, 一个触摸屏接口。 JTAG 接口 9V 直流电源 H/W 复位建 运行状态指示LED 灯 1.3 嵌入式系统 1.3.1嵌入式系统的概述 嵌入式系统的定义如下:是一种以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。由嵌入式系统的定义可见,嵌入式系统具有以下几大特点: (1) 技术密集 嵌入式系统是将先进的计算机技术、半导体技术和电子技术以及各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、不断创新的知识集成系统。 (2) 专用性强 嵌入式系统是与应用紧密结合的,具有很强的专用性。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也要根据系统硬件的变化不断进行修改。同时针对不同的任务,往往需要对系统进行较大的更改,程序的编译下载要和系统相结合。 (3) 系统精简 嵌入式系统必须根据应用需求可对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。因此目前嵌入式系统的开发一般是先建立一个相对通用的软硬件平台,然后在其基础上进行裁剪和精简,开发出适应各种需要的系统。一般而言,嵌入式系统的结构自底向上可分为3个部分,如图1-1所示 图1-1 嵌入式系统的结构 嵌入式硬件平台是整个嵌入式操作系统和应用软件运行的基础。不同的应用通常有不同的硬件平台,但是基本的结构是相同的,通常包括嵌入式处理器、存储器和输入输出(工/0)接口,如图1-2所示[1]。 图1-2 嵌入式硬件平台结构 1.3.2 嵌入式系统的选择 现今,与嵌入式应用相结合的嵌入式操作系统有VxWorks、Linux、WinCE、 COS-II等,他们各有其特点,相比较而言,嵌入式Linux更具有优势。归纳起来,嵌入式Linux至少具有以下优势[3]:   (1)开放的源码,丰富的软件资源   Linux是自由的操作系统,它的开放源码使用户获得了最大的自由度。Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到。   (2)功能强大的内核,性能高效、稳定,多任务   Linux的内核非常稳定,它的高效和稳定性已经在各个领域,尤其在网络服务器领域,得到了事实的验证。Linux内核小巧灵活,易于裁减,这使得它很适合嵌入式系统的应用。   (3)支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等   目前,Linux已经被移植到数十种硬件平台上,几乎支持所有流行的CPU。   (4)完善的网络通讯、图形、文件管理机制   Linux自产生之日起就与网络密不可分,网络是Linux的强项。另外,Linux还支持多种文件和图形系统。   (5)支持大量的周边硬件设备   Linux上的驱动已经非常丰富了,它们支持各种主流硬件设备和最新硬件技术。   (6)大小、功能都可定制   Linux秉承Unix的优秀设计思想,非常灵活,各部分的可定制性都很强。   (7)良好的开发环境,不断发展的开发工具集   Linux有着非常优秀的完整开发工具链,有十几种集成开发环境,其中很多是免费的,大大降低了开发费用。   (8)软件开发者的广泛支持   Linux的自由精神吸引了成千上万的程序员投入到Linux的开发和测试中来,这使得Linux在短时间内就成为一个功能强大的操作系统。   (9)价格低廉   有效降低产品成本,对成本敏感的嵌入式系统来说至关重要,Linux恰好具有这一特性。 正是这些优势,嵌入式Linux系统的研发热潮正在蓬勃兴起,并且占据了很大的市场份额,除了一些传统的Linux公司(如RedHat、Monta Vista等)正在从事嵌入式Linux的开发和应用之外,IBM、Intel、Motorolar等著名企业也开始进行嵌入式Linux的研究[4]。 嵌入式图形用户界面(Graphics User Interface)系统是嵌入式实时操作系统的一个重要组成部分,随着嵌入式系统硬件设备可获得性的提高和价格的不断降低及嵌入式系统应用范围的不断扩大,嵌入式GUI系统的重要性越来越突出,特别是对高性能嵌入式人机图形交互界面的要求也越来越迫切,比如消费电子和工业实时控制系统[5][6][7]。这些系统对GUI的基本要求包括: 轻型、占用资源少 高性能 高可靠性 可配置 此外,适合嵌入式Linux的GUI还要求是开放源码的自由软件[8]。 时代的发展告诉我们,图形用户界面GUI的应用加速了计算机的普及广度,嵌入式技术的发展加速了计算机的普及深度,后PC时代呼唤着两者日益紧密的结合[9]。所以对二者的研究有着深刻的意义。 1.4 本文的意义和主要工作 本文在研究嵌入式系统开发技术的基础上,提出了一套满足要求的低成本的嵌入式多媒体终端的解决方案。通过对系统的功能需求分析以及市场上主流处理器的功能和性能分析,选择了华恒公司的HHARM9-EDU-R3实验平台和Red Hat 9.0 Linux分别作为系统的硬件和软件开发平台。 本文的主要工作包括三方面的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ,首先,基于ARM平台开发相应的引导 加载程序、构建嵌入式Linux操作系统;第二,针对ARM处理器和Linux操作 系统特点进行音视频解码器的设计和研究;第三,对系统进行验证;论文的主要结构如下: 第二章 系统软硬件平台的搭建。包括ARM处理器及硬件核心部件介绍、bootloader实现、交叉开发环境建立、Linux移植、minigui移植等; 第三章 Mplayer到开发板的移植。Mplayer为Linux下通用的媒体播放软件,但非为嵌入式系统而设计,然而其强大的功能却是嵌入式系统所需要的。为此本章完成其到开发板的移植,来完善嵌入式系统对音视频文件的支持; 第四章 嵌入式播放器Mplayer的设计,针对播放器Mplayer整体结构设计及数据处理流程到诸如分流器,音、视频解码,音、视频同步等各个关键功能模块作描述。 最后,对论文进行总结与展望。 第二章 系统软硬件平台的搭建 2.1 硬件开发平台的介绍 本设计使用的硬件开发平台是华恒科技的HHARM9-EDU-R3教学实验系统,此平台由核心板和外设板组成,下面分别对这两部分进行介绍[10]。 2.1.1 核心板 核心板的功能模块结构图如图2-1所示,板上集成Samsung S3C2410处理器,16M的FLASH和64M SDRAM,它能为我们的研发、应用提供足够的空间。 图2-1 核心板功能模块结构图   S3C2410是一款16/32-bit RISC(精简指令集)高性价比,低功耗,体积小,高性能,高集成度的微处理器,采用203MHZ的ARM920T内核。集成了16KB指令缓存和16KB数据缓存,利用MMU实现对虚拟内存的管理,支持TFT LCD屏,支持NAND FLASH。正是由于S3C2410的这些特点,才使核心板的模块组成成为可能,也为Linux系统的移植提供必要的硬件资源。 2.1.2 外设板   外设板为核心板的应用提供了其它的接口和设备,它提供以下外设接口: (1) 10M/100M自适应以太网接口一个; (2) 四线RS-232 串口(COM1)一个; (3) 四线RS232/RS485串口各一个(COM2、COM3); (4) IDE/CF卡接口; (5) SD/MMC卡接口; (6) USB HOST接口一个; (7) USB Device接口一个; (8) TFT LCD接口; (9) 触摸屏接口; (10) 音频输入输出接口,麦克风接口; (11) A/D,D/A接口; (12) PS/2接口; 核心板和底板是通过一个144针的插槽相接,它们配合后即构成一个完整的应用系统。 2.1.3 设计所用硬件介绍   首先,核心板是必不可少的部分,它是一个最小系统。 其次,本设计是一个人机交互界面设计的应用,故需要一个LCD显示屏和触摸屏,通过以上的TFT LCD接口和触摸屏接口与外设板相接. 最后,设计的调试需要通过在PC Linux上运行minicom与开发板通信,所以需要使用到一个串口,并且,内核文件等镜像的下载需要网络接口,故开发板上的网络接口就必不可少了。 以上的设备即构成本设计中必需的硬件开发平台,缺一不可。 2.2 硬件平台的设计方案 参考华恒HHARM9-EDU-R3教学实验平台的硬件电路设计,为了减小难度,增加通用性,我们可以选用跟实验平台相似的设计,把整个硬件电路设计成两个主要部分:核心板和外设板,两者通过插槽接口相接,功能的扩展只需通过对外设板的修改来达到。 2.2.1 核心板设计 核心板的正面俯视图如图2-2所示: 根据功能模块分别介绍各个主要组成部分: (1) 存储部分构成 核心板内存由图2-2中两块HY57V561620CT为16M*16位数据宽度的SDRAM构成,两片拼成32位模式,公用nGCS6片选空间,共64M RAM。通过参考s3c2410技术手册的内存映像地址,如图2-3,可以知道内存的起始地址为0x30000000[12]。 核心板还集成有一片8M*16位数据宽度的INTEL 28F128J3C FLASH,通过nGCS0作为片选,从图2-3可知,起始地址为0x00000000。 根据地址的分配与片选设置,我们设计的核心板存储部分电路图如图2-4和图2-5所示,从图2-4中可以看到,FLASH使用的地址线为MA1到MA24,而使最高位A0接地,这 图2-2核心板正面俯视图 图2-3 s3c2410 内存映射 样使得FLASH的0地址为0x01000000,以后内核等的烧写地址也是以此为准。数据地址线为MD0到MD15,正好为16位的数据宽度。 从图2-5可见,两片内存使用的地址线为MA2到MA25,而数据线分别为MD0-MD15和MD16-MD31,由于共用地址线和片选nGCS6,而分别使用32位数据线,所以这两片16位宽度的内存共同组成了32位宽度的内存存储空间。 图2-4 FLASH电路接线 图2-5内存电路接线 (2) 供电部分构成 核心板的供电部分由LV14A 六角施密特触发倒相器(HEX SCHMITT-TRIGGER INVERTERS)和AMS 1117 800mA低门限稳压器(800mA Low Dropout Voltage Regulator)构成,具体电路如图2-6和图2-7所示: 图2-6 LV14A电路 图2-7 AMS 1117电路 从图中还可以看到,核心板还有相应的电源指示灯D5 LED,当核心板接收到reset信号时,指示灯灭,而正常工作状态,指示灯亮。 (3) 振荡电路部分构成 核心板的振荡电路由两个晶振电路组成,如图2-8。 12MHz的晶振与s3c2410的XTIpll、XTOpll两个管脚相接,为内部振荡电路提供振荡源(for internal OSC circuit)。32.768KHz晶振与XTIrtc、XTOrtc两个管脚相接,作为实时时钟(Real Time Clock,RTC)振荡源[11]。 图2-8 振荡电路 图2-9 DIMM 144引脚说明 (4) 与外设板接口部分 核心板与外设板是通过144针的插槽相接的,主要把核心板电路中的16根存储数据线DM0-DM16、24根存储地址线MA0-MA23、8根外部中断引线EINT0-EINT7、两路UART数据线与控制线、通用接口GPIO、IIC、SPI以及其它的读写信号、控制线等引出供外设板调用。详细请参见图2-9。 这里只使用到了144针的插槽接口,而没有使用168线的内存条接口插槽或者PCI插槽,是由于168线需要用到金手指,走线很密,而且工艺要求高,两层板布线很难实现,可能需要4层板才能完成,对于学校项目设计来说难度很大,而这样增加难度是没有必要的,因为144针的接线已经基本能够满足实际需要,通过以上的接口可以连接通常使用的器件,如本项目需要使用到的LCD和触摸屏等。 2.2.2 外设电路设计 本设计中需要使用到的外设有LCD显示屏和触摸屏,并且作为一个应用平台,外设电路不再包括有调试用的COM接口和网络接口。因为软件的调试可以先在HHARM9-EDU-R3平台上测试好后,再把核心板放到外设电路板上进行实测。 (1)LCD显示屏模块接口 基于电路设计的模块化,我们把LCD显示屏与外设板分开,使用40针的数据线进行联接,因为LCD屏及其外围电路通常可以整块地进行购买,这样设计也即省下了不必要的电路设计的麻烦。LCD屏我们选用HHARM9-LCD-R4模块,屏幕的大小为240x320象素, LCD屏模块接口电路如图2-10所示。 图2-10 LCD屏模块接口电路 (2)触摸屏电路 触摸屏控制器选用ADS7846,由于触摸屏与LCD显示屏是贴在一起的,所以ADS7846的采集信号输入也是通过LCD显示屏模块接口引线接出来的,如图2-10中的RIGHT、LEFT 、UPPER、DOWN引脚。通过对这四路输入信息的转换,即可把触摸屏上响应的电压信息转换成相应的坐标信息。ADS7846电路如图2-11所示。 图2-11 触摸屏控制器ADS7846电路 2.3 嵌入式软件开发环境 本文设计的播放器是基于嵌入式Linux操作系统进行设计。嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。相对于WinCE、pSOS、palm05等商用实时操作系统(RTOS)它具有源码开放、易移植、模块化、资源丰富等优势。支持多线程、多进程;支持多种平台,如x86、PowerPC、ARM、MIPS等等。如图2-11所示,它是由一个内核和一些可以定制系统模块组成,如文件模块,网络模块,各种驱动模块等。针对本应用,对其进行了裁剪和配置,只包含了系统所需的模块支持ext2\jffs2等文件系统;内存驱动模块提供内存管理功能;网络接口模块支持以太网接口;GPIO驱动模块主要是提供给键盘和触摸屏使用;图形驱动模块是图形用户界面(GUI)和图像显示的底层支撑模块;音频设备输出驱动模块支持音频数据的数模转换。 图2-12 嵌入式Linux体系结构 2.3.1 引导装载程序 BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。最终,bootloader把操作系统内核映像加载到RAM中,并将系统控制权传递给它。 Bootloader程序与硬件平台有很强相关性,不同开发板需要不同的bootloader。与Linux一样,网上有很多开放源代码的bootloader,在为自己的开发板写bootloader程序时,可以先找到与硬件平台相类似的bootloader,然后只要做一些改动就可以在开发板上运行了。 Bootloader的功能相当于一个通信控制器,有了它之后,才可以通过串口或网口完成内核的加载和应用程序的烧写。当然,利用JTAG技术也可以完成上述任务,但是,JTAG烧写速度很慢[12]。 本系统采用的是ppcboot,ppcboot在嵌入式系统中相当于PC机的BI0S加上操作系统引导头部的内容,并且引导操作系统进行装载和运行,ppcboot启动后有一系列的命令,使得我们能够方便地对FLASH、RAM进行操作,同时ppcboot己经对系统的频率、定时器进行了设置,初始化了一个调试串口,这样可以通过串口或以太网进行数据的下载。PPCBoot的主要特点如下表所示[13]: 功能 描述 系统加载 支持NFS、以太网挂载操作系统和根文件系统 内存操作 支持内存查看、修改和比较 设备驱动 支持串口、FLASH、外部SDRAM、EEP、ROM、LCD、USB、PCI等驱动 上电自检 自动 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 FLASH、SDRAM选型及使用情况,CPU类型 交互命令 通过设定和访问环境变量灵活配置系统各项参数,灵活升级 其他特点 支持在线读写Flash,支持SCC/FCC以太网、TFTP引导、IP和MAC的预置功能 表2-1 PPCBoot的主要特点 2.3.2 宿主机开发环境配置 (1)安装Linux系统 宿主开发环境,我们选用在windows下安装VMware WorkStation虚拟机+RedHat Linux 9.0的组合来组建[2]。 在虚拟机中安装Linux系统,我们选择自定义安装(Custom),安装过程中先不用指定PC机上网卡的IP地址,在配置防火墙(Firewall)时,选择不安装防火墙(No Firewall),在选择软件Package时选择完全安装,即最后一项:Everything,这一项非常重要,这样安装会装上一些无用的东西而浪费一点磁盘空间,但是却可以避免以后使用中找不到某个程序的烦恼。 (2)NFS和TFTP服务器的配置 这里设置开发环境的网络环境,首先设置PC机的IP地址为192.168.2.111,因为HHARM9开发平台在烧写时默认的IP为192.168.2.222,所以建议PC机也在此网段(192.168.2.X),故我们选择了此IP地址。 然后配置NFS服务器,它是用于网络文档的共享之用的,可以把网络上的某个服务器的内容mount到本PC上,达到在本机访问网络服务器的目的。 最后配置TFTP服务器,它是用于在网络中传送大型文件时用的,通过它可以方便进行文件的传输。以上的详细配置可以参见参考文献[2]中“NFS和TFTP服务器的配置”一节。 开发板上程序的调试与这两个服务器分不开,需要使用NFS的mount命令来共享宿主机目录的,而把宿主机上的镜像文件下载到开发板的内存中去则需要使用TFTP服务器,所以这两个配置非常重要。 (3)minicom的配置 minicom是一个RedHat Linux9.0自带的通信终端程序,通过minicom可以设置、监视串口工作状态,接收、显示串口收到的信息,并且在主机和开发板之间传递数据和控制指令,从而实现通过主机上调试开发板的目的。 首先在shell下运行ln -sf /dev/ttyS0 /dev/modem来设置使用第一个串口,然后设置minicom的配置文件/etc/minirc.dfl为 pr port /dev/ttyS0 pu baudrate 115200 pu minit pu mreset pu rtscts No 它表示端口为/dev/ttyS0、波特率为115200、数据位8位、停止位1位、无奇偶校验位、无数据流控制。 2.3.3 交叉开发环境的建立 PC Linux上的编译器安装于/usr/bin目录下,这是在完全安装RedHat Linux时已经安装好的,但是对于交叉编译,需要交叉编译器来生成可以在ARM开发板上执行的二进制应用程序。 我们安装的是ARM板的交叉编译器,可以上网去下载编译器,也可以使用华恒实验箱自带的编译工具。这里我们使用后者,安装华恒的光盘后,即可在/opt/host/armv4l/bin目录下安装了交叉编译器[2]。 为了以后使用的方便,我们还可以在可执行程序的路径加入到PATH中去: #vim ~/.bashrc 在.bashrc最后面加上一句 export PATH=”$PATH:/opt/host/armv4l/bin” 再执行 #source .bashrc 重启环境变量。当需要使用时就可指出编译器的位置。 2.3.4 内核的编译 安装华恒提供的光盘时,嵌入式 Linux 内核及设备驱动源代码(光盘安装后建立完备的开发环境)被安装到/HHARM2410/kernel 目录下,交叉编译的工具如下表2-2所示被放置到/opt/host/armv4l目录下。 表2-2 交叉编译的工具 GNU 工具集 armv4l-unknown-linux-gcc armv4l-unknown-linux-cc1plus armv4l-unknown-linux-ranlib armv4l-unknown-linux-as armv4l-unknown-linux-objcopy armv4l-unknown-linux-strings armv4l-unknown-linux-ld armv4l-unknown-linux-objdump mv4l-unknown-linux-gdb armv4l-unknown-linux-g++ armv4l-unknown-linux-strip Armv4l-unknown-linux-gasp armv4l-unknown-linux-cc1 armv4l-unknown-linux-nm Armv4l-unknown-linux-size armv4l-unknown-linux-cpp armv4l-unknown-linux-ar Armv4l-unknown-linux-addr2line cd /HHARM2410-R3/kernel make zImage 编译完成后,就会自动把zImage复制到/tftpboot/目录下以供 TFTP 下载。 如果需要对内核进行配置和裁剪,可以在/HHARM2410/kernel 目录下键入 make menuconfig 则出现如下界面,可逐项对内核和驱动模块进行选择和配置: 可见内核版本为:Linux Kernel v2.4.18-rmk7-pxa1 图2-13 配置内核 一些关键的设置: System Type ---> (S3C2410-based) ARM system type --- S3C2410 Implementation [*] SMDK (MERI TECH BOARD) [*] change AIJI < > S3C2410 USB function support --- Processor Type [*] ARM920T CPU idle [*] ARM920T I-Cache on [*] ARM920T D-Cache on [ ] Force write through caches on ARM920T [ ] Support Thumb instructions (experimental) 完成自己的设置后,退出,保存配置,然后执行 make zImage即可编译生成自己定制的内核映像文件,并自动被复制到/tftpboot/目录下以供烧写。 2.3.5 烧制内核映像和文件系统 内核映像和文件系统烧写的大致过程如下: (1)在PC机启动minicom,按复位键重启开发板,在minicom 中应该有启动信息,立即按空格键或回车键,让开发板停留在ppcboot的提示符“SMDK2410 #”,进行以下烧写; (2)下载、烧写内核 zImage,tftp 0x30008000 zImage //通过TFTP 下载内核 fl 0x40000 0x30008000 0xe0000 //烧写刚下载的文件到指定的位置。 (3)下载、烧写文件系统 ramdisk.image.gz; tftp 0x30800000 ramdisk.image.gz //通过TFTP下载ramdisk文件系统 fl 0x140000 0x30800000 0x240000 (4)下载、烧写cramfs文件系统和JFFS2 文件系统, tftp 0x30008000 cramfs.img //通过 TFTP 下载cramfs文件系统 fl 0x540000 0x30008000 0x200000 tftp 0x30008000 jffs2.img //通过TFTP 下载 jffs2 文件系统 fl 0x700000 0x30008000 0x200000 烧完后重新启动开发板,便可以从flash里面读出配置的内核以及根文件系统并运行Linux。 2.4 嵌入式图形用户界面的实现 2.4.1 图形用户界面minigui的简介 自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统。MiniGUI 系统也逐渐成熟,应用到各种嵌入式系统中,包括PDA、机顶盒、DVD、MP4播放器等。本文讲解基于 Linux 和 MiniGUI 的嵌入式系统软件开发,,其内容不仅仅限于 MiniGUI 的编程,还会涉及到一些 Linux 下嵌入式系统软件开发的技巧,包括交叉编译环境的建立,根文件系统的生成等。 MiniGUI 是由北京飞漫软件技术有限公司拥有版权并主持和维护的自由软件,遵循 GPL 条款发布(1.2.6及之前的版本以LGPL条款发布),其目标是为实时嵌入式 Linux/ Clinux、eCos、 C/OS-II、VxWorks 等操作系统建立一个快速、稳定和轻量级的图形用户界面支持系统。与QT/Embeddoed、MicoroWindows等其他GUI相比,MiniGUI最大的特点是占用资源少,在主频为66M的ARM7内核也能够稳定的运行。经过几年的发展已经发布了很多的版本,现在比较稳定的是1.3.x版本,而且源码是开放的,方便我们大家学习的研究。本文就是采用的此版本[14]。 2.4.2 MiniGUI在S3C2410开发板上的移植过程 (1) 交叉编译MiniGUI 首先,从网上下载三个源码包(http://www.minigui.org/访问网址超出本站范围,不能确定是否安全 继续访问 取消访问http://www.minigui.org/),同时可以下载到相应的用户手册[15]。 libminigui-1.3.x.tar.gz:MiniGUI 函数库源代码,其中包括libminigui、libmgext 和 libvcongui。 minigui-res-1.3.x.tar.gz: MiniGUI 所使用的资源, 包括基本字体、图标、位图和鼠标光标。 mde-1.3.x.tar.gz:MiniGUI的综合演示程序。 先安装MiniGUI的函数库,我们先在PC的根目录下建立一个名为minigui的目录,将下载的三个源码包全部复制到minigui目录下,再在minigui目录下建立一个名为miniguitmp的目录,用来存放生成的文件和minigui库函数。 解压libminigui-1.3.x.tar.gz(tar zxf libminigui-1.3.x.tar.gz ) 生成libminigui-1.3.x.目录,编写脚本文件配置lib内容如下: ./configure—host=arm-unknown-linux—enable=jpgsupport=no --enable-pngsupport=no—enable-gifsupport=no –disable-lite --prefix=/minigui/miniguitmp –enable-smdk2410ial=yes 保存为setup.sh host用于指明宿主机的类型disable-lite用来指定生成基于线程的minigui版本而不是生成基于进程的minigui版本prefix用于指定MiniGUI函数库的安装路径/minigui/miniguitmp,进入该目录运行./configure脚本文件,我们为了适合我们的开发板做了适当的修改,其他的开发板类似。 根据PC机的交叉编译环境安装的路径修改libminigui-1.6.x.目录下的configure文件,在文件的开头处加入编译器的安装路径,然后保存,笔者主机上交叉编译器安装路径是/usr/local/arm/,所以修改如下: CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc CPP=/usr/local/arm/3.3.2/bin/cpp LD=/usr/local/arm/3.3.2/bin/arm-linux-ld AR=/usr/local/arm/3.3
本文档为【基于嵌入式ARM-Linux的播放器的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_238503
暂无简介~
格式:doc
大小:989KB
软件:Word
页数:41
分类:互联网
上传时间:2011-04-19
浏览量:57