基于ARM的程序移植Word下载.docx
《基于ARM的程序移植Word下载.docx》由会员分享,可在线阅读,更多相关《基于ARM的程序移植Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
Keywords:
embeddedsystem;
S3C2410,softwaremigration
目录
第一章绪论1
1.1选题的背景及意义1
1.2嵌入式数据库的移植应用2
1.3多媒体播放器的移植3
第二章嵌入式开发环境4
2.1硬件平台的设计方案4
2.1.1核心板设计4
2.1.2 外设电路设计7
2.2嵌入式软件开发环境9
2.2.1引导装载程序10
2.2.2宿主机开发环境配置11
2.2.3交叉开发环境的建立12
2.2.4内核的编译13
2.2.5烧制内核映像和文件系统14
2.3MiniGUI在S3C2410开发板上的移植过程15
第三章数据库移植的设计与实现19
3.1嵌入式数据库19
3.1.1嵌入式数据库的设计19
3.1.2嵌入式数据库SQLite20
3.2SQLite内部结构及开发技术21
3.2.1SQLite内部结构21
3.2.2
SQLite开发技术23
3.3 SQLite在ARM-Linux平台上的实现24
第四章多媒体播放器的设计26
4.1嵌入式播放器Mplayer的设计26
4.1.1播放器的工作流程26
4.1.2播放器的逻辑结构27
4.1.3Mplayer播放器的目录文件组织结构28
4.1.4播放器对解码器和输出设备的管理方式28
4.2Mplayer的移植29
4.2.1安装交叉编译工具及解压源代码29
4.2.2编译Mplayer30
4.2.3调试30
总结32
参考文献33
致谢34
第一章绪论
1.1选题的背景及意义
随着科技的发展和社会的进步,嵌入式计算机系统获得了越来越广泛的应用。
在办公自动化领域,消费领域,通信领域,工业控制领域和军事领域等等领域中,都可以见到嵌入式系统的影子。
尤其是在办公自动化、消费电子和通信领域中,可以说嵌入式系统应用得非常普遍。
毫无疑问,伴随着嵌入式市场的蓬勃发展,会有越来越多的嵌入式设备希望得到嵌入式数据库管理系统的支持,进行数据的统一管理。
今天嵌入式系统尤其是ARM及ARM的程序移植带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(EmbeddedSystemConference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场.美国汽车大王福特公司的高级经理也曾宣称,"
福特出售的'
计算能力'
已超过了IBM"
由此可以想见嵌入式计算机工业的规模和广度.1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的EmbeddedInternet成为一个技术新热点.在国内,"
维纳斯计划"
和"
女锅计划"
一度闹得沸沸扬扬,机顶盒、信息加电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用.据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数.在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作.由此可见,嵌入式系统技术发展的空间真是无比广大(ARM及ARM的程序移植)。
在一定程度上,对当代的办公自动化、工业控制、无限通信领域、网络方面提供了极大的方便。
对嵌入式领域注入了血液,也对编程人员带来了便利。
1.2嵌入式数据库的移植应用
嵌入式数据库的名称来自其独特的运行模式。
这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。
嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。
它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。
嵌入式运行模式允许嵌入式数据库通过SQL来轻松管理应用程序数据,而不依靠原始的文本文件。
嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
在嵌入式系统中,对数据库的操作具有定时限制的特性,这里把应用于嵌入式系统的数据库系统称为嵌入式数据库系统或嵌入式实时数据库系统(ERTDBS)。
可靠性要求是毋庸置疑的,嵌入式系统必须能够在没有人工干预的情况下,长时间不间断地运行。
同时要求数据库操作具备可预知性,而且系统的大小和性能也都必须是可预知的,这样才能保证系统的性能。
嵌入式系统中会不可避免地与底层硬件打交道,因此在数据管理时,也要有底层控制的能力,如什么时候会发生磁盘操作,磁盘操作的次数,如何控制等。
底层控制的能力是决定数据库管理操作的关键。
目前嵌入式软件系统开发的挑战之一,体现在对各种数据的管理能否建立一套可靠、高效、稳定的管理模式,嵌入式数据库可谓应运而生。
嵌入式数据库是嵌入式系统的重要组成部分,也成为对越来越多的个性化应用开发和管理而采用的一种必不可少的有效手段。
嵌入式数据库用途广泛,如用于消费电子产品、移动计算设备、企业实时管理应用、网络存储与管理以及各种专用设备,这一市场目前正处于高速增长之中。
举简单例子,手机原来只用来打电话、发短信,现在手机增加了很多新的功能,比如彩信、音乐、摄影、视频等等,应用的功能多了,系统就变得复杂。
1.3多媒体播放器的移植
随着人们生活水平的提高,消费结构发生了巨大变化,消费者用于娱乐方面的支出在总支出中所占的比例正在不断扩大。
掌上多媒体系统可以满足人们对于试听以及便携的需求,另外还可以实现一些其他功能,如图片浏览、网络下载、以及影音录制等。
目前市场上的掌上多媒体系统多是WindowsCE、Symbian、PalmOS等商用操作系统,其开放的程序不够高,而且价格偏高,不适于第三方应用软件的移植。
ARM体系作为专用嵌入式系统设计的通用处理器内核,具备高性能、低功耗、易扩展的特点。
本系统基于ARM9、嵌入式Linux操作系统设计并实现了一个更为开放的嵌入式平台,来实现掌上多媒体系统的诸多功能。
第二章嵌入式开发环境
2.1硬件平台的设计方案
参考华恒HHARM9-EDU-R3教学实验平台的硬件电路设计,为了减小难度,增加通用性,我们可以选用跟实验平台相似的设计,把整个硬件电路设计成两个主要部分:
核心板和外设板,两者通过插槽接口相接,功能的扩展只需通过对外设板的修改来达到。
2.1.1核心板设计
1.存储部分构成
核心板内存由图2-2中两块HY57V561620CT为16M*16位数据宽度的SDRAM构成,两片拼成32位模式,公用nGCS6片选空间,共64M RAM。
通过参考s3c2410技术手册的内存映像地址,如图2-3,可以知道内存的起始地址为0x30000000[12]。
核心板还集成有一片8M*16位数据宽度的INTEL28F128J3CFLASH,通过nGCS0作为片选。
根据地址的分配与片选设置,我们设计的核心板存储部分电路图如图2-3和图2-4所示,从图2-3中可以看到,FLASH使用的地址线为MA1到MA24,而使最高位A0接地,这样使得FLASH的0地址为0x01000000,以后内核等的烧写地址也是以此为准。
数据地址线为MD0到MD15,正好为16位的数据宽度。
从图2-4可见,两片内存使用的地址线为MA2到MA25,而数据线分别为MD0-MD15和MD16-MD31,由于共用地址线和片选nGCS6,而分别使用32位数据线,所以这两片16位宽度的内存共同组成了32位宽度的内存存储空间。
图2-3FLASH电路接线
图2-4内存电路接线
2.供电部分构成
核心板的供电部分由LV14A六角施密特触发倒相器(HEXSCHMITT-TRIGGERINVERTERS)和AMS1117 800mA低门限稳压器(800mALowDropoutVoltageRegulator)构成,具体电路如图2-5和图2-6所示:
图2-5LV14A电路
图2-6AMS 1117电路
从图2-5中还可以看到,核心板还有相应的电源指示灯D5 LED,当核心板接收到reset信号时,指示灯灭,而正常工作状态,指示灯亮。
3.振荡电路部分构成
核心板的振荡电路由两个晶振电路组成,如图2-7。
12MHz的晶振与s3c2410的XTIpll、XTOpll两个管脚相接,为内部振荡电路提供振荡源(forinternalOSCcircuit)。
32.768KHz晶振与XTIrtc、XTOrtc两个管脚相接,作为实时时钟(RealTimeClock,RTC)振荡源[11]。
图2-7振荡电路
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.1.2 外设电路设计
本设计中需要使用到的外设有LCD显示屏和触摸屏,并且作为一个应用平台,外设电路不再包括有调试用的COM接口和网络接口。
因为软件的调试可以先在HHARM9-EDU-R3平台上测试好后,再把核心板放到外设电路板上进行实测。
1.LCD显示屏模块接口
基于电路设计的模块化,我们把LCD显示屏与外设板分开,使用40针的数据线进行联接,因为LCD屏及其外围电路通常可以整块地进行购买,这样设计也即省下了不必要的电路设计的麻烦。
LCD屏我们选用HHARM9-LCD-R4模块,屏幕的大小为240x320象素,LCD屏模块接口电路如图2-8所示。
图2-8LCD屏模块接口电路
2.触摸屏电路
触摸屏控制器选用ADS7846,由于触摸屏与LCD显示屏是贴在一起的,所以ADS7846的采集信号输入也是通过LCD显示屏模块接口引线接出来的,如图2-8中的RIGHT、LEFT、UPPER、DOWN引脚。
通过对这四路输入信息的转换,即可把触摸屏上响应的电压信息转换成相应的坐标信息。
ADS7846电路如图2-9所示。
图2-9触摸屏控制器ADS7846电路
2.2嵌入式软件开发环境
本文设计的播放器是基于嵌入式Linux操作系统进行设计。
嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。
相对于WinCE、pSOS、palm05等商用实时操作系统(RTOS)它具有源码开放、易移植、模块化、资源丰富等优势。
支持多线程、多进程;
支持多种平台,如x86、PowerPC、ARM、MIPS等等。
如图2-9所示,它是由一个内核和一些可以定制系统模块组成,如文件模块,网络模块,各种驱动模块等。
针对本应用,对其进行了裁剪和配置,只包含了系统所需的模块支持ext2\jffs2等文件系统;
内存驱动模块提供内存管理功能;
网络接口模块支持以太网接口;
GPIO驱动模块主要是提供给键盘和触摸屏使用;
图形驱动模块是图形用户界面(GUI)和图像显示的底层支撑模块;
音频设备输出驱动模块支持音频数据的数模转换。
图2-10嵌入式Linux体系结构
2.2.1引导装载程序
BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
最终,bootloader把操作系统内核映像加载到RAM中,并将系统控制权传递给它。
Bootloader程序与硬件平台有很强相关性,不同开发板需要不同的bootloader。
与Linux一样,网上有很多开放源代码的bootloader,在为自己的开发板写bootloader程序时,可以先找到与硬件平台相类似的bootloader,然后只要做一些改动就可以在开发板上运行了。
Bootloader的功能相当于一个通信控制器,有了它之后,才可以通过串口或网口完成内核的加载和应用程序的烧写。
当然,利用JTAG技术也可以完成上述任务,但是,JTAG烧写速度很慢[12]。
本系统采用的是ppcboot,ppcboot在嵌入式系统中相当于PC机的BI0S加上操作系统引导头部的内容,并且引导操作系统进行装载和运行,ppcboot启动后有一系列的命令,使得我们能够方便地对FLASH、RAM进行操作,同时ppcboot己经对系统的频率、定时器进行了设置,初始化了一个调试串口,这样可以通过串口或以太网进行数据的下载。
PPCBoot的主要特点如下表所示[1]:
功能
描述
系统加载
支持NFS、以太网挂载操作系统和根文件系统
内存操作
支持内存查看、修改和比较
设备驱动
支持串口、FLASH、外部SDRAM、EEP、ROM、LCD、USB、PCI等驱动
上电自检
自动检测FLASH、SDRAM选型及使用情况,CPU类型
交互命令
通过设定和访问环境变量灵活配置系统各项参数,灵活升级
其他特点
支持在线读写Flash,支持SCC/FCC以太网、TFTP引导、IP和MAC的预置功能
表2-1PPCBoot的主要特点
2.2.2宿主机开发环境配置
1.安装Linux系统
宿主开发环境,我们选用在windows下安装VMwareWorkStation虚拟机+RedHatLinux9.0的组合来组建[2]。
在虚拟机中安装Linux系统,我们选择自定义安装(Custom),安装过程中先不用指定PC机上网卡的IP地址,在配置防火墙(Firewall)时,选择不安装防火墙(NoFirewall),在选择软件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服务器,它是用于在网络中传送大型文件时用的,通过它可以方便进行文件的传输。
以上的详细配置可以参见参考文献[1]中“NFS和TFTP服务器的配置”一节。
开发板上程序的调试与这两个服务器分不开,需要使用NFS的mount命令来共享宿主机目录的,而把宿主机上的镜像文件下载到开发板的内存中去则需要使用TFTP服务器,所以这两个配置非常重要。
3.minicom的配置
minicom是一个RedHatLinux9.0自带的通信终端程序,通过minicom可以设置、监视串口工作状态,接收、显示串口收到的信息,并且在主机和开发板之间传递数据和控制指令,从而实现通过主机上调试开发板的目的。
首先在shell下运行ln-sf/dev/ttyS0/dev/modem来设置使用第一个串口,然后设置minicom的配置文件/etc/minirc.dfl为
prport/dev/ttyS0
pubaudrate115200
puminit
pumreset
purtsctsNo
它表示端口为/dev/ttyS0、波特率为115200、数据位8位、停止位1位、无奇偶校验位、无数据流控制。
2.2.3交叉开发环境的建立
PCLinux上的编译器安装于/usr/bin目录下,这是在完全安装RedHatLinux时已经安装好的,但是对于交叉编译,需要交叉编译器来生成可以在ARM开发板上执行的二进制应用程序。
我们安装的是ARM板的交叉编译器,可以上网去下载编译器,也可以使用华恒实验箱自带的编译工具。
这里我们使用后者,安装华恒的光盘后,即可在/opt/host/armv4l/bin目录下安装了交叉编译器[2]。
为了以后使用的方便,我们还可以在可执行程序的路径加入到PATH中去:
#vim~/.bashrc
在.bashrc最后面加上一句
exportPATH=”$PATH:
/opt/host/armv4l/bin”
再执行
#source.bashrc
重启环境变量。
当需要使用时就可指出编译器的位置。
2.2.4内核的编译
安装华恒提供的光盘时,嵌入式Linux内核及设备驱动源代码(光盘安装后建立完备的开发环境)被安装到/HHARM2410/kernel目录下,交叉编译的工具如下表2-4所示被放置到/opt/host/armv4l目录下。
表2-4交叉编译的工具
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
makezImage
编译完成后,就会自动把zImage复制到/tftpboot/目录下以供TFTP下载。
如果需要对内核进行配置和裁剪,可以在/HHARM2410/kernel目录下键入
makemenuconfig
则出现如下界面,可逐项对内核和驱动模块进行选择和配置:
可见内核版本为:
LinuxKernelv2.4.18-rmk7-pxa1
一些关键的设置:
SystemType--->
(S3C2410-based)ARMsystemtype
---S3C2410Implementation
[*]SMDK(MERITECHBOARD)
[*]changeAIJI
<
>
S3C2410USBfunctionsupport
---ProcessorType
[*]ARM920TCPUidle
[*]ARM920TI-Cacheon
[*]ARM920TD-Cacheon
[]ForcewritethroughcachesonARM920T
[]SupportThumbinstructions(experimental)
完成自己的设置后,退出,保存配置,然后执行makezImage即可编译生成自己定制的内核映像文件,并自动被复制到/tftpboot/目录下以供烧写。
2.2.5烧制内核映像和文件系统
内核映像和文件系统烧写的大致过程如下:
(1)在PC机启动minicom,按复位键重启开发板,在minicom中应该有启动信息,立即按空格键或回车键,让开发板停留在ppcboot的提示符“SMDK2410#”,进行以下烧写;
(2)下载、烧写内核
zImage,tftp0x30008000zImage//通过TFTP下