1、 本 科 毕 业 设 计 U 盘音乐播放器设计 所在学院 专业班级 电子与信息工程 学生姓名 学号 指导教师 职称 完成日期 年 月 I 摘要 U 盘是一种基于 USB 接口的闪存盘,其实它的内部就是一块 NAND FLASH 存储芯片,里面可以存放数据,它是一个无需物理驱动器的微型高容量 移动存储产品,通过 USB 接口与电脑连接,实现即插即用。 U 盘来源于朗科公司生产的一种新型存储设备,使用 USB 接口进行连接。USB 传输速度有四种 USB1.0标准支持 1.5Mbps, USB1.1标准支持 12Mbps, USB2.0标准支持480Mbps, USB3.0标准支持 5.0Gbps
2、11-12。 MP3是 MPEG Audio Layer 3的简称, MPEG 压缩格式是由运动图像专家组制定的关于影像和声音的一组标准,其中 MP3就是为了压缩声音信号而设计的是一种新的音频信号压缩格式标准,它是一种有损压缩格式,丢 掉了脉冲编码调制音频数据中对人类听觉中不重要的数据而减小文件的大小, MP3播放器就是能对 MP3压缩格式的音乐文件进行解码的解码器,在 linux中有 madplay、 mpg23、 mplayer 等。 Qt 是诺基亚开发的一个跨平台的 C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。 Qt 是完全面向对象的,很容
3、易扩展,并且允许真正地组件编程。 对 U 盘音乐播放器的研究主要是让 U 盘里插在 TQ2440 开发板上,然后播放 U 盘里面的音乐文件, TQ2440 是一块天嵌公司的开发板,主要是由 一块 S3C2440 芯片、 UDA1341、两个 USB接口和一些外围功能电路构成。本次研究是从官网下载 linux 内核,然后编译 KERNEL 得到zImage,其中包括 USB 驱动、 LCD 驱动、触摸屏驱动、 DM9000 驱动、音频驱动移植,对需要的地方做必要的更改让这些硬件能正常工作,这些驱动必须正确编译,然后编译 busybox,busybox 是制作文件系统的一个工具,里面包含一些应用程
4、序的集合,然后添加一些配置文件制作一个 ROOTFS,并且能通过 NFS 挂载正常工作,然后在交叉编译音乐播放器 mpg123,并移植到文件 系统中,然后 QT 设计一个 UI 界面,将 UI 界面移植到文件系统,用户通过操作触摸屏可以控制开发板播放音乐,对于所有的工作,本次研究制作一个 shell脚本包括编译 KERNEL、制作 ROOTFS、播放器移植等。 关键词: USB; KERNEL;驱动; ROOTFS; UI;II Abstract U disk is a USB-based flash disk, in fact, its interior is a NAND FLASH me
5、mory chips, which can store data, it is a physical drive without micro-high-capacity mobile storage products, through the USB interface with a computer connected to achieve Plug and Play. Netac U disk from the company production of a new storage device, use the USB interface connection. There are fo
6、ur USB transfer speed USB1.0 standard support 1.5Mbps, USB1.1 standard supports 12Mbps, USB2.0 standard support 480Mbps, USB3.0 standard support 5.0Gbps. MP3 is short for MPEG Audio Layer 3, MPEG compression format developed by the Moving Picture Experts Group video and sound on a set of standards,
7、including MP3 compressed audio signal is to design a new audio compression format standard, It is a lossy compression format, lost the pulse code modulation audio data is not important in the human auditory data and reduce file size, MP3 player, MP3 compression format is able to decode music files d
8、ecoder In linux there madplay, mpg23, mplayer and so on. Qt is a cross-platform development of C+ graphical user interface application framework. It provides application developers to build-the-art graphical user interface used for the required functions. Qt is fully object-oriented, easily extensib
9、le, and allows true component programming manner. U disk music player on the study is to make U plate inserted in the TQ2440 development board, and play music files, U disk inside, TQ2440 is one days embedded development board, mainly by a S3C2440 chip, UDA1341, two A USB interface and a number of p
10、eripheral functions circuit. The research is from the official website to download linux kernel, then compile KERNEL get zImage, including USB drives, LCD drivers, touch screen driver, DM9000 driver, audio driver transplantation, the need for places to do the necessary changes to the hardware to wor
11、k properly, these Driver must be correctly compiled, and then compile busybox, busybox is a tool for making the file system, which contains a collection of some applications, and then add some configuration files to make a ROOTFS, and work through the NFS mount, and then cross-compiled music Player
12、mpg123, and transplanted to the file system, then QT to design a UI interface, the UI interface port to the file system, the user by operating the III touch screen to control the development board to play music, for all the work, this study make a shell script, including Compile KERNEL, making ROOTF
13、S, players transplantation. keywords: USB; KERNEL; DRIVER; ROOTFS, UI;0 目录 前言 .1 第 1 章 方案设计与平台论证 .2 1.1 硬件平台设计选择 .2 1.2 软件平台选择 .3 第 2 章 环境构建 .5 2.1 目标硬件平台搭建 .5 2.2 PC 环境搭建 .5 第 3 章 编译内核与制作文件系统 .7 3.1 内核驱动简介 .7 3.2 LCD 驱动与触摸屏驱动移植 .7 3.3 DM9000 驱动移植 .9 3.4 USB 驱动移植 .11 3.5 音频驱动移植 .13 3.6 制作文件系统 .15 第
14、4 章 UI界面设计与播放器移植 .19 4.1 Qt 简介 .19 4.2 UI 界面设计思想 .19 4.3 UI 设计 .19 4.3.1 GeneralTab .20 4.3.2 UsbTab .21 4.3.3 DirectoryTab .23 4.3.4 LogoTab .24 4.4 交叉编译 QT .24 4.5 交叉编译 mpg123 .25 结论 .27 致谢 .错误 !未定义书签。 参考文献 .28 附录: QT 程序清单 .29 1 前言 随着信息化社会的不断发展,各种电子智能设备充斥到了每一个角落,很多人都可能用有一个或者多个各种嵌入式设备,它们都可以成为嵌入式系统中
15、的一种、嵌入式系统是当前最热门、最具发展前途的 IT 应用领域之一。包括 MP3、手机、电子字典、智能电子设备、家电控制系统、医疗仪器、航天航空设备等都 是典型的嵌入式系统。 MP3 就是一个典型的嵌入式设备之一,高端的 MP3 不仅仅实现了音乐播放这一功能,同时还具备了文本浏览、图片浏览、甚至视屏播放等强大功能,在这触手可及的 MP3 来说,里面蕴藏了很多嵌入式系统设计的精华部分,本次研究的是在 TQ2440 开发板上实现 MP3 播放器功能,其中歌曲存放在 U 盘里面,然后在移植裁剪 linux 驱动、编译 linux 内核、制作文件系统、基于 QT 开发 UI 界面,本文详细的探讨了设计
16、的过程。 为什么要做 U 盘 MP3 播放器,而不是纯粹的 MP3 播放器,为什么要将音乐文件存放在 U盘上而不是开发 板上的存储芯片上面,这样看起来不是很多余吗? 这正是这次研究的目的, U 盘是一种存储设备,体积小便携容量大,但是 U 盘看起来简单容易,但是它必须要通过 USB 接口才能通信, USB 通信协议和内部工作方式还是相当复杂的,我们这次只用到了 USB1.1 接口,通过主从结构揭开 USB 神秘的面纱,这是一个很好的突破口,要想完全弄明白 USB,是一种艰巨的任务,对于我们来说能力有限没有必要,那为什么还要引入 linux 内核?我们可以无需内核就可以让音乐在开发板上实现 MP
17、3 播放,但是对于用户来说要想获得良好的用户体验感觉,引入内核是有 必要的,内核里面集成大量的驱动程序,我们只要根据需要就可以裁剪纯需要的驱动并让硬件完美工作,其次主要是 linux 运行程序的时候支持抢占,可以让多任务并发执行,这样我们在播放 MP3 的时候可以看图片或者电子书,并且能够很好的管理开发板所有运行的进程,为需要内存的进程最大化的分配内存,再者linux 内核开源、免费内核版本时刻跟新,我们为了需要随时可以获得最需要的源码。所以这就是我们为什么要研究 U 盘 MP3 的原因。 那么 UI 界面我们为什么要采用 QT 设计呢,而不是 MINIGUI,由于 QT 单一源程序的兼容性、
18、丰富性、 C+方面的性能、源代码可用性、高质量的文档、良好的移植性,我们只要了解一些基本的 QT 常识、懂得 C+,在 linux 环境下安装了 QT 软件和帮助文档,我们就可以轻松快乐的完成开发工作,如果哪里有问题,帮助文档里面有着最全面最完美的解释,对于程序开发员来说有了这些条件,开发 UI 界面也就变得非常有趣。 所以本次设计 U 盘 MP3 播放器就很好体现了嵌入式的精华,良好的移植性与裁剪行,优秀的模块化设计让一切变得简单,并且在 Linux 内核中自由穿梭,领略 Linux 风采,面向对象的方法设计的 UI 可以让我们一睹 QT 神奇,很显然这次 设计由于能力有限,有些地方没有很好
19、的整合达到最佳效果。 2 第 1 章 方案设计与平台论证 1.1 硬件平台设计选择 由于本次研究的 MP3 播放器用到了 U 盘,用于存放 MP3 歌曲,还有 LCD,提供界面显示,还得必须有一个中央处理模块,提供控制和音频数据处理,再者需要一个音频解码模块,提供音频解码,就这样,就构成了整个硬件系统,无论怎样,这个系统结构不会有多大改变,我们要做的是除了 MP3 歌曲、 U 盘、耳机之外,如何确定剩下的几个模块的硬件 。 图 1.1 硬件功能结构框图 平台一:选择高性能单片机作为中央处理模块核心,由于单片机的处理能力比较低,只适用于一些工业控制,能够完美实现一些简单的算法,例如数据采集、简单
20、的人机交互、 LED或者 LCD 显示、语音集成等,并且价格低廉,但是我们 U 盘 MP3 播放器,需要处理音频数据,还要实现多任务,支持 UI 界面,单片机肯定力不从心,为了实现设计要求所以以单片机为中央处理系统的方案肯定不行。 平台二:选择 32 位高性能 DSP 作为中央处理处理模块核心, DSP 是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的 器件。 DSP 采用哈佛设计,它将数据总线和地址总线分开,并且让程序和数据分别存储在两个不同的空间,允许取指令和执行指令重叠,意思是在执行上一条指令的同时可以取出下一条指令,并进行译码,这样极大地提高了处理器的处理速度,
21、 DSP 的高性能数据处理能力和运行速度是最大的特点,所以对于处理音频数据以及复杂的信号处理来说, DSP 来说完全没有问题, DSP 就是专门为高复杂数据处理而生,但是这里涉及到一个 UI 界面的设计,以及多任务交互,以及外围 USB、音频芯片控制、LCD 控制以及触摸屏、网卡,如果在 DSP 上实现这么多功能就太困 难了。 平台三:采用 ARM 作为中央处理模块核心, ARM 具有比较强的事务管理功能, CPU 功能上增加 DSP 指令集提供增强的 16 位和 32 位算术运算能力,提高了性能和灵活性。 ARM 还提供两个前沿特性来辅助带深嵌入处理器的高集成 SoC 器件的调试,根据 AR
22、M 体系结构的不同, ARM分布特别广,从低端处理器到高端处理器, ARM 几乎无所不能,除了要求比较高的个人计算机领域被 x86 体系结构霸占以外,嵌入式领域可以说是 ARM 的天下,由于其独特的优势,我们采用了一款拥有 ARM9 系列的 CPU,三星 S3C2440 的 SOC-包含大量的 外围设备的片上系统,TQ2440 开发板,它不仅又有了一片 SOC,而且还拥有一块大容量 NAND 芯片、网卡芯片、 320x240分辨率的 TFT 彩色显示屏以及附带触摸屏功能,两个 USB 接口、还有需要的一块 UDA1341 音频编解码芯片,由于处理器性能很好可以达到 400MHz,运行操作系统比
23、较流畅,对于 UI 界面也是很简单,更不用说播放 MP3 音乐,由于 SOC 上集成了大量的外设寄存器,这样带来一个好处就是控制外设变得非常简单 1-5。 U 盘 中央处理模块 液晶显示模块 音频处理模块 耳机 3 1.2 软件平台选择 由于要在硬件平台上实现智能操作,所以必须需要相应的软件来实现 特定功能,我们用什么软件实现呢 ? 方案一:无操作系统。在 TQ2440 上直接开发基于 ADS 环境下的程序,可以实现系统的整体设计,所有功能均可通过汇编和 C 语言混合编程来时实现 LCD 显示,并且驱动 USB 读取数据,经过 CPU 处理,然后控制音频数据输出并指挥芯片解码,如果这样设计肯定
24、可以达到要求但是也存在一定的缺陷,由于很多的外设需要控制,比如 USB, LCD, UART 等就要实现各自的驱动程序,而且还要实现 UI 界面的话就很困难了,由于没有用到面向对象的思维开发复杂UI 界面会变得相当复杂,还有就是音频解码,其中包含一个解 码软件,如何解码也成为一个问题。 方案二:有操作系统。操作系统有很多种,尤其是嵌入式操作系统,比较熟悉的有以下几种: uCOS-II, uC/OS II 是一个可以可裁减、抢占式、实时多任务内核,具有良好的可移植性,非常适合于微处理器,为了提供最好的移植性, uC/OSII 的大部分是用 C 语言开发的,而且已经成功移植到 40 多种处理器体系
25、上,包括了 8 位到 64 位的 CPU,它在 ADS 环境下就可完成开发,所以操作起来也相对简单,而且它可剥夺型实时多任务内核,意思是在任何时候都运行就绪了的最高优先级任务。 uc/os 中最多支持 64 个任务,其中 0 为最高优先级。 Uclinux, uCLinux 是一种嵌入式 Linux 的版本,它继承了标准 Linux 的一些优秀特性,部分方面经过小型改造,形成了一个高度精简的嵌入式 Linux。虽然它很小,却保留了 Linux的许多优点:稳定、优秀的移植性、网络功能、支持多文件系统和丰富的 API。它是专门针对没有内存管理单元的 CPU,主要让嵌入式系统精简化了。 Wince,
26、 Windows CE 作业系统是 Windows 家族中最新的成员,专门设计给掌上型电脑所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有 的 Windows 桌面技术整合工作。由于代码封闭,不开源价格昂贵让人望而却步。 Linux, Linux 作为开源软件的代表, 图 1.2 就是内核在操作系统的地位 图 1.2 Linux系统结构图 Linux作为开源的代表 , 爱好者可以随意裁剪并修改其中的内容,作为一款强大的操作系统,设计非常优秀,其中我们所说的就是 linux内核,他就是 linux操作系统的核心部分,主系统核心 应用程序、库 系统调用接口 设备驱动 硬件 用户空间 内核
27、空间 4 要包括处理机调度、内存管理、进程管理、设备管理、文件管理等几大块构成,它为用户提供了方便、高效 、友善的操作界面。 所以用户只需要针对特定平台编译源码,并根据自己的需要裁剪即可,里面集成了大量的硬件外设所需要的驱动程序,只要合理编译就可以完美运行,所以相对方便 6 -10。 根据上述所示,我们考虑了所有优缺点,并结合硬件平台我们选择了 linux,由于在 ARM平台上 linux可以完美运行,并且令人欢迎的开放性为我们研究带来了极大地乐趣。 5 第 2 章 环境构建 2.1 目标硬件平台搭建 为了研究,首先我们的建立硬件环境,本次设计用到了天嵌科技的 TQ2440 开发板、一根串口线
28、、一根交叉网线、 ubuntu10.10、 u-boot、 linux-2.6.30.4.tar.bz2 等工具。 TQ2440 开发板的 S3C2440 实现对大部分外围设备寄存器的控制与操作, U 盘实现存储音乐的功能, LCD 实现 GUI 的显示, AC97, UDA 则对音频数据进行处理并输出。 PC 机通过串口线控制开发板,通过网线实现下载数据和挂载 NFS 文件系统功能,就这样,通过主机可以操作开发板实现 MP3 播放的硬件功能图。 TQ2440 开发板,该开发板主要配置了一块 SAMSUNG 公司的 S3C2440AL-40的 SOC 芯片、一块天嵌 3.5 寸的 TFT 材质
29、的 LCD 和触摸屏、一块由 SAMSUNG 公司生产容量高达 256MB 的 NAND FLASH 芯片( K9F2G08U0B)、一块 EON 公司的 NOR FLASH 芯片、一块 hunix 公司生产的 64M 内存芯片( H57V2562GTR-75C)、一块 DAVICOM 公司的网卡芯片( DM9000EP)等。 S3C2440 是一块包含一块 ARM920T CPU 的 SOC,内部集成了 LCD、 USB、 NAND、 AC97、 I2C、ADC 等控制模块的寄存器。 ARM920T 是一个 ARMV4t 架构的 CPU,主频高达 400MHz,所以可以流畅的运行 WINCE
30、、 LINUX 等 OS。所以本次设计的 MP3 播放器可以再 linux-2.30.4 版本内核、QT 设计的环境界面流畅运行,尽情体验 Linux 奥妙之道。 Ubuntu10.10 属于 Linux 众多版本中的一种,操作非常简单、设计人性化,尽管 Linux 种类繁多、版本复杂,但它们都有一个个同点,它们都有使用着出自同一个地方的内核、内核随着时间不短跟新、有些地方有些改动,但大致体系结构还是相同, Ubuntu 是一个南非的民族观念,着眼于人们之间的忠诚和联系。 Ubuntu 精神的大意是“人道待人”(对他人仁慈)。作为一个 基于 GNU/Linux 的平台, Ubuntu 操作系统
31、将 ubuntu 精神带到了软件世界。 2.2 PC 环境搭建 为了开发相关软件需要在主机上开发测试通过后在移植到目标平台, PC 环境搭建可分为几个部分进行,下面主要讲解软件环境搭建 : 第一:首先在 PC 机上安装 ubuntu10.10 操作系统,最好能在电脑上装一个纯 Linux 环境,这样操作起来更顺手,安装方法相当简单在此没必要介绍。要注意的是 ubuntu 有个权限问题,默认所有用户没有超级用户权限,一般情况我们没必要使用超级用户权限,防止不当操作造成系统 文件破坏导致系统崩溃。在装系统时有一个设置用户和密码的界面当用户设置之后以后就可以以该用户的权限使用系统资源,本机默认用户名
32、是 boen,所以后面遇到改名字均表示一个用户。 还有为了方便的使用,执行以下操作:输入 sudo 命令可以不用输入密码: sudo vi /etc/sudoers 修改最后一行 %admin ALL=(ALL) NOPASSWD: ALL 开启超级用户: sudo passwd root 就可以了。 第二:安装必要的工具软件,在安装软件之前在终端执行 sudo apt-get update 命 令,此命令就是更新源信息,这就保证在你安装软件是保证是从官方安装的最新软件版本,比如需要安装的有 vim 编辑器、 make 工具、 lib 库、 minicom、 tftp、 nfs,在这没有介绍、因为一些需要的工具包可通过命令 sudo apt-get install xxxx 来完成, xxxx 就是需要安装的名