195.A基于ARM的智能手持设备MP3播放器的设计与开发本科毕业设计_第1页
195.A基于ARM的智能手持设备MP3播放器的设计与开发本科毕业设计_第2页
195.A基于ARM的智能手持设备MP3播放器的设计与开发本科毕业设计_第3页
195.A基于ARM的智能手持设备MP3播放器的设计与开发本科毕业设计_第4页
195.A基于ARM的智能手持设备MP3播放器的设计与开发本科毕业设计_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 ( 本科毕业设计说明书本科毕业设计说明书 学校代码:学校代码:xxxxxx 学学 号:号:xxxxxx 题题 目目: 基基 于于a a r r m m 的的 智智 能能 手手 持持 设设 备备m m p p 3 3 播播 放放 器器 的的 设设 计计 与与 开开 发发 学学生生姓姓名名 : x x x x x x 学学 院院 : 信信 息息 工工 程程 学学 院院 系系 别别: 计计 算算 机机 系系 专专 业业: 软软 件件 工工 程程 班班 级级: 软软 件件0 0 6 6 指指导导教教师师 : x x x x x x 副副 教教 授授 二二 一一 年年 六六月月 本文源码索取,请联系

2、qq:68661508 摘 要 随着消费类电子产业的蓬勃发展,越来越多的嵌入式电子产品走进了千家万 户,各式各样的嵌入式系统出现在了众多的行业和应用中,其中 arm 和 linux 结合的产品在市场上最受青睐。 本课题的嵌入式 mp3 就是基于 arm 和 linux 平台设计的。系统选用 s3c2440 开发板为硬件平台,移植 linux 嵌入式操作系统作为软件平台,在这样的 软硬件环境下设计实现了 mp3 播放器。 本文主要描述了 mp3 嵌入式系统的开发方法与步骤,首先安装并搭建了 linux 操作系统与嵌入式系统的交叉开发环境,然后是 uboot、linux 的裁剪和移 植,根文件系统

3、的制作以及核心驱动程序的开发。在应用程序开发中介绍了 mp3 的原理,mp3 的文件格式,实现了基于 libmad 的 mp3 应用程序的设计。 关键词:嵌入式;arm;linux;驱动程序;mp3 abstract with the booming of the consumptive electronics industry, more and more embedded electronic productsmore find its way into every family, various embedded systems apply to numerous industries

4、,among them,the products which combine arm and linux technology is most popular in the electronic market . the embedded mp3 in this subject is desighed by arm and based on linux platform. this system choose the s3c2440 development boards as the hardware platform, transplant the linux embedded operat

5、ing system as the software platform, i design and carry out the mp3 player in this environment that combine software and hardware. this paper describes the development of embedded system mp3, firstly, installation and building the intersection environment based on linux operating system and embedded

6、 system developing environment, then , cutting and transplantation linux and uboot , the production of the root file system and development of the core driver programme. in the development of application , the paper describes the principle of the mp3 ,the file format of mp3, realized the designing o

7、f mp3 application which based on libmad. keyword:embeded; arm; linux; driver program; mp3 目 录 引 言.1 第一章嵌入式系统概述.2 1.1 嵌入式系统简介.2 1.2 嵌入式国内发展现状.2 1.3 嵌入式系统的结构和组成.3 1.3.1 嵌入式处理器.4 1.3.2 嵌入式外围设备.4 1.3.3 嵌入式操作系统.4 1.3.4 嵌入式应用软件.5 1.4 嵌入式系统的开发过程.5 1.5 嵌入式 linux 开发流程 .5 1.6 arm 及 s3c2440 硬件平台.7 1.6.1 arm 简介

8、.7 1.6.2 arm 内核介绍.7 1.6.3 qt2440e 开发板介绍.8 1.7 嵌入式系统的发展趋势.9 第二章建立嵌入式开发环境.10 2.1 软件平台.10 2.1.1 嵌入式 linux介绍 .10 2.1.2 构建交叉开发环境.11 2.2 硬件平台.13 2.2.1 硬件平台介绍.13 2.2.2 硬件平台结构介绍.13 第三章 uboot 分析与移植.19 3.1 bootloader 简介.19 3.2 bootloader 的启动流程分析.19 3.3 u-boot 分析.20 3.4 烧写 u-boot 到 nandflash .28 第四章 linux 内核分析

9、与文件系统移植 .29 4.1 linux 内核移植 .29 4.1.1 linux 版本介绍.29 4.1.2 linux 启动过程.29 4.1.3 linux 内核移植.30 4.2 文件系统.34 4.2.1 嵌入式 linux文件系统.34 4.2.2 busybox 移植.35 4.2.3 根文件系统的制作.36 4.2.4 制作/烧写yaffs文件系统映像文件 .38 第五章 mp3 应用程序的设计.40 5.1 mp3 文件格式.40 5.1.1 概述.40 5.1.2 mp3 文件结构.40 5.1.3 mp3 文件结构分析.41 5.2 mp3 解码算法原理介绍.43 5.

10、3 基于 libmad 的 mp3 的程序设计.47 5.3.1 libmad简介.47 5.3.2 mp3 应用程序设计.47 结 论.51 参考文献.52 致 谢.53 引 言 随着社会的日益信息化、嵌入式系统的应用越来越广泛、计算机技术的发 展和微处理器工艺的改进,计算机和网络已经全面渗透到日常生活的每一个角 落,任何人都可以拥有从小到大的各种采用嵌入式技术的产品,小到 mp3、pda 等微型数字化产品,大到网络家电、智能家电、车载电子设备等, 嵌入式系统及其产品在由家电产品和 internet 衍生出来的新型市场中占有主导 地位和独特份额。 由于嵌入式系统是建立在特定的硬件系统之上,系

11、统的开发华硬件的关系 十分紧密,嵌入式开发板为方便调试与开发提供了丰富的外围设备和接口,通 过接口可以调试应用程序和打印输出调试信息。嵌入式开发板已成为学习嵌入 式操作系统的应用、熟悉硬件设备、学习编写硬件设备驱动、了解嵌入式操作 系统体系结构和嵌入式操作系统移植的有力工具。 基于 arm 核的微控制器芯片不但占据了高端微控制器市场的大部分市场 份额,同时也逐渐向低端微控制器应用领域扩展。arm 微控制器的低功耗、高 性价比使其以 70左右的市场占有率成为嵌入式解决方案中主流微处理器。因 此,本次设计工作主要围绕 arm9 芯片进行。 linux 近几年在嵌入式领域异军突起,成为非常有潜力的嵌

12、入式操作系统。 其代码的开放性、系统的稳定性、强大的网络功能以及优秀的文件系统支持, 在嵌入式设备特别是网络设备中得到了广泛应用。因此,选择 linux 作为本次设 计的嵌入式操作系统。 为了对嵌入式系统的开发过程有一定认识,学习一些嵌入式系统开发技术 和方法。这次设计将构建一个针对 arm 硬件平台的嵌入式 linux 操作系统, 然后在其基础上实现简单游戏的功能,最终实现手持游戏终端。 第一章 嵌入式系统概述 本章主要介绍嵌入式系统的基本概念、总体框架和基本组成,以及常见的 嵌入式系统发行版本。还有嵌入式 linux 的特点及其在嵌入式系所处的地位和 嵌入式 linux 在国内外发展概况和

13、发展趋势。 1.1 嵌入式系统简介 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用 于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计 算机系统。嵌入式系统与通用计算机系统的本质区别在于系统应用不同,嵌入 式系统是将一个计算机系统嵌入到对象系统中。这个对象可能是庞大的机器, 也可能是小巧的手持设备,用户并不关心这个计算机系统的存在。 嵌入式系统一般包含嵌入式微处理器、外围硬件设备、嵌入式操作系统和 应用程序 4 各部分。嵌入式领域已经有丰富的软硬件资源可以选择,涵盖了通 信、网络、工业控制、消费电子、汽车电子等各个行业。 嵌入式计算机系统与通用计算机系统相比

14、具有以下特点: 1.嵌入式系统是面向特定系统应用的。嵌入式处理器大多数是专门为特定应 用设计的,具有低功耗、体积小、集成度高等特点,一般是包含各种外围 设备接口的片上系统。 2.嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各行 各业。它是一个技术密集、资金密集、高度分散、不断创新的知识集成系 统。 3.嵌入式系统的硬件和软件都必须具备高度可定制性。只有这样才能适用嵌 入式系统应用的需要,在产品价格性能等方面具备竞争力。 4.嵌入式系统的生命周期相当的长。嵌入式系统应用到产品后,还可以进行 软件升级,它的生命周期与产品的生命周期几乎一样长。 1.2 嵌入式国内发展现状 随着技术进

15、步的不断加速,我们有理由相信计算机还将继续快速发展并进 一步改善我们的生活,让计算变得“无所不能”、“无处不在”。其中“无所不能” 将是人工智能技术和超级计算机的结合,而“无所不在”则是嵌入式技术应用的 广阔天地,现在普通消费者已经可以从市场中买到数码相机、移动电话、打印 机我们的生活,等众多的数码产品、航空设备、atm 机、计算机网络设备等电 子产品中都用到了嵌入式系统。 图 1-1 嵌入式软件架构 嵌入式控制器的应用几乎无处不在:移动电话、家用电器、汽车无不有 它的踪影。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点, 其应用已深入到工业、农业、教育、国防、科研以及日常生活等各

16、个领域,对各 行各业的技术改造、产品更新换代、加速自动化化进程、提高生产率等方面起 到了极其重要的推动作用。 嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的 外部设备中就包含了 5 - 10 个嵌入式微处理器。在制造工业、过程控制、网络、 通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面 均是嵌入式计算机的应用领域。 1.3 嵌入式系统的结构和组成 一般而言,嵌入式系统的体系结构可以分成四个部分:嵌入式处理器,嵌 入式外围设备,嵌入式操作系统和嵌入式应用软件。 1.3.1 嵌入式处理器 嵌入式系统的核心是各种类型的嵌入式处理器,其应具有很高的效率和可 靠

17、性。常用的嵌入式处理器可分为:低端的嵌入式处理器、中高端的嵌入式处 理器、用于计算通信领域的嵌入式 dsp 处理器和高度集成嵌入式片上系统 (soc) 。 目前几乎每个半导体制造商都在生产嵌入式处理器,全世界嵌入式处理器 已超过 1000 种,流行的体系结构有 30 多个系列,其中以 arm、powerpc、mc68000、mips 等最为广泛。 1.3.2 嵌入式外围设备 在嵌入式系统硬件系统中,除了处理器以外,用于完成存储、通信、调试、 显示等辅助功能的外围部件,都算作嵌入式外围设备。 目前常用的嵌入式外围设备按功能可以分为存储设备、通信设备和显示设 备三类。 储设备主要用于各类数据的存储

18、,常用的有静态易失性存储器 (ram,sram) 、动态存储器(dram)和非易失性存储器 (rom,eprom,eeprom,flash)三种;绝大多数常用的通信设备接口 都可以直接在嵌入式系统中应用,包括 rs232 串行通讯接口、串行外围设备 接口(spi) 、红外线接口(irda) 、通用串行总线接口(usb) 、ethernet 以太 网接口;嵌入式系统中的显示设备通常是阴极射线管(crt) 、液晶显示器 (lcd)和触摸板等。 1.3.3 嵌入式操作系统 为了使嵌入式系统的开发更加方便和快捷,需要有专门负责管理存储器分 配、中断处理、任务调度等功能模块,这就是嵌入式操作系统。嵌入式

19、操作系 统是用来支持嵌入式应用的系统软件,是嵌入式系统极为重要的组成部分,通 常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通讯协议、图 形用户界面(gui) 。它具有通用操作系统的基本特点,能够有效管理复杂的系 统资源,对硬件进行抽象,提供库函数、驱动程序、开发工具等。但在系统实 时性、硬件依赖性、软件固化性以及应用专用性等方面,嵌入式操作系统具有 更加鲜明的特点。 根据应用场合,嵌入式操作系统可以分成两大类:一类是面向消费电子产 品的非实时系统,如 windowsce 等,应用设备包括个人数字助理(pda) 、移 动电话、机顶盒(stb)等;另一类则是面向控制、通信、医疗领域的实

20、时操 作系统,如 vxworks、uc/os-ii 等。实时系统是一种能够在指定或者确定时间 内完成系统功能,并且对外部和内部事件在同步或者异步时间内能作出及时响 应的系统。在实时系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而 且与这些操作进行的时间有关。 1.3.4 嵌入式应用软件 嵌入式应用软件是针对特定应用领域,基于某一硬件平台,用来达到用户 预期目标的计算机软件。由于用户任务可能有时间和精度上的要求,嵌入式应 用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性 等方面能够满足实际应用的需要,而且还要尽可能进行优化,以减少对系统资 源的消耗,降低硬件成本。 1.4

21、 嵌入式系统的开发过程 由于嵌入式系统是应用于特定环境下面对专业领域的应用系统,具有与通 用计算机系统明显不同,因此其开发过程和开发环境同传统的软件开发相比有 着显著的不同。 嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件 开发三大部分。 在系统总体开发中,由于嵌入式系统与硬件依赖程度非常紧密,往往某些 需求只能通过特定的软件才能实现,因此需要进行处理器选型,以更好的满足 产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本上 和性能上作出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品 的性能和可靠性。 在硬件开发设计中,首先根据模型确定硬件需要实现的

22、功能,接着确定硬 件的构成,并确定数据的控制流程,完成结构化设计,然后是硬件逻辑设计, 最后是物理硬件实现,以开发板的形式出现。 在软件设计过程中,根据需要实现的任务划分各个模块,通过交叉开发环 境实现目标代码,完成系统测试。 1.5 嵌入式 linux 开发流程 在一个嵌入式系统中使用 linux 开发,根据应用需求的不同有不同的配置 开 发方法,但是一般都要经过如下的过程: 1. 建立开发环境 操作系统一般使用 redhat-linux,选择定制安装或全部安装,通过网络下 载相应的 gcc 交叉编译器进行安装(例如 arm-linux-gcc、arm-clibc-gcc) ,或 者安装产品

23、厂家提供的交叉编译器。 2. 配置开发主机 配置 minicom,一般的参数为波特率为 115 200bps,数据位为 8 位,停止 位为 1,无奇偶校验,软件硬件流控设为无。在 windows 下的超级终端的配置 也是这样的。minicom 软件的作用是作为调试嵌入式开发板的信息输出的监视 器和键盘输入的工具。配置网络,主要是配置 nfs 网络文件系统,需要关闭防 火墙,简化嵌入式网络调试环境设置过程。 3. 建立引导装载程序 bootloader 从网络上下载一些公开源代码的 bootloader,如 uboot、blob、vivi、lilo、arm-boot、red-boot 等,根据自

24、己具体的芯片进行移植 修改。有些芯片没有内置引导装载程序,例如三星的 arm7、arm9 系列芯片, 这样就需要编写开发板上 flash 的烧写程序,网络上有免费下载的 windows 下 通过 jtag 并口简易仿真器烧写 arm 外围 flash 芯片的烧写程序,也有 linux 下的公开源代码的 j-flash 程序。如果不能烧写自己的开发板,就需要根据自己 的具体电路进行源代码修改。这是系统正常运行的第一步。 4. 下载 linux 操作系统 如 clinux、arm-linux、ppc-linux 等,如果有专门针对所使用的 cpu 移植好的 linux 操作系统那是再好不过的,下载

25、后再添加自己的特定硬件的驱 动程序,进行调试修改,对于带 mmu 的 cpu 可以使用模块方式调试驱动,对 于 clinux 这样的系统则需编译进内核进行调试。 5. 建立根文件系统 从 下载使用 busybox 软件进行功能裁减,产生一个最基 本的根文件系统,再根据自己的应用需要添加其他程序。默认的启动脚本一般 都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位 置位于/etc 目录下,包括:/etc/init.d/rc.s、/etc/profile、/etc/.profile 等,自动挂 装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统 在

26、嵌入式系统中一般设为只读,需要使用 mkcramfs、genromfs 等工具产生烧写 映像文件。 6. 建立应用程序的 flash 磁盘分区 一般使用 jffs2 或 yaffs 文件系统,这需要在内核中提供这些文件系统 的驱动,有的系统使用一个线性 flash(nor 型)512kb32mb,有的系统使 用非线性 flash(nand 型)8512mb,有的两个同时使用,需要根据应用规 划 flash 的分区方案。 7. 开发应用程序 应用程序可以放入根文件系统中,也可以放入 yaffs、jffs2 文件系统中, 有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似 于 c

27、os-ii 的方式。 8. 烧写内核、根文件系统、应用程序 9. 发布产品 1.6 arm 及 s3c2440 硬件平台 嵌入式开发的主要工作之一是硬件的开发,而硬件开发更基础的工作是构 建硬件开发平台,本次设计使用的硬件平台是以 s3c2440 嵌入式微处理器为核 心而构建的开发板。 1.6.1 arm 简介 arm 是 advanced risc machines 的缩写,是英国一家知名的微处理器公 司。arm 是设计公司,本身不生产芯片,只提供知识产权(ip) 。各大半导体 生产商从 arm 公司购买其设计的 arm 微处理器核,根据不同的应用领域,加 入适当的外围电路,从而形成自己的

28、arm 微处理器芯片进入市场。 1.6.2 arm 内核介绍 1. arm 处理器特点: (1)体积小、功耗低、低成本、高性能。 (2)支持 thumb/arm 双指令集,能很好的兼容 8 位/16 位器件。 (3)大量的使用寄存器,指令执行速度更快。 (4)大多数数据处理都在寄存器中完成。 (5)寻址方式灵活简单、执行效率高。 (6)指令长度固定。 2. arm 微处理器工作状态 arm 微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种 为 arm 状态,此时处理器执行 32 位的字对齐的 arm 指令;第二种位 thumb 状态,此时处理器执行 16 位的半字对齐的 thumb

29、 指令。 3. arm 体系结构的存储格式 大端格式:在这种格式中,字数据的高字节存储在低地址中,二字数据的 低字节则存储在高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是 字数据的的低字节,高地址存放的是字数据的高字节。 4. arm 处理器模式 (1)arm 处理器支持 7 种运行模式,分别如下。 (2)用户模式:arm 处理器正常的程序执行状态。 (3)快速中断模式:用于高速数据传输或通道处理。 (4)外部中断模式:用于通用的中断处理。 (5)管理模式:操作系统使用的保护模式。 (6)数据访问终止模式:当数据或指令预取终止时进入该模式,可用于虚 拟存储及存储保

30、护。 (7)系统模式:运行具有特权的操作系统任务。 (8)未定义指令终止模式:未定义的指令执行时进入该模式。 1.6.3 qt2440e 开发板介绍 1. 核心板部分: 处理器:s3c2440a-40 400mhz 主频,arm 920t 内核 flash:512m bit nand flash,8bit 宽度 ram:512m bit sdram,133mhz,32bit 宽度(两片组成) 网络:10mbps 低功耗嵌入式专用以太网网络芯片 cs8900a-cq3。 音频:uda1341ts,立体声音频输入输出接口。 rtc 时钟:s3c2440a 内部集成,外部提供 rtc 电池,插座安装

31、,可更换。 2. 底板部分: 电源:7-24v 宽电压输入,lt1765 高效 dc/dc 降压,标配 12v 电源串口, 3 路串口,1 路带握手信号,可接调制解调器或者 gprs。 液晶接口:支持 cstn,tft 等多种 lcd 摄像头接口:预留 30pin 插座,方便用户连接数字摄像头 usb host:2 个 usb host 接口,usb full speed。可外接 hub 扩展。 usb device:1 路 usb device 接口,usb full speed sd 卡接口:支持 sd/mmc 和 sdio 设备 jtag 接口:arm 标准 20 芯 jtag 接口 1

32、.7 嵌入式系统的发展趋势 以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美 好 前景,注入了新的生命;同时也对嵌入式系统技术 ,特别是软件技术提出 新的挑战。 这主要包括支持日趋增长的功能密度、灵活的网络联接、轻便的移 动应用和多媒体的信息处理。嵌入式应用软件的开发需要强大的开发工具和操 作系统的支持。随着因特网技术的成熟、带宽的提高,在网上提供的信息内容 日趋丰富、应用项目多种多样,像电话手机、电话座机及电冰箱、微波炉等嵌 入式电子设备的功能不再单一,电气结构也更为复杂。 强大的网络支持成为必然趋势。针对外部联网要求,嵌入设备必需配有通 信接口,相应需要 tcp/ip 协议

33、簇软件支持 ,同时也需要提供相应的通信组网 协议软件和物理层驱动软件,以支持应用软件的特定编程模式。 支持电子设各实现小尺寸、微功耗和低成本。为满足这种特性,要求嵌入 式产品设计者相应降低处理器的性能限制内存容量和复用接口芯片。就相应提 高了对嵌入式软件设计技术要求。如选用最佳的编程模型和不断改进算法、优 化编译器性能。 提供精巧的多媒体人机界面 。人机交互界面是一个让使用者和计算机沟通 时所需要的沟通环境。由于人们在使用多媒体产品时会预期看到的是一个熟悉 而友善的计算机屏幕画面,因此让使用者身处在精巧友好的环境下,一定比较 容易掌握状况,迅速获取取得信息。 第二章 建立嵌入式开发环境 在一个

34、嵌入式系统中使用 linux 开发,根据应用需求的不同有不同的配置 开发方法,嵌入式 linux 开发环境有以下几个方案:基于 pc 机 windows 操作 系统下的 cygwin;在 windows 下安装虚拟机后,再在虚拟机中安装 linux 操 作系统;直接安装 linux 操作系统。 本次设计则采用的方案是宿主机直接安装 linux 操作系统。 2.1 软件平台 2.1.1 嵌入式 linux 介绍 嵌入式 linux(embedded linux)是指对标准 linux 经过小型化裁剪处理 之后,能够固化在容量只有几 kb 或者几 mb 字节的存储器芯片或者单片机 中,是适合于特定

35、嵌入式应用场合的专用 linux 操作系统。在目前已经开发成 功的嵌入式系统中,大约有一半使用的是 linux。这与它自身的优良特性是分 不开的。 嵌入式 linux 同 linux 一样,具有低成本、多种硬件平台支持、优异的 性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌 入式 linux 还在 linux 基础上做了部分改进,如下所示: 1.改善的内核结构 在嵌入式系统经常采用的是另一种称为微内核(microkernel)的体系 结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存 管理、中断处理等,而类似于文件系统和网络协议等附加功能则运行在用 户空间中

36、,并且可以根据实际需要进行取舍。这样就大大减小了内核的体 积,便于维护和移植。 2.提高的系统实时性 由于现有的 linux 是一个通用的操作系统,虽然它也采用了许多技术 来加快系统的运行和响应速度,但从本质上来说并不是一个嵌入式实时操 作系统。因此,利用 linux 作为底层操作系统,在其上进行实时化改造, 从而构建出一个具有实时处理能力的嵌入式系统,如rt-linux 已经成功地 应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等各 种领域。 2.1.2 构建交叉开发环境 1.安装 rhel5 操作系统 red hat 于 2007 年 3 月 14 日正式发布了 rhel5.

37、 rhel 5 将是 red hat 的商业服务器操作系统版本的第四次重要版本发布 , red hat 酝酿发布 rhel 5 已经超过了两年 , 主要变化包括 linux 内核由 2.6.9 升级为 2.6.18。 安装系统可以从镜像安装也可以从光盘安装,这里选择从光盘安装。 首先将系统盘放在光驱中重启电脑,系统会自动选择从光盘启动,当出现 boot 提示符时敲回车系统进入欢迎界面。 第一步:选择安装过程中使用的语言,一般选择英文或者是中文,这根据 自己的爱好而定。 第二步:选择键盘语言为美国英语。 第三步:当出现分区选择界面时选择“自定义分区”,具体设置如下: boot 分区:设置为 10

38、0m; swap 分区:设置为内存的二倍即可,这里设置为 1024m。 根(/)分区:可以将剩下的所有的磁盘当做根分区,也可以进 一步将剩下的空间进行分区。 注意:boot 分区必须设置在磁盘的开始部分,否则系统启动。 以上就是安装系统的主要工作,接下来所有的设置都可以采用默认设置, 点击下一步一直到开始安装系统。 2.交叉编译工具的安装 源文件必须经过编译连接才能生成可执行文件,由于嵌入式系统的资源有 限所以只能在 pc 机上将源文件编译连接然后将生成的执行文件放到开发板上 运行。要生成能在 arm 平台上运行的程序,必须使用交叉编译工具 arm-linux- gcc、arm-linux-l

39、d 等。本次设计使用的交叉编译工具为 arm-2008-11-24.iso,下 面是安装交叉编译工具的步骤: 第一步:挂载工具链: 在终端下输入:mount -o loop arm-2008-11-24.iso /mnt/自己建的目 录,这里自己建的目录是可选的(假设为 cross_tool) ,也可以直接挂在/mnt 目 录下。 第二步:新建一个安装目录,在安装目录下打开终端并输入: #/mnt/install 这步是安装交叉编译工具。 第三步:修改环境变量 path。 修改环境变量有两种方法: 在 shell 下输入命令:export path=/安装路径的绝对路径 /usr/bin:$p

40、ath 直接修改/.bashrc、 /etc/profile 、/etc/environment 三个文件,修改 的方法为在文 件的开头或结尾添加上面的命令即可。 第四步:验证交叉编译工具是否安装成功。 验证方法为:在 shell 下输入 arm-linux-gcc -v 如果出现一些关于交叉编译 工具的信息则表示工具安装成功。 3.网络服务的配置 当程序交叉编译完后需要通过某种方式下载到开发板上运行以验证程序是 否正确,一般下载方式主要是同过网线或者是串口的方式。一般情况下需要同 时用到两种方式,使用网线需要配置 nfs 服务,使用串口需要配置 tftp 服务和 minicom。 (1) n

41、fs 服务的配置 nfs 服务主要是在挂载文件系统时配置配置方法如下: 将 nfs 文件系统所在的绝对路径添加到/etc/exports 文件中,配置格式 如下(假设文件系统的绝对路径为/root/embeded/rootfs): /root/embeded/rootfs *(rw, no_root_squash) *表示所有的 ip(目标板)都可以访问; rw: 表示访问者的权限为可读写; no_root_squash:表示没有 root 权限。 配置好后重启 nfs 服务。 (2) tftp 服务的配置 tftp 协议是基于 udp 实现的比较适合用来传比较大的文件。 配置方法如下: 首先

42、修改/etc/xinetd.d/tftp 文件:将 disable 字段改为 no,如果原先已经 为 no 则不用修改,表示开启 tftp 服务。然后将 server_args 修改为自己建的 用于目标板下载文件的目录的绝对路径(假设为/root/tftpboot,默认是 /tftpboot),事实上这个也可以不用修改。 修改完后重启 tftp 服务:在 shell 输入 service xinetd restart。然后随便 添加一个文件到自己建的路径下,再在 shell 下输入: tftp localhost 意思是从本地下载到本地。如果出现提示符 则输入“get 文件名”, 然后在该终端

43、打开的目录下看是否有该文件,如果有则表示 tftp 服务配置 成功。 (3) minicom 的配置 minicom 是 linux 下目标板与用户交互的界面,在调式阶段是非常重要 的。配置方法如下: 第一步:在 shell 中输入 minicom -s。 第二步:进入出现的界面的 serial port setup 选项,设置 serial device 为 /dev/ttys0,这项需要根据具体情况而定;然后按 i 将 bps/par/bits 设为 1152008n1;软硬件设置为 no;保存为默认并退出。 当 u-boot 烧写到开发板上后启动开发板就可以在 minicom 中看到 u

44、- boot 下的提示符。 2.2 硬件平台 2.2.1 硬件平台介绍 硬件平台由以 s3c2440 处理器为核心,4.3 英寸彩色显示屏为显示器件, 以 iis 总线为音频数据流通道,并通过 l3 总线(由 l3mode,l3clock,l3data 控制线组成)控制解码芯片 wm8976 对音频 数据流进行解码,最后由 wm8976 负责将数据输出到扬声器或耳机发出声音、 当有麦克输入时切换为录音模式进行录音 2.2.2 硬件平台结构介绍 1.s3c2440 处理器采用 arm920t 核,五级流水线,工作频率为 400mhz。 cpu 主要负责将存储于 nandflash 中的 mp3

45、数据取出来放在内存中,然后 dma 控制器选择通道 2 负责将数据取出放在 iis 总线上,然后发送到 wm8976 解码芯片,然后由扬声器发出声。开发板的实物图如 2-1 所示: 图 2-1 2440 开发板实物图 另外在 cpu 取出 mp3 数据时,将 mp3 数据的属性取出来放在 framebuffer 中,然后由 lcddma 控制器负责将数据通过 gpc,gpd 接口发 送给 lcd,但因为 gpc 和 gpd 是复用的所以要初始化其为输出模式。 2.lcd 显示器 lcd 的接口分为三类:电源接口,数据线,控制线。 (1) 电源线:led+,led-为 lcd 背光电源。 (2)

46、 数据线(vd0vd23) 液晶屏的数据格式为 5:6:5(16bpp) ,即用 16 位的数据来表示一个像素, 16 位的数据可以组成 16k 中颜色,也就是我们所说的 16k 色,本开放板上的 tft 液晶显示屏支持 16k 色非调色板显示模式。各模式下用来传输红,绿,蓝三 种原色的颜色值的 vd 数据线如表 1 所示(没有用到的数据线其电平为 0): 表 2-1 16bpp 数据格式 (3) 控制线:lcd 和 cpu 的接口如图 2-2 所示。由原理图可知 lcd 的主 要控制信号为:vclk,lcd_pwren,vline,vframe,vm。 vclk:vclk为像素时钟,它也是h

47、sync,vsync信号的时钟信号, vclk信号有效时表示一帧数据的开始。 hsync(vline):hsync表示行同步信号,当hsync信号有效时 表示一行数据的开始。 vsync(vframe):为帧同步信号,信号有效时表示一帧数据的开 始。同时vsync信号有称为垂直频率,场频率,显示器频率。 vden(vm):vden为数据使能信号在行同步信号使能后在经过 hbpd+1个vclk信号才输出高电平。 lcd_pwren信号为lcd电源显示控制信号只有在背光电源和该信号 都打开的时候图像才能显示,它受lcdcon5寄存器的pwren位控制。 lcd dma 的时序图如下: 图 2-2

48、lcd 主时序图 结合时序图可知 dma 传输一帧的时间为: t = (vspwvbpdlinevfpd) (hspwhbpdhozvalhfpd)(1/vclk) vclk 时钟取自 hclk,一般取振频率为 60hz.vclk 的计算公式为: vclk = hclk / (clkval+1) *2 clkval 的值可通过 lcdcon1 寄存器设置。 3.wm8976 解码芯片电路 (1) iis 总线概述 iis 总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了 使芯片的引出管脚尽可能少,iis 只使用了三根串行总线。这三根线分别是: 提供分时复用功能的数据线、字段选择线(

49、声道选择)、时钟信号线。 在三星公司的 arm 芯片中,为了实现全双工模式,使用了两条串行 数据线,分别作为输入和输出。此外三星公司的 iis 接口提供三种数据传 输模式: 正常传输模式:此模式基于 fifo 寄存器。该模式下 cpu 将通过轮询 方式访问 fifo 寄存器,通过 iiscon 寄存器的第七位控制 fifo。 dma 模式。此模式是一种外部设备控制方式。它使用窃取总线控制 权的方法使外部设备与主存交换数据,从而提高系统的吞吐能力。 传输/接收模式。该模式下,iis 数据线将通过双通道 dma 同时接收 和发送音频数据。本系统使用该数据传输模式。 (2) wm8976 与 s3c

50、2440 接口设计 s3c2440a 为 wm8976 解码芯片提供 iis 总线接口, 作为一个编解 码接口连接外部 8/16 位立体声音频解码 ic 用于迷你碟机和可携式应用。 iis 总线接口支持 iis 总线数据格式和 msb-justified 数据格式。该接口对 fifo 的访问采用了 dma 模式取代了中断。它可以在同一时间接收和发 送数据。 wm8976 芯片除了提供 iis 接口和麦克风扬声器接口,还提供 l3 接口控 制音量等。l3 接口分别连到 s3c2440 的 3 个通用数据输出引脚上 (gpb2:4) 。 扬声器接口: hs_dect:决定使用耳机还是喇叭放音。 i

51、is_ro/iis_lo:耳机的左右声道输出。当耳机插入时 hs_dect 检测到 耳机,然后决定使用耳机作为扬声器,否则采用喇叭。 iis_com:该引脚为浮接,没有与之对应的 cpu 引脚。 spk+/spk-:喇叭的左右声道输出引脚。由图 4 可见 wm8976 芯片能直 接驱动喇叭。 (3) 麦克风接口:s3c2440 开发板提供了一个麦克风接口。 micvdd:麦克风电源。 micin:外接麦克风,由图 2-3 可见麦克风输入经过一个 1uf 的滤波电 容接入芯片。 (4) i2s 总线接口: i2ssdi/i2ssdo:这两个引脚直接分别接 cpu 的 i2ssdi/i2ssdo

52、引脚, 用于串行传输音频数据,其串行时钟由主设备的 i2ssclk 提供。 图 2-3 wm8976 和 s3c2440 接口电路图 i2ssclk:串行数据传输时钟信号,i2ssclk 和 i2slrck 信号由主设备 (当在放音模式下时,cpu 是主设备;当在录音模式下时,wm8976 是主设备) 。i2ssclk 信号是取自系统 pclk 时钟,然后经过预定标器(ipsr_a 或 ipsr_b)经主 iisclk 发生器(sclkg)产生。 cdclk:该引脚直接和 cpu 的 cdclk 相连。它是外部编解码时钟发生 器,为外部解码芯片提供边解码时钟。它的产生和 i2ssclk 类似,

53、也是取自 pclk 然后经预定标器生成。 i2slrck:该引脚直接和 cpu 的 i2slrck 引脚相连。该信号指出当前正 在传送的通道数据:对于 iis 格式的数据,当 i2slrck 为低电平是表示当前正 在传送的是左声道,反之为高电平则为右声道。 (5) l3 控制接口: 因为 s3c2440 只提供了 i2s 总线接口,没有专门的寄存器来控制外围 音频解码芯片所以需要用 l3 控制线通过编程模拟 wm8976 的读写控制时 序。 l3mode:控制发送的是什么控制信号。该信号和 gpb2 连接,因此在发 送信号之前因初始化 gpb。 l3clock:控制信号时钟。 l3data:控

54、制信号的具体内容,说明当前发送的是什么控制信号。 4.扬声器电路 扬声器电路主要三部分组成:耳机接口、麦克接口、扬声器接口。 扬声器部分电路比较简单,由 wm8976 芯片直接驱动。其中 hs_dect 接 口用于检测是否有耳机插入,有的话就使用耳机作为扬声器,否则就使用喇叭 作为扬声器。 iis_ro、iis_lo、spk+、spk-、micin、hs_dect 都直接和 wm8976 芯片直接相连。 micvdd 经 100 欧姆限流电阻和 1uf 滤波电容为外接麦克提供电源。 第三章 uboot 分析与移植 3.1 bootloader 简介 引导加载程序(bootloader)是系统加

55、电后运行的第一段代码。它一般在系统 启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的组成 部分。通过这段小程序,初始化必要的硬件设备,创建内核需要的一些信息并 将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适 的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。bootloader 和硬件密切相关,一般来说都要对 bootloader 的源代码进行修改才可以在自己 的硬件平台上运行起来,目前嵌入式领域里出现了很多种类的 bootloader,如 armboot、blob、redboot、vivi 和 u-boot 等。其中 u-boot 是使用最广泛

56、,功 能最完善的 3.2 bootloader 的启动流程分析 大多数bootloader 都分为阶段1(stage1)和阶段2(stage2)两大部分,u-boot 也 不例外。依赖于cpu 体系结构的代码(如cpu 初始化代码等)通常都放在阶 段1 中,且通常用汇编语言实现。而阶段2 则通常用c 语言来实现,这样可以 实现复杂的功能,而且有更好的可读性和移植性。u-boot 的阶段1 代码通常放 在cpu/arm920t/start.s 文件中,它用汇编语言写成,其主要功是: 1.定义入口。由于一个可执行的image 必须有一个入口点,并且只能有一个 全局入口,通常这个入口放在rom(fl

57、ash)的0 x0 地址。 2.设置异常向量。 3.本地硬件设备初始化(设置cpu 的模式,关闭看门狗计时器,屏蔽所有中 断,配置时钟等)。 4.初始化内存控制器。如果从固态存储介质中启动,则复制bootloader 的第 二阶段代码到ram。 5.设置堆栈,跳转到第二阶段c 程序入口点。至此阶段1 完毕。 lib_arm/board.c 中的start_armboot 是第二阶段c 语言开始的函数,也是整 个启动代码中c 语言的主函数,同时还是整个u-boot 的主函数,该函数主要完 成: 1.调用一系列的设备初始化函数。 2.确定目标板是进入下载操作模式还是启动加载模式。 3.如果是启动加

58、载模式,则将内核映像和根文件系统映像从flash 上读到 ram 空间中。 4.为内核设置启动参数。 5.调用内核。具体流程如图 3-1 所示。 图 3-1 . u-boot 的启动流程 3.3 u-boot 分析 本次设计所使用的 u-boot 版本为最新版本:u-boot-2010.03,因为该版本的 u-boot 不支持 s3c2440 开发板,所以需要对 u-boot 源代码做一些修改和配置。 1.makefile 的分析 u-boot 根目录下的makefile 文件(u-boot-1.1.5/makefile)它负责配置u- boot 的编译方式,具体说来包括:使用何种指令集,需包

59、含哪些接口驱动、库 等。makefile 的内容从上到下分别是:分定义编译环境:使用何种编译器、编 译方式、目标文件的生成及它们最终镜像中的链接次序等。 在编译u-boot之前,先要执行: #make up2440_config up2440_config规则定义如下: up2440_config: unconfig $(mkconfig) $(:_config=) arm arm920t up2440 uplooking s3c24x0 根据makefile的规则的执行原理,当执行make up2440_config 时,那么 make 就会先执行unconfig,该命令是执行清理上一次执行

60、make *_config 所生 成的头文件与和makefile 包含的相关文件, 注:如果命令行中指定了编译目录,则要到自己指定的编译目录中去删除 这几个文件。接着就是执行 $(mkconfig) $(:_config=) arm arm920t up2440 uplooking s3c24x0 其中在这里第一个是gnu一种“所有匹配模式”规则,那么$(mkconfig) 相当于./mkconfig在这里特别注意一下$(mkconfig)是指引用变量 mkconfig,而在文件开头有对mkconfig的定义 mkconfig :=$(srctree)/mkconfig 而变量srctree定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论