嵌入式Linux下基于MiniGUI的GIS实现
1引言
随着软硬件资源的成熟与完善,嵌入式技术的应用越来越广泛,而开放源码的Linux操作系统成为开发嵌入式产品的首选。MiniGUI是一个适用于嵌入式系统的、功能强大的、轻量级的图形用户界面支持系统,它具有占用资源少、高性能、高可靠性及可配置的特点,已经成功移植到多种硬件和操作系统平台上。我们利用MiniGUI在Linux上实现了一个嵌入式GIS,它能实现地图的显示、放大、缩小、漫游等基本功能。
2、MiniGUI的特点和体系结构
2.1 MiniGUI的特点
与其它针对嵌入式产品的图形系统相比,MiniGUI具有以下一些技术优势:
1)遵循GPL条款的纯自由软件。
2)多字符集和多字体支持。
3)Windows的资源文件支持,如位图、图标、光标、插入符、定时器及加速键等。
4)可配置。可根据用户的需求进行配置和编译。
5)提供了完备的多窗口机制和消息传递机制。
6)轻型、占用资源少。 MiniGUI总体的系统占有空间应该在 2MB到4MB左右。在某些系统上,功能完备的MiniGUI系统本身所占用的空间可进一步缩小到1MB以内。
7)高性能、高可靠性,可移植性好。
2.2 MiniGUI的体系结构
从整体结构上看,MiniGUI是分层设计的,层次结构如图1所示。
在最底层,GAL和IAL提供底层图形接口以及输入设备的驱动;中间层是MiniGUI 的核心层,包括窗口系统必不可少的各个模块;最顶层是API,为用户提供编程接口。
3、MiniGUI在2410上的移植
系统采用由韩国Samsung公司生产的ARM核32位RISC微处理器S3C2410;交叉编译工具采用由韩国Mizi公司开发和维护的 armv41交叉编译工具链;MiniGUI源代码采用libminigui-1.3.3.tar.gz、minigui-res- 1.3.3.tar.gz和mg-samples-1.3.0.tar.gz。 本系统采用MiniGUI-Threads模式,移植过程如下:
1)将armv41交叉编译工具链拷贝到/opt/host/arm41/bin/目录下。
2)在pc机的根目录下建立minigui-free目录,在该目录中建立nfsroot目录。
3)将MiniGUI的源代码copy到/minigui-free目录。解压缩这三个软件包。
4)在libminigui中配置lib。
l cd /minigui-free/libminigui-1.3.3
l ./configure --host=arm-unknown-linux --enable-jpgsupport=no --enable-pngsupport=no --enable-gifsupport=no --disable-lite --prefix=/minigui-free/nfsroot --enable-smdk2410ial=yes
l 修改configure,在文件开头处增加以下代码:
CC=/opt/host/arm41/bin/arm41-unknown-linux-gcc
CPP=/opt/host/arm41/bin/arm41-unknown-linux-cpp
LD=/opt/host/arm41/bin/arm41-unknown-linux-ld
AR=/opt/host/arm41/bin/arm41-unknown-linux-ar
RANLIB=/opt/host/arm41/bin/arm41-unknown-linux-ranlib
STRIP=/opt/host/arm41/bin/arm41-unknown-linux-strip
l make
l make install
l 删除/minigui-free/nfsroot中的minigui目录, *.a, *.la文件。
l 执行/opt/host/arm41/bin/arm41-unknown-linux-strip *。
5)配置res。
l cd /minigui-free/minigui-res-1.3.3
l 修改config.linux文件,指明TOPDIR=/minigui-free/nfsroot。
l make install
6)配置mg-sample。
l cd /minigui-free/mg-samples-1.3.1
l ./configure --build=i686-pc-linux-gnu --host=arm-unknown-linux --prefix=/minigui-free/nfsroot/ LDFLAGS=-L/minigui-free/nfsroot/lib CPPFLAGS=-L/minigui-free/nfsroot/include CFLAGS=-L/minigui-free/nfsroot/include
l configure文件的修改同4)。
l make
7)制作ramdisk。
l 将/minigui-free/nfsroot/lib中所有的库文件copy到ramdisk的/lib中,将/minigui-free /nfsroot/usr/local/lib/minigui目录copy到ramdisk的/lib目录中。
l 在ramdisk中建立/usr/local目录,在该目录中建立连接ln –s /lib lib。
l Copy /minigui-free/MiniGUI.cfg文件到ramdisk的/etc目录。
l Copy /minigui-free/mg-sample-1.3.1/src/目录下所需要的文件到ramdisk中的/bin目录。
8)将ramdisk烧写到板子上。
4 GIS开发
在嵌入式产品中使用MiniGUI之前,开发人员通常先在PC机上安装MiniGUI,然后使用PC机来编写MiniGUI应用程序,调试运行成功后再将其移植到嵌入式产品上运行。我们根据这种编程模式利用MiniGUI开发了一个地理信息系统。该系统能完成电子地图的显示、放大、缩小、漫游等基本功能,为提高系统性能,系统采用了以下处理技术。
4.1 系统数据组织形式
为了使系统取得合理的响应时间,空间数据应根据应用目的、数据特点进行合理组织。由于嵌入式设备任意时刻屏幕显示的图形数据只是读入数据的一部分,因此适当减少非屏幕显示区域的数据,并不影响屏幕图形数据的显
嵌入式Linux MiniGUI S3C2410 GIS 相关文章:
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 基于嵌入式Linux的组态软件实时数据库的设计(02-01)
- 基于ARM+DSP的嵌入式Linux数控系统设计(11-18)
- 基于嵌入式Linux的细胞特征提取算法设计(11-19)
- 基于S3C2410的嵌入式Linux系统构建(03-02)
- 嵌入式Linux网络编程之:网络基础编程(08-13)