




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目 题目 基于基于 ARMARM 的的 LinuxLinux 多媒体播放器多媒体播放器 的设计与实现的设计与实现 系系 部 光学与电子信息学院 部 光学与电子信息学院 专专 业业 班 电子科学与技术班 电子科学与技术 姓姓 名 名 学学 号 号 指导教师 指导教师 20132013 年年 6 6 月月 摘摘 要要 当今社会是一个信息化的社会 嵌入式技术在这个时代得到了日新月异的发展 嵌入式技术已经引起了世界各国的高度关注 在这个背景下 本文提出了一种基于 嵌入式 ARM9 Linux 的多媒体播放器的设计与实现方案 本文首先介绍了 S3C2440 开发板的硬件情况 嵌入式 Linux 操作系统在 ARM 微处理器上的移植技术 包括 Linux 系统环境建立 交叉编译环境的建立 引导程序 vivi 的烧写 移植嵌入式 Linux 内核 以及添加了 Qtopia 的根文件系统的建立 最终实现了 Linux 到 S3C2440 开发板的移植 在此基础上通过移植多功能视频播放器 Mplayer 实现视频 文件的播放 最后列举了编译 mplayer 常见问题及解决方法 分析了 mplayer 的工 作流程 关键词 关键词 交叉编译环境 ARM9 Linux 多媒体播放器 移植 mplayer Abstract The contemporary world is an informationalized society Embedded technology has achieved enormous development by leaps and bounds in this age and raised great concerns of countries around the world Under this background this paper puts forward a scheme of design and implementation of the media player based on embedded ARM9 Linux of The paper introduces the hardware of the S3C2440 development board and the technology of transplanting embedded Linux operating system into the ARM microprocessor including the establishment of Linux system environment and cross compiling environment the establishment of the loader vivi and the application of the embedded Linux transplant kernel and adds the Qt root file system building On this basis by transplanting versatile video player the writer accomplish playing video files list the frequently asked questions and the solutions of compiling mplayer and analyze the workflow of mplayer at last Key Words cross compiling environment media player based on embedded ARM9 Linux transplant mplayer 目录目录 摘摘 要要 I ABSTRACT II 1 引言引言 4 1 1 研究背景研究背景 4 1 2 发展状况和研究意义发展状况和研究意义 4 1 3 本文组织结构本文组织结构 5 2 构建硬件平台构建硬件平台 5 3 软件配置和建立主机开发环境软件配置和建立主机开发环境 8 3 1 宿主机开发环境的配置宿主机开发环境的配置 8 3 2 配置配置MINICOM 13 3 3 配置配置 NFS 服务服务 14 3 4 编译编译 BOOTLOADER 16 3 5 编译编译 LINUX 内核内核 18 3 6 制作文件系统制作文件系统 19 4 QT 开发环境的搭建开发环境的搭建 20 4 1 QT 简介简介 20 4 2 QTE 简介简介 21 4 3 嵌入式图形开发环境嵌入式图形开发环境 QTE 的搭建的搭建 21 5 移植移植 MPLAYER 23 5 1 安装安装LIBMAD 24 5 2 交叉编译交叉编译 MPLAYER 25 5 3 移植移植 MPLAYER到开发板测试到开发板测试 28 6 MPLAYER 功能及实现功能及实现 30 6 1 播放器的工作流程播放器的工作流程 30 6 2 播放器的逻辑结构播放器的逻辑结构 30 6 3MPLAYER播放器的目录文件组织结构播放器的目录文件组织结构 31 6 4 播放器对解码器和输出设备的管理方式播放器对解码器和输出设备的管理方式 32 7 结论或结论或总总结结 33 参参 考考 文文 献献 35 1 引言引言 1 1 研究背景研究背景 伴随着半导体技术 计算机技术 网络技术和软件技术的飞速发展 现如今 我们已经进入了后 PC 时代 在这一阶段电子产品的发展趋势是智能化 数字化 网络化 便携轻巧 易于操作 而嵌入式技术 Embedded Technology 的发展为人 们提供了一个很好的解决方案 所谓嵌入式是指以应用为中心 以计算机技术为基 础 软件 硬件可裁剪 适用于应用系统对功能 可靠性 成本 体积 功耗有严 格要求的专用计算机系统 1 嵌入式技术已经被广泛的应用于科学研究 工程设计 军事领域和文艺商业的 方方面面 嵌入式产品更是随处可见 比如消费电子产品 车载电子设备 智能家 电 MP3 MP4 等 如今人们随着生活水平的提高 对视听享受方面的要求也越来 越高 人们不单仅仅满足于在电脑上或电视上欣赏高品质的音视频 也渴望能够随 时随地的欣赏音乐观看电影 所以基于嵌入式技术的便携式多媒体播放器也成为了 现今 IT 界研究的热点之一 面对广阔的市场需求 海内外的各大厂商也在积极研 发自己的产品以抢占市场 基于这一背景 本文提出了一款基于嵌入式 Linux 操作系统和 ARM 处理器的 视频播放器设计方案 1 2 发展状况和研究意义发展状况和研究意义 自从 2002 年法国的爱可视推出全球第一款 MP4 多媒体 Jukebox 以来 基 于嵌入式技术的便携式视频播放器已经发展了十年 经过这十年的发展 视频播放 器技术已日趋成熟 市面上的产品支持的视频格式也越来越多 功能也越来越强大 很多 MP4 都集成了上网 游戏 个人事务处理甚至是视频录制 数码照相等功能 目前 很多提供视频播放器处理器的半导体厂商都推出有自己的视频播放器硬件解 决方案 这些方案可以概括为以下四类 一类是以德州仪器 飞利浦为代表的基于 CPU DSP 芯片的解决方案 一类则是以 Intel 和 AMD 为代表的基于通用 CPU 的解 决方案 第三种则是以飞思卡尔和深圳安凯为代表的基于 MCU 芯片的解决方案 第四种是基于双 CPU 的解决方案 在软件方面基本上市面上的便携式视频播放器 都带有嵌入式操作系统 主要的操作系统有 Vxworks Palm OS Windows CE Linux Android 以及厂家自己开发的操作系统 2 生产厂商在设计自己的产品时如果采用上述的硬件方案 都要支付一笔不菲的 授权费用 而在嵌入式操作系统的选择上也只有 Linux 是开源免费的 所以产品成 本比较高 ARM 处理器具有体积小 功耗低 低成本 高性能等优点 并且支持 Linux 系统 所以可以选用 ARM 处理器配合 Linux 进行产品的设计 这样可以充分的利 用 Linux 开源的特性 根据需要修改和移植一些免费的开源软件 这样不仅能降低 产品研发的难度 加快产品的上市时间 还能省去一笔不菲的软硬件授权费用 3 1 3 本文组织结构本文组织结构 本文介绍了一款便携式视频播放器的设计工作 该视频播发器是以 ARM 处理 器为硬件开发平台 嵌入式 Linux 作为操作系统 通过移植 Linux 上的一款优秀的 开源视频播放器软件 MPlayer 来实现的 本文共分五章 内容安排如下 第一章 引言 介绍了本文的选题背景 当前国内外的发展状况以及研究意义 并对论文的主要工作进行了简单介绍 第二章 播放器总体设计方案介绍 主要介绍播放器的硬件整体架构 第三章 系统开发平台的构建 本章详细介绍了 Linux 系统移植到 ARM 处理 器的过程 Linux 的移植主要包括三个方面 Booterloader 的移植 Linux 内核的移 植和根文件的制作 第四章 嵌入式图形开发环境 QTE 的搭建 第五章 视频播放器 mplayer 的移植 介绍 MPlayer 的移植过程以及移植过程 中遇到的各种问题和解决方法 第六章 分析 mplayer 播放器的工作模式和框架 2 构建硬件平台构建硬件平台 本设计使用的硬件开发平台是北京奥尔斯电子科技有限公司的 OURS 2410 RP 嵌入式实验开发系统 S3C2410RP 是一款基于三星 S3C2410X 16 32 位 RISC 处理器 ARM920T 的为满足嵌入式专业教学的新要求而设计研发的新一代嵌入式实验基础平台 该款 实验平台是一款集教学实验 课程设计 本科毕业设计 研究生课题研究与企业产 品开发于一体的综合平台 这款设备主要包括核心板与底板两个部分 核心板采用 6 层 PCB 板设计 底板采用 4 层 PCB 板设计 核心处理器是基于目前行业内主 流使用的 SAMSUNG ARM9 S3C2410 处理器 主频 202MHz 配套的存储器 网卡等设备 底板主要是各种类型的接口与扩展口 图图 1 S3C2410 方框图 S3C2410A 采用了 ARM920T 内核 0 18um 工艺的 CMOS 标准宏单元和存储 器单元 它的低功耗 精简和出色的全静态设计特别适用于对成本和功耗敏感的应 用 同样它还采用了一种叫做 Advanced Microcontroller Bus Architecture AMBA 新 型总线结构 S3C2410A 的显著特性是它的 CPU 核心 是一个由 Advanced RISC Machines ARM 有限公司设计的 16 32 位 ARM920T RISC 处理器 如图 1 所示 ARM920T 实现了 MMU AMBA BUS 和 Harvard 高速缓冲体系结构 4 这一结 构具有独立的 16KB 指令 Cache 和 16KB 数据 Cache 每个都是由 8 字长的行 line 构成 通过提供一系列完整的系统外围设备 S3C2410A 大大减少了整个 系统的成本 消除了为系统配置额外器件的需要 核心板 6 层 PCB 电路 系统包括 CPU SAMSUNG S3C2410 处理器 202MHz SDRAM 64M FLASH 8M Inter Nor Flash NET 10 100M Ethernet controller DM9000 总线驱动器 若干 电源稳压器 LDO 2 个 音频控制芯片 UDA1341 1 个 双排插座 2 0 X 80 Pin 2 个 4 个发光二极管 底板 4 层 PCB 电路 包括 接口部分 Etherne 100M 网口 UART USB1 1 并口 JTAG 接口 SMC 显示部分 4 3 寸真彩 TFT 液晶屏 VGA 接口 8 段数码管 LED LCD AIDIO 部分 AC97 耳机接 麦克风 其它部分 STN 触摸屏 EEPROM 温度传感器 电位器等 图图 2 S3C2410 开发板外观图 3 软件配置和建立主机开发环境软件配置和建立主机开发环境 3 1 宿主机开发环境的配置宿主机开发环境的配置 3 1 1 安装 VMware Workstation 软件 VM 主机简称 VM 又称 VM 服务器 VM 主机是灵动网络利用虚拟机 Virtual Machine 技术 将一台服务器分割成多个虚拟机 VM 主机 的优质服务 这些 VM 主机以最大化的效率共享硬件 软件许可证以及管理资源 对其用户 和应用程序来讲 每一个 VM 主机平台的运行和管理都与一台独立主机完全相 同 因为每一个 VM 均可独立进行重启并拥有自己的 root 访问权限 用户 IP 地址 内存 过程 文件 应用程序 系统函数库以及配置文件 每个 VM 主机都可分配独立公网 IP 地址 独立操作系统 独立超大空间 独立内存 独立 CPU 资源 独立执行程序和独立系统配置等 VM 主机用户除 了可以分配多个虚拟主机及无限企业邮箱外 更具有独立服务器功能 可自行 安装程序 单独重启服务器 VMware 软件包含一个用于英特尔 x86 相容电脑的虚拟机套装 其允许用户 同时创建和运行多个 x86 虚拟机 每个虚拟机实例可以运行其自己的客户机操 作系统 如 但不限于 Windows Linux BSD 变生版本 VMware 软件可以实现不需要重新开机就在同一台电脑上使用几个操作系 统 安装完成后如图 3 所示 VMware 主要的功能有 1 不需要分区或重开机就能在同一台 PC 上使用两种以上的操作系统 OS 2 完全隔离并且保护不同 OS 的操作环境以及所有安装在 OS 上面的应 用软件和资料 3 不同的 OS 之间还能互动操作 包括网络 周边 文件分享以及复制 贴上功能 4 有复原 Undo 功能 5 能够设定并且随时修改操作系统的操作环境 如 内存 磁盘空间 周边设备等等 6 安装 Linux 操作系统就是基于 VMware Workstation 软件进行安装的 也就是可以在一台 PC 机上同时运行 Windows 操作系统和 Linux 操作系统 图图 3 VMware Workstation 9 软件 3 1 2 安装 RedHat 9 0 操作系统 RedHat 红帽公司 创建于 1993 年 是目前世界上最资深的 Linux 和开放源 代码提供商 同时也是最获认可的 Linux 品牌 基于开放源代码模式 为全球企 业提供专业技术和服务 他们的解决方案包括红帽企业 Linux 操作平台 以及其 他内容广泛的服务 因此 Red Hat 不仅是全球最大的开源技术厂家 其产品 Red Hat Linux 也是全世界应用最广泛的 Linux Red Hat 公司总部位于美国北卡罗来纳 州 在全球拥有 22 个分部 Linux 是一种自由和开放源码的类 Unix 操作系统 存在着许多不同的 Linux 版 本 但它们都使用了 Linux 内核 Linux 可安装在各种计算机硬件设备中 比如手 机 平板电脑 路由器 视频游戏控制台 台式计算机 大型机和超级计算机 Linux 是一个领先的操作系统 世界上运算最快的 10 台超级计算机运行的都是 Linux 操作系统 严格来讲 Linux 这个词本身只表示 Linux 内核 但实际上人们已 经习惯了用 Linux 来形容整个基于 Linux 内核 并且使用 GNU 工程各种工具和数 据库的操作系统 Linux 得名于天才程序员林纳斯 托瓦兹 从网络上下载的 RedHat 9 0 是 3 个 iso 文件在 VM 中依次加载这三个镜像文件 就可以实现 RedHat 9 0 的安装 注意在硬件窗口中添加串口和并口 安装完成如图 4 所示 图图 4 RedHat9 0 操作系统 3 1 3 交叉编译环境的建立 交叉编译 cross compilation 是指 在某个主机平台上 比如 PC 上 用交叉 编译器编译出可在其他平台上 比如 ARM 上 运行的代码的过程 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的 我们常用 的计算机软件 都需要通过编译的方式 把使用高级计算机语言编写的代码 比如 C 代码 编译 compile 成计算机可以识别和执行的二进制代码 比如 我们在 Windows 平台上 可使用 Visual C 开发环境 编写程序并编译成可执行程序 这种方式下 我们使用 PC 平台上的 Windows 工具开发针对 Windows 本身的可 执行程序 这种编译过程称为 native compilation 中文可理解为本机编译 然而 在进行嵌入式系统的开发时 运行程序的目标平台通常具有有限的存储空间和运算 能力 比如常见的 ARM 平台 其一般的静态存储空间大概是 16 到 32 MB 而 CPU 的主频大概在 100MHz 到 500MHz 之间 这种情况下 在 ARM 平台上进 行本机编译就不太可能了 这是因为一般的编译工具链 compilation tool chain 需 要很大的存储空间 并需要很强的 CPU 运算能力 为了解决这个问题 交叉编译 工具就应运而生了 通过交叉编译工具 我们就可以在 CPU 能力很强 存储控件 足够的主机平台上 比如 PC 上 编译出针对其他平台的可执行程序 一 armv4l unknown linux gcc 2 95 2 交叉编译器的安装 我首先安装的是开发版自带的 armv4l unknown linux gcc 交叉编译器 版本号是 2 95 2 编译器安装在 opt home armv4l bin 目录下 在挂载 U 盘之前可以通过 fdisk l 命令查看 U 盘的名称 如图 5 所示 图图 5 fdisk l 命令查看 U 盘 安装步骤如下 mkdir mnt usb 若有该目录 则可以不必创建 mount t vfat dev sdb1 mnt usb 挂载 U 盘 cd mnt usb Linux 进入 U 盘的 Linux 安装目录 Install 执行开发环境自动安装脚本 当开发环境安装完毕后 会在根目录下生成一个目录 2410RP linux 该目录中包含以下目录 CDROM 该目录中包括光盘中的所有内容 Experiment Key 该目录中包含了所有 S3C2410 RP 目标板所使用的实 验代码 JFLASH vivi 该目录中包含了所有可以下载并烧写到 S3C2410 RP 目 标板上运行的内核和文件系统 kernel 该目录中包含了嵌入式 Linux 操作系统的源码 在此目录中可 以重新定制编译内核 Qt 该目录中包含了嵌入式图形化界面应用程序开发所需要的软件安装 包 root 该目录包含了 2410RP 的文件系统 vivi 该目录是 BootLoader 的源码目录 在此目录中重新编译 vivi 注意在安装中如果报错 找不到 2410RP linux CDROM root 进入 2410RP linux 文件夹后把所有文件夹的名字都改成大写字母就能通过 错误的原因可能是系统在 复制 U 盘中文件时误把大写文件名变成了小写 安装成功后用 armv4l unknown linux gcc v 命令即可查看 gcc 版本信息 如图 6 图图 6 armv4l unknown linux gcc 版本信息 二 arm linux gcc 3 3 2 编译器的安装 在这之后我又安装 arm linux gcc 3 3 2 版本 因为开发版自带的编译器版本 太低 后面编译 mplayer 时会报错 新编译器安装在 usr local arm 3 3 2 bin 下 下载 arm linux gcc 3 3 2 tar bz2 有 71 3M 解压在 usr local 中 修改环境 export PATH usr local arm 3 3 2 bin PATH 安装成功后用 arm linux gcc v 命令即可查看 gcc 版本信息 如图 7 图图 7 arm linux gcc 版本信息 3 2 配置配置 minicom minicom 是一个通信终端程序 通过 minicom 可以设置 监控串口工作状态 接受 显示串口收到的信息 并且在主机和开发板之间传递数据和控制指令 实现 通过主机调试开发板的目的 在 PC 终端输入命令 minicom s 进行配置 port dev ttyS1 baudrate 115200 minit mreset rtscts No 它表示端口为 dev ttyS1 波特率为 115200 停止位 1 位 无奇偶验证位 无数据 流控制 如图 8 所示 注意这里的 ttyS1 首先由于笔记本电脑没有串口 我这里用的是 usb 转串口线 在 win7 系统下已经把 usb 转换为串口信息 所以在虚拟机中不能用 ttyUSB0 用了 会报错 其次 S 一定要大写 如果是小写系统因无法识别而报错 最后 ttyS0 对应 COM1 口 ttyS1 对应 COM2 口以此类推 如果使用 ttyS0 系统报错 可以尝试 ttyS1 和 ttyS2 3 3 配置配置 NFS 服务服务 NFS Network File System 指网络文件系统 是 Linux 系统中经常使用的一 种服务 NFS 是一个 RPC service 很像 windows 中的文件共享服务 它的设计 是为了在不同的系统间使用 所以它的通讯协议设计与主机及作业系统无关 当使 用者想用远端档案时只要用 mount 就可把 remote 档案系统挂接在自己的档案系统 之下 使得远端的档案在使用上和 local 的档案没两样 图图 8 minicom 设置界面 图图 9 setup 图形化设置界面 在 NFS 服务中 宿主机 Servers 是被挂载 mount 端 为了远端客户机 Clients 如 S3C2410RP 目标板 可以访问宿主 PC 机的文件 我们需要配置 宿主机两方面内容 打开 NFS 服务 允许 指定用户 访问宿主 PC 机 a 在终端输入 steup 进入图形化设置界面 如图 9 所示 b 在 System services 选项中使用空格键选中 NFS 服务去掉 ipchains 和 iptables 服务 c 在 Firewall configuration 选项中选择 No firewall 关掉防火墙 注意这里 RedHat 有一个小 BUG 就是无论选择哪个等级的防火墙 下次进来时防火 墙等级还是 HIGH 不用管它 只要选择 No firewall 系统就已经关闭了防火 墙 尽管下次进来时还是 HIGH 如图 10 所示 d 在 exports 文件写入以下命令允许 指定用户 访问宿主 PC 机 192 168 0 rw insecure no root squash no all squash e 设置主机 IP 和开发板 IP 开发板 IP 在 minicom 中设置 图图 10 设置防火墙 连接完网线和串口线之后就可以实现开发板和主机的通信了 在这之前可以使 用 PING 命令来检测是否通畅 如果 PING 不通 可能是以下原因 1 开发板和主机不在同一网段 使用 ifconfig eth0 up 命令 2 主机防火墙开启了 3 看主机是否能 ping 通其他计算机 4 linux 虚拟机设置为桥接 5 关闭无线网卡 如果存在多网卡 一定要将其他网卡关闭 这里的第 4 条和 5 条我都遇到了 VM 虚拟机中网络连接方式默认为 NAT 要 把它改成 BRIDGE 由于笔记本的网卡被开发板占用 我一直在用无线网上网查资 料解决问题 最终才知道恰恰是要关闭无线网才能解决问题 3 4 编译编译 Bootloader Bootloader 是一段小程序 它在系统上电开始时执行 初始化硬件设备准备好 软件环境 最后调用操作系统内核 由于 Bootloadr 需要直接操作硬件 所以它严 重依赖于硬件 而且依据所引导的操作系统不同 也有不同的选择 Bootloader 的 启动过程分为单阶段和多阶段两种 往往多阶段 Bootloader 能提供更为复杂的功能 和更好的移植性 从固态存储设备上启动的 Bootloader 大多都是两阶段的 第一阶 段用汇编代码来实现 第二阶段用 C 语言来实现 一 VIVI 简介 Vivi 是韩国 mizi 公司开发的 bootloader 适用于 ARM9 处理器 Vivi 有两 种工作模式 启动加载模式和下载模式 5 启动加载模式可以在一段时间后 这 个时间可更改 自行启动 linux 内核 这时 vivi 的默认模式 在下载模式下 vivi 为用户提供一个命令行接口 通过接口可以使用 vivi 提供的一些命令 见下表 1 命令功能 Load把二进制文件载入 Flash 或 RAM Part操作 MTD 分区信息 显示 增加 删除 复位 保存 MTD Param设置参数 Boot启动系统 Flash管理 Flash 如删除 Flash 的数据 表表 1 vivi 常用命令 二 vivi 代码分析 vivi 的代码包括 arch init lib drivers 和 include 等几个目录 共 200 多条文 件 Vivi 主要包括下面几个目录 arch 此目录包括了所有 vivi 支持的目标板的子目录 例如 s3c2410 目录 drivers 其中包括了引导内核需要的设备的驱动程序 MTD 和串口 MTD 目录下分 map nand 和 nor 三个目录 init 这个目录只有 main c 和 version c 两个文件 和普通的 C 程序一样 vivi 将从 main 函数开始执行 lib 一些平台公共的接口代码 比如 time c 里的 udelay 和 mdelay include 头文件的公共目录 其中的 s3c2410 h 定义了这块处理器的一些寄 存器 Platform smdk2410 h 定义了与开发板相关的资源配置参数 我们往往只需要修改这个文件就可以配置目标板的参数 如波特 率 引导参数 物理内存映射等 三 vivi 的运行 vivi 的运行分为两个阶段 如图 11 所示 vivi 的第一阶段 完成含依赖于 CPU 的体系结构硬件初始化的代码 包括禁止 中断 初始化串口 复制自身到 RAM 等 相关代码集中在 head S vivi arch s3c2410 目录下 vivi 的第二阶段是从 main 函数开始 同一般的 C 语言程序一样 该函 数在 init main c 文件中 包括打印 vivi 版本 时钟初始化和 IO 口初始化 内存 初始化 堆栈初始化 MTD 设备初始化 私有数据和内置命令初始化 四 vivi 的编译 VIVI 默认是在文件夹 2410RP linux vivi 中 如果是第一次编译 需要输入下列 2 条命令 cd 2410RP linux vivi make clean make 如果 vivi 工程没有问题 会生成的二进制文件 vivi 保存在 2410RP linux vivi 文件夹下以供后面烧写 3 5 编译编译 Linux 内核内核 内核移植主要是指操作系统从一种硬件平台转移到另一种硬件平台上运行 对 于嵌入式系统来说 有各种体系结构的处理器平台 使用的外围硬件也不一样 嵌 入式 Linux 严重依赖于具体硬件 所以只要硬件平台有略微差别 也需要做一些移 植的工作 Linux 内核在 PC 上以文件的形式存在 保存成磁盘文件形式 就是所谓的 映 图图 11 vivi 的启动过程 像文件 Linux 内核映像文件最终是要烧录到目标板的 flash 中 Linux 内核映像文件有两种 一种是非压缩版本 叫 Image 另一种是它的压 缩版本 叫 zImage zImage 是 Image 经过压缩形成的 所以它的大小比 Image 小 为了能使用 zImage 这个压缩版本 必须在它的开头加上解压缩的代码 将 zImage 解压缩之后才能执行 因此它的执行速度比 Image 要慢 6 但考虑到嵌入式系统 的存储空容量一般都比较小 内核要常驻内存 采用 zImage 可以占用较少的存储 空间 因此牺牲一点性能上的代价也是值得的 所以一般嵌入式系统均采用压缩的 内核映像文件 即 zImage 为了达到生成 zImage bin 文件 要分为下面两步 1 配置 2 编译 配置内 核有多种方式 我们选用一种操作性比较好的图形界面 执行 make menuconfig 命 令可以进入 通过此部分 我们可以方便的选择 决定哪些部分被加载并编译入 LINUX 内核 哪些部分被编译为模块 哪些部分不用 配置完成后 执行 make zImage 命令 编译后得到 zImage bin 文件 保存在 2410RP linux kernel arch arm boot 下面 make clean 后第一次使用 make zImage 命令 会占用相当长的时间 宿主机会根 据 autoconfig h 文件对系统进行编译 7 首先使用交叉编译器 armv4l unknown gcc 把各个文件夹下用过的 c 文件编译为二进制的目标文件 其次用 链接器 armv4l unknown ld 把这些目标文件连接到一起 最后压缩 就得到了内 核的镜像文件 zImage 这个文件是可以下载并烧写到 S3C2410 RP 目标板上运行 的内核 3 6 制作文件系统制作文件系统 嵌入式系统与通用 PC 机不同 一般没有硬盘这样的存储设备而是使用 Flash 闪存芯片 小型闪存卡等专为嵌入式系统设计的存储装置 Flash 是目前嵌入式系 统中广泛采用的主流存储器 它的主要特点是按整体 扇区擦除和按字节编程 具有 低功耗 高密度 小体积等优点 目前 Flash 分为 NOR NAND 两种类型 鉴于 Flash 存储介质的读写特点 传统的 Linux 文件系统己经不适合应用在嵌 入式系统中 基于这样的原因 产生了很多专为 Flash 设备而设计的文件系统 这 里我使用的是 Cramfs 文件系统 Cramfs 是 Linux 的创始人 Linus Torvalds 开发的一种可压缩只读文件系统在 Cramfs 文件系统中 每一页被单独压缩 可以随机页访问 其压缩比高达 2 1 为 嵌入式系统节省大量的 Flash 存储空间 Cramfs 文件系统以压缩方式存储 在运行 时解压缩 所以不支持应用程序以 XIP 方式运行 所有的应用程序要求被拷到 RAM 里去运行 但这并不代表比 Ramfs 需求的 RAM 空间要大一点 因为 Cramfs 是采用分页压缩的方式存放档案 在读取档案时 不会一下子就耗用过多 的内存空间 只针对目前实际读取的部分分配内存 尚没有读取的部分不分配内存 空间 当我们读取的档案不在内存时 Cramfs 文件系统自动计算压缩后的资料所 存的位置 再即时解压缩到 RAM 中 另外 它的速度快 效率高 其只读的特点 有利于保护文件系统免受破坏 提高了系统的可靠性 但是它的只读属性同时又是 它的一大缺陷 使得用户无法对其内容对进扩充 Cramfs 映像通常是放在 Flash 中 但是也能放在别的文件系统里 使用 loopback 设备可以把它安装别的文件系统里 使用 mkcramfs 工具可以创建 Cramfs 映像 8 文件系统是 Linux 系统必备的一个部分 主要是一些系统文件和应用文件存储 的地方 但是通常使用的 PC 上的文件系统包括很多功能 但是体积比较大通常有 几百兆之多 但是在嵌入式系统中要使用这样的文件系统是不可能的 所以 嵌入 式系统中的文件系统是一个简化版 包括必须的几个目录和文件 完成需要的功能 即可 下面我们就来对文件系统中包含的东西和文件进行些简要的说明 文件系 统要求建立的目录有 bin sbin etc dev lib mnt proc usr bin 目录下需要包含常用的用户命令 如 sh 等 sbin 目录要包含所有系统命令 如 reboot 等 etc 目录下是系统配置文件 boot 目录下是内核映像 dev 目录含有系统所有的特殊设备文件 lib 目录包含系统所有的库文件 mnt 目录只用于挂接 可以是空目录 proc 目录是 proc 文件系统的主目录 包含了系统的启动信息 usr 目录含有用户选取的命令 cramfs 是一种可读 写的文件系统 制作它的工具叫做 mkcramfs 可以用下 面的命令来生成一个 cramfs 的文件系统 输入下列 2 条命令 cd 2410RP linux root mkcramfs rootfs 2410RP cramfs 就会在 root 目录下生成一个名字叫做 2410RP cramfs 的文件系统 4 QT 开发环境的搭建开发环境的搭建 4 1 QT 简介简介 Qt 是 1991 年奇趣科技开发的一个跨平台的 C 图形用户界面应用程序框架 它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能 Qt 很容易扩 展 并且允许真正地组件编程 基本上 Qt 同 X Window 上的 Motif Openwin GTK 等图形界 面库和 Windows 平台上的 MFC OWL VCL ATL 是同类型的东西 有着以下优点 优良的跨平台特性 Qt 支持下列操作系统 Microsoft Windows 95 98 Microsoft Windows NT Linux Solaris SunOS HP UX Digital UNIX OSF 1 Tru64 Irix FreeBSD BSD OS SCO AIX OS390 QNX 等等 面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高 可重用性较好 对于用户开 发来说是非常方便的 Qt 提供了一种称为 signals slots 的安全类型来替代 callback 这使得各个元件之间的协同工作变得十分简单 丰富的 API Qt 包括多达 250 个以上的 C 类 还提供基于模板的 collections serialization file I O device directory management date time 类 甚至还包括正则表达式的处理功能 支持 2D 3D 图形渲染 支持 OpenGL 大量的开发文档 XML 支持 4 2 QTE 简介简介 Qte 即 Qt embedded 它是 Qt 的一个版本 是一个专门为嵌入式系统设计图形用 户界面的工具包 是挪威 Trolltech 公司的 Qt 的嵌入式版本 其特点包括 开源代 码和详尽的 API 文档 可移植性好 模块化设计可裁减 最小只有 600k 左右 有 自己的窗口系统 可直接对底层图形驱动进行操作 提供压缩字体格式 多种硬件 和软件的输入 支持反锯齿文本和 Alpha 混合图片 可连接数据库 可使程序本地 化 可与 java 集成等 QtE 虽开源 但商业应用需付 license 费用 Qt Emebbed 通 过 Qt API 与 Linux I O 设备直接交互 同 Qt X11 相比 QtE 不需要 X 服务器或 Xlib 库 采用 frame buffer 作为底层图形接口 同时将外部输入设备抽象为 keyboard 和 mouse 输入事件 9 QtE 开发采用交叉编译的方式 在宿主机开发 时通过 qvfb virtual frame buffer 来模拟 frame buffer qvfb 是 X 窗口用来运行和 测试 Qtopia 的系统程序 4 3 嵌入式图形开发环境嵌入式图形开发环境 QTE 的搭建的搭建 cd home tmake tmake export TMAKEDIR PWD export TMAKEPATH TMAKEDIR lib qws linux arm g cd home qte qt 2 3 2 new export QTDIR PWD export QTEDIR QTDIR export LD LIBRARY PATH QTDIR lib QTEDIR lib LD LIBRARY PATH make clean configure xplatform linux arm g shared qvfb depths 4 8 16 32 i 在 configure 过程中 会出现如下打印的信息 进行如下对话选择 ii Type G to view the GNU General Public License iii Type yes to accept this license offer iv Type no to decline this license offer v Do you accept the terms of the license 输入 yes 回车 i Choose a feature configuration 2 Minimal 630 kB 3 Small 960 kB 4 Medium 1 5 MB 5 Large 3 MB 6 Everything 5 MB 7 Your own local configuration src tools qconfig local h i Sizes are stripped dynamic 80386 bu ild Static builds are smaller ii Your choice default 5 输入 5 回车 i Building on linux x86 g shared ii Building for linux arm g shared iii Thread support no iv GIF support no v MNG support no vi JPEG support no vii Creating makefiles viii Qt is now configured for building Just run make ix To reconfigure run make clean and configure x 当生成 Makefile 之后 就可以在上面同一个终端窗口下输入 make 对 QTE xi 源码进行编译了 make i 若编译过程中没有出现任何 error 则会有如下提示 ii The Qt library is now built in lib iii The Qt examples are built in the directories in examples iv The Qt tutorials are built in the directories in tutorial v Note be sure to set QTDIR to point to here or to wherever you move these directories vi Enjoy the Trolltech team vii 现在 QTE 环境已经编译成功了 5 移植移植 mplayer MPlayer 是一个开源的软件 我们可以从他的官网得到他的全部源码 MPlayer 被认为是目前 LinUx 下的最好的媒体播放工具 它能支持几乎所有流行的音频和视 频格式的解码及播放 因此 他也被移植到了 Windows 操作系统下 使其应用变得 更加广泛 相比于其它播放器 MPlayer 在运行时只占用很少的资源 它不需要系 统提供任何硬件或软件解码器就可以播放各种媒体格式 对于 MPEG 格式文件的支 持尤其好 MPlayer 不仅在拖动播放进度时快得不可思议 而且在播放有些破损的 文件时效果也好得出奇 在低主频处理器的机器上 MPlayer 更是占尽优势 此外 MPlayer 还支持除 X86 外的多种处理器 在我们的应用中就是要把它移植到 ARM 上的 Linux 系统下 10 Mplaver 本身自带了多种类型的解码器 包括 xvid ae3filter ffdshow 099 vobsub 等等看 DVDrip 必备的解码器 因此它能支 持大多数的媒体格式如 MPEG VOB ASF WMA WMV AVI OGM RM QT MOVP4 MKV VIVO FILMFLI NuppelVidco mPeg 和 RoQ 文件 还能观看 VCD SvCo 3ivx DVD DivX3 4 5 甚至 WMV 电影 当然 我们移植到 ARM 上的 MPtayer 由于收到嵌入式系统本身能力的限制 可以播放的格式就少了很多 Mplayer 的另一大特点是能广泛地支持各种音视频输出驱动 它不仅可以使用 Xll Xv DGA OPenGL DirectFB SVGAlib fbdev AAlib libeaca 也能使用 GGI 和 SDL 还能使用 VESA 兼容显卡上的 VESA 以及某些低级的显卡相关的驱 动和一些硬件 MpEG 解码器卡 比如 SiemensnVB DXRZ HauPpau 它们中绝大 多数支持软件或硬件缩放 所以你可以享受全屏电影 5 1 安装安装 libmad arm 系列的 cpu 一般都没浮点运算单元 而 mplayer 的 mp3 解码默认使用 mp3lib 这个是浮点运算库 在 arm 上是不能运行的 这就需要额外的音频解码器 libmad 在交叉编译 mplayer 时 加上 enable mad 就可以调用 mad h a 下载 libmad 包 libmad 0 15 1b tar gz b 打开一个终端 进入 libmad 的目录 输入配置命令 configure enable fpm arm host arm linux disable shared disable debugging prefix usr local arm 3 3 2 lib CC arm linux gcc c make d make install 参数解析 enable fpm arm host arm linux disable shared disable debugging prefix usr local arm 3 3 2 lib make install 安装路径 CC arm linux gcc 3 3 2 的交叉编译工具链 这样就可以看到 usr local arm 3 3 2 lib 目录下多了 include 和 lib 目录 liclude 目 录下有文件 mad h lib 目录有文件 libmad a libmad la 这些就是 libmad 相关的库 5 2 交叉编译交叉编译 Mplayer 5 2 1Mplayer 安装步骤 我用的版本是 MPlayer 1 0pre8 tar bz2 可以在 Mplayer 的官方网站上下载 下面是编 译的步骤 a 解压缩 MPlayer 1 0pre8 tar bz2 b 进入 MPlay
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 股权转让及股权激励计划登记协议
- 防水技术培训与施工管理服务协议
- 拉美金融投资与风险管理合作协议
- 国际房产投资忠诚协议及海外房产归属明确书
- 婚前个人首饰财产分割与婚姻协议
- 《南航运行手册》课件
- 护理影响评估试题及答案
- 如何利用真题提升2025年建造师成绩的试题及答案
- 《物业服务公司》课件
- 书香主题活动策划与实施指南
- 广东省普通高中学生档案
- GB/T 12755-2008建筑用压型钢板
- GA 374-2019电子防盗锁
- 人工髋关节置换术后的护理 课件
- 九州通集团简介
- 2022-2023学年人教版选择性必修3 3.4 第1课时 羧酸 学案
- 2022年浙江小升初科学试卷及评分标准答案
- 移液器(枪)容量内部校核记录
- 市场管理及产品规划课件培训课件(PPT-202张)
- 标准作业指导书(SOP)培训PPT课件
- 加班调休管理制度
评论
0/150
提交评论