嵌入式Linux下基于MiniGUI的GIS实现

发布者:Qianfeng最新更新时间:2012-03-26 来源: 微计算机信息 关键字:嵌入式Linux  MiniGUI  S3C2410  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,为用户提供编程接口。[page]

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 系统数据组织形式

为了使系统取得合理的响应时间,空间数据应根据应用目的、数据特点进行合理组织。由于嵌入式设备任意时刻屏幕显示的图形数据只是读入数据的一部分,因此适当减少非屏幕显示区域的数据,并不影响屏幕图形数据的显示。为此,系统将数据分为若干个数据卷,每个数据卷又包含多个数据集,-个数据集就是某个比例尺的地图数据。一个数据集又分成若干个图幅,一个图幅又按矩形分块方式划分成若干个逻辑数据块。在实际应用中,按照每一点的坐标确定其所在的块。读取数据时,只读该点所在的数据块,从而缩小了读取的数据量,加快了显示和分析的速度。[page]

此外,系统采用了一些数据压缩方法。对数据的压缩方法通常可分为对坐标点有损压缩和坐标点无损压缩。由于嵌入式设备的存储器容量有限,而GIS系统数据量很大,为提高系统性能,通常这两种压缩方法都采用。次序是先进行有损压缩删除不必要的点,然后再进行无损压缩,将空间数据变为相对坐标,以减少单个坐标点的存储空间。具体采用的方法如下。

1)删除在一条笔直的道路上的中间结点,只保留首尾两点。

2)将双精度型或浮点型的坐标映射为整型坐标,数据量可以减少一半。

3)每一条弧段(包括区域边界和线状地物)只记录其起点坐标(x,y),其后续点坐标用相邻两点间的x、y的偏移量代替,即弧段除起始点以外的其它后续点只需用短整型记录,这样就可以将数据量压缩到原来的1/4左右。

4.2 显示速度

为提高地图显示和刷新速度,采用了以下处理技术。

1)引入一个内存DC,首先利用内存DC绘制地图。当需要显示地图时,利用BitBlt函数将内存DC中的地图复制到显示DC上。

2)系统引入变量m_pCSections和IDS。变量m_pCSections是一个链表,该链表中每个元素代表上次显示时读取的图块头信息。IDS也是一个链表,其中每个元素为m_pCSections中与当前视窗有交集的图块的ID号。具体处理步骤如下:

(1) 对m_pCSections中每一个元素,判断它与当前视窗是否有交集,若没有交集,则从m_pCSections中删除该元素。

(2) 对m_pCSections中的每个元素,将它的ID号添加到链表IDS中。

(3) 对数据集中的每个图块,循环执行以下操作:

判断该图块的ID号是否在IDS中,若在,则从IDS中将该ID号删除,继续处理下一图块。

若不在,则从数据文件中读取该图块的图块头信息,根据它的图块头信息判断该图块与当前视窗是否有交集。若交集不为空,则从数据文件中读取该图块的具体图层信息;若交集为空,则释放为该图块头信息分配的存储空间。

3)数据文件中存放每一条线段和面的最小外扩矩形的左上角和右下角信息,这样,就不需在程序中求它的最小外扩矩形,提高了显示速度。

4.3 界面设计

由于嵌入式设备的显示屏幕通常很小,分辨率也不高,而显示一幅较满意的地图又需要一定的屏幕空间,这就需要尽量减少其它元素占用的空间以将尽可能多的区域留给地图显示。为此,在嵌入式系统中通常将界面元素设计为按需显示。为此,系统中将菜单设计为弹出式菜单,仅当用户需要时才弹出以使用户执行所需的功能。 

5 结束语

系统利用MiniGUI在Linux上实现了一个嵌入式GIS,该系统能完成电子地图的显示、放大、缩小、漫游等基本功能。但如何实现GPS导航、信息查询、GSM/GPRS通信等功能还需进一步研究。

本文创新点:本文提供了一种面向手持设备的GIS的实现方案—采用MiniGUI在嵌入式Linux上实现GIS,并提供了一种提高地图显示和漫游速度的处理方法。

参考文献

[1] 汪亚雷, 余春暄. 基于嵌入式Linux的MapInfo格式地图显示[J]. 微计算机信息, 2006,10-2:184-186.

[2] 周立功. ARM嵌入式MiniGUI初步与应用开发范例[M]. 北京:北京航空航天大学出版社,2006, 7-144.

[3] 北京飞漫软件技术有限公司. MiniGUI编程指南, 2004.

[4] 北京飞漫软件技术有限公司. MiniGUI用户手册, 2004.

关键字:嵌入式Linux  MiniGUI  S3C2410  GIS 引用地址:嵌入式Linux下基于MiniGUI的GIS实现

上一篇:基于ARM单片机的嵌入式最小系统架构研究
下一篇:基于S3C44B0和μCOS-II的CAN节点的设计

推荐阅读最新更新时间:2024-03-16 12:56

基于S3C2410的辅助倒车数字图象系统设计
1 、引言   据统计,由于车后盲区所造成的交通事故在中国约占30%,美国20%。前两代倒车辅助产品,一种是倒车喇叭,一种是倒车雷达。前者只能提醒路人自行躲闪,而司机却一无所知,固定的障碍物更是无法探测,起到的作用微乎其微,后者虽能把固定的障碍物通过报警的形式告知司机,但司机还是无法判断障碍物的确切位置,更不能探测地坑或低矮障碍物。   目前,国内外的研究趋势是在倒车雷达的基础上采用数字图像处理技术,利用强大的嵌入式处理器,开发用于检测车后物距和监视车后图像的优点相结合的车载可视倒车装置。   因此本文提出一种基于S3C2410的辅助倒车系统设计,该系统不但使驾驶员可以在车内观察到汽车车尾的真实场景,而且可以通过系统所带的
[汽车电子]
基于<font color='red'>S3C2410</font>的辅助倒车数字图象系统设计
ucos在s3c2410上运行过程整体剖析-从main函数到UCOS初始化完毕
下面要讲解的内容基本上都是c语言编写的了,还有一部分代码是用汇编写的。以下我就以这个系统移植的实验源码为例做详细讲解。讲解的方式是根据程序执行的顺序进行,如果感觉有什么难理解的地方,会做一个宏观讲解和分析。 好了废话不多说,进入main()函数之后做的事情有: 对硬件平台做进一步的初始化操作 对ucos操作系统做初始化操作 对硬件的初始化主要包括: 初始化时钟总线 初始化串口 初始化中断结构体的相关内容 初始化定时器 关于以上的时钟的,串口的,还有定时器的等硬件的具体初始化和使用我不想一一详细阐述,这些你都可以通过查看datasheet自己弄明白的。毕竟我想详细讲解的是UCOS这个操作系统,只不过有些硬件知识是不得不讲的。
[单片机]
ucos在<font color='red'>s3c2410</font>上运行过程整体剖析-从main函数到UCOS初始化完毕
嵌入式Linux网络驱动程序开发设计
引言   随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成千上万的计算机专家和爱好者的青睐。在嵌入式领域,通过对Linux进行小型化裁剪后,使其能够固化在容量只有几十兆字节的存储器芯片或单片机中,成为应用于特定场合的嵌入式Linux系统。Linux强大的网络支持功能实现了对包括TCP/IP在内的多种协议的支持,满足了面向21世纪的嵌入式系统应用联网的需求。因此,在嵌入式系统开发调试时,网络接口几乎成为不可或缺的模块。   1 嵌入式Linux网络驱动程序介绍   Linux网络驱动程序作为Linux网络子系统的一部分,位于TCP/IP网络体系结构的网络接口层,主要实现上层
[单片机]
<font color='red'>嵌入式Linux</font>网络驱动程序开发设计
基于嵌入式Linux的无线视频监控系统设计
高性能、低功耗嵌入式CPU和高可靠性网络操作系统的面世,使得可视电话、视频会议、远程视频监控等运算数据量大的应用在嵌入式设备中实现成为可能。传统的基于同轴电缆的视频监控系统结构复杂、稳定性差、可靠性低且价格昂贵,因而出现了嵌入式网络视频服务器等远程Web视频监控系统。在本嵌入式无线视频监控系统中,使用高性能ARM9芯片作微处理器,控制video4linux实现USB摄像头视频数据采集,采集的视频数据经JPEG压缩后,在 ARM9芯片的控制下通过2.4GHz无线发送/接收模块进行视频数据传输;视频传输模块再将视频数据通过串口或网络提交给视频应用服务端,最后由视频应用服务端将接收到的压缩数据帧重组、复合成视频图像,实现无线视频监控。
[单片机]
基于<font color='red'>嵌入式Linux</font>的无线视频监控系统设计
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-LED字符设备驱动
一、嵌入式linux字符设备驱动框架 写应用程序的人 不应该去看电路图,但是如何操作硬件呢:调用驱动程序里的open,read,write等来实现。 C库里实现了 open 、read、write上层函数 调用open等:swi val—引发一个异常中断,进入内核异常处理函数。 系统调用接口:根据发生中断的原因,调用处理函数(sys_open,sys_read等sys_open等函数会执行与open相关各种初始化函数,通知调用自己写好的open函数,这里注意应用程序的open不仅仅是调用驱动中的open,其他函数类似,是调用sys_open,sys_open里包含了驱动中实现的open)。 sys_open:根据调
[单片机]
07-S3C2440驱动学习(一)<font color='red'>嵌入式linux</font>字符设备驱动-LED字符设备驱动
S3C2410的内存映射
这片文章主要介绍S3C2410的内存映射,主要参考2410的用户手册。 我用的板子是基于三星的2410,三星的内存片选有8个bank,这里所谓的bank我开始也不是很清楚,在网上搜了一通也不知所云,但是当我看了 2410的用户手册后才有点明白,这里的bank就是片选,一个片选就是一个bank,在U-Boot中,配制的时候要配制SDRAM和FLASH的 bank数,那么如果你的SDRAM或者FLASH就接了一个片选的时候,就定义为1就可以了,其他的类推。 下面是2410的内存映射图,2410和其他的大部分的处理器一样,支持NorFlash和NANDFlash启动,而这两种启动方式内存所映射的地址不怎么相同,我的板子没有NANDF
[单片机]
基于ARM9芯片S3C2410a的GPRS数据终端设计
随着科技的发展,人类生活节奏的加快,信息在生活中的地位日益重要,如何方便快捷并及时有效地获取信息成为现代信息处理中的关键问题。在这种需求下,中国移动GPRS业务及时地投人运营,无线数据通信的应用越来越广泛。相对原来GSM的拨号方式的电路交换数据传送方式.GPRS是分组交换技术,具有实时在线、按量计费、快捷登录,高速传输、自如切换的优点。GPRS采用分组交换的技术,数据传输速率最高理论值能达171.2 kb/s。电路交换数据业务速率为9.6 kb/s,因此GPRS在传输速度方面具有无与伦比的优势。更由于其本身就是一个分组数据网,支持TCP/IP协议,无需经过PSTN等网络的转接,可直接与Internet网络连接,因此GPRS在信息
[单片机]
基于ARM9芯片<font color='red'>S3C2410</font>a的GPRS数据终端设计
嵌入式Linux的低功耗策略研究
摘 要:功耗是嵌入式设备的一个十分重要的性能指标。在硬件设计和选型之后,功耗水平在极大程度上取决于软件的设计。鉴于Lioux在嵌入式设备中的应用日益广泛,提出在嵌入式Linux下软件编写的几种策略。通过这些软件编写方式,能有效降低最终产品的功耗水平。 关键词:嵌入式Linux功耗策略 引 言 由于Linux系统具有嵌入式操作系统需要的很多特色,如适应于多种CPU和多种硬件平台、性能稳定、可裁剪性很好、源码开放、开发和使用简单等。目前,基于Linux应用的嵌入式设备日益增多,Linux正在嵌入式领域发挥着越来越重要的作用。 对于嵌入式设备尤其是移动设备来说,功耗是系统的重要指标,系统设计的重要目标之一就是要尽可能地降低功耗
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved