基于ARM的程序移植 - 图文(6)

2019-04-14 12:04

件,遵循 GPL 条款发布(1.2.6及之前的版本以LGPL条款发布),其目标是为实时嵌入式 Linux/?Clinux、eCos、?C/OS-II、VxWorks 等操作系统建立一个快速、稳定和轻量级的图形用户界面支持系统。与QT/Embeddoed、MicoroWindows等其他GUI相比,MiniGUI最大的特点是占用资源少,在主频为66M的ARM7内核也能够稳定的运行。经过几年的发展已经发布了很多的版本,现在比较稳定的是1.3.x版本,而且源码是开放的,方便我们大家学习的研究。本文就是采用的此版本[14]。

3.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/,所以修改如下:

22

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.2/bin/arm-linux-ar

RANLIB=/usr/local/arm/3.3.2/bin/arm-linux-ranlib STRIP=/usr/local/arm/3.3.2/bin/arm-linux-strip 然后运行脚本文件 ./ setup.sh make

make install

如果运行成功,就会生成定制的MakeFile文件,执行make和make install 后相应的函数库就安装到/minigui/miniguitmp/lib下,在执行make install命令是用户一定要具有root权限。

下面安装MiniGUI资源,这些资源包括基本字体、图标、位图和鼠标光标等等。解压minigui-res- 1.3.x tar.gz(ar zxf minigui-res-1.3.x tar.gz),进入生成目录,修改/minigui1.3.3/miniguitmp 执行

make install

就可以把相关文件拷贝到/minigui/miniguitmp/目录下的相关目录中去。 执行后会在/minigui/miniguitmp/ 下生成usr/local/lib/minigui/res 相关目录,以下为res目录下的子目录,用户有兴趣可以进入以下目录查看其中的内容。 bmp cursor font icon imetab

(2) 制作带有MiniGUI的文件系统映象(root_minigui.cramfs)

CRAMFS是Linus Torvalds撰写的只具备基本特性的文件系统。CRAMFS是一个简单的,经压缩以及只读的文件系统,通常要为文件系统建立映象,首先要建立并安装CRAMFS工具,在这里我们使用mkcramfs工具建立自己的文件系统映象。

开发板上的linux,自带有VESA FrameBuffer设备驱动程序,并且初始状态已经激活,这样MiniGUI就可以使用FrameBuffer作为图象引擎来显示图象。

将/minigui/miniguitmp/lib中所有的库文件复制到root_minigui的

23

configure.linux文件,指明TOPDIR=

/usr/lib 中,将 /minigui/miniguitmp/usr/local/lib/minigui目录复制到root_minigui的/usr/lib目录中,在 /root_dir/root_minigui/usr/local 下执行ln –s /usr/lib lib,生成一个链接文件。 修改/minigui/miniguitmp/etc/MiniGUI.cfg文件,找到 ial_engine=console mdev=/dev/mouse 改为

ial_engine=SMDK2410 mdev=/dev/ts 然后保存退出。

/minigui1.3.3/miniguitmp/etc/MiniGUI.cfg

/root_dir/root_minigui/usr/local/目录中。

以上把MiniGUI运行库和其它资源环境已经拷贝到root_minigui文件系统中,同时把mde-1..3.0/src/下可执行文复制到/usr/local/bin下。然后编译文件系统,在/root_dir执行

[root@localhost root_dir]# mkcramfs root_minigui root_minigui.cramfs 就可以生成 root_minigui.cramfs 文件系统映象,把root_minigui.cramfs 复制到 PC 机的/tftproot 下,通过tftp命令把文件系统下载到2410开发板上。 重启开发板后执行:

#cp /usr/local/bin/* /tmp //将可执行文件复制到/tmp 临时目录下

#cd /tmp //用cd 命令去到/tmp 目录下

经过以上工作,用户就可以在/tmp目录下执行自己的应用程序了。 例如: 执行

#chmod 777 helloworld //改变权限,使其为可执行

#./helloworld //执行 helloworld

这样就成功的将带有minigui界面的文件系统成功的移植到了我们的开发板上了。

24

第四章数据库移植的设计与实现

随着嵌入式系统的广泛应用和用户对数据处理和管理需求的不断提高,各种智能设备和数据库技术的紧密结合已经得到了各方面的重视。不久的将来嵌入式数据库将无处不在。纵观目前国际、国内嵌入式数据库的应用情况,目前基于嵌入式数据库应用的市场已经进入加速发展的阶段。

4.1 嵌入式数据库

4.1.1 嵌入式数据库的设计

嵌入式数据库系统是指支持某种特定计算模式或移动计算的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。嵌入式数据库的使用是采用程序驱动,即由程序调用相应的API来实现数据的存取。具有体积小巧、快速高效、稳定可靠、可移植性等特点,非常适用于嵌入式环境下的数据管理.。

嵌入式数据库的主要设计思想如下图1所示,在向上层应用提供标准的数据库接口的同时,摆脱传统数据库仅仅由软件驱动的束缚,根据嵌入式系统的实际情况用SOC技术同时实现硬件驱动。软件部分按SQL92标准实现SQL语句的解析,实现事务管理功能、数据同步机制、数据的备份和恢复,软件部分不关心数据的实际存储,用标准C实现,能同任何嵌入式操作系统内核一同编译,能支持各嵌入式操作系统的安装格式,由数据库硬件驱动专用芯片实现对实际数据的访问功能(存储器读写,I/O通讯,异构数据库接驳)。

图1 嵌入式数据库驱动结构图

25

4.1.2. 嵌入式数据库SQLite

SQLite 是D. Richard Hipp 在2000年开发的一个小型嵌入式数据库。他是完全独立的,不具有外部依赖性,可以较为方便地应用于嵌入式系统中。其源代码完全开放,可以免费用于任何用途,包括商业目的。SQLite 虽然是个极端轻量级的关系数据库,却保留了数据库的大部分特征,他提供了对SQL92 标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。其主要特征如下::

(1) 支持原子的、一致的、独立的和持久的(ACID) 事务特性,即使系统崩溃和掉电。

(2) 零配置(Zero2configuration),无需安装和管理。 (3) 一个完整的数据库存储在单一磁盘文件中。

(4) 数据库文件可以在不同字节顺序的机器间自由共享。 (5) 支持数据库大小至2 TB。

(6) 字符串和二进制大对象(BLOBs) 的大小仅被有效内存限制。 (7) 源码体积小,编译后低于250 kB。 (8) 大部分的操作比关系型数据库引擎要快。 (9) 简单易用的API。

SQLite 由于小、快、简单、可靠,而且作者完全放弃版权,从他一发布出来,便深受欢迎。对于嵌人式环境,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此SQLite 数据库是一个很好的选择。

4.2 SQLite 内部结构及开发技术

4.2. 1 SQLite 内部结构

SQLite 采用模块化的设计,主要由4个部分组成:内核(Core)、SQL编译器( SQL Compiler)、后端(Backend)以及附件(Accessories)。内部结构如图2所示。

26


基于ARM的程序移植 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:陕西省渭南市澄城县寺前中学2016届高三数学推中试题(3)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: