完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1 图形用户界面MiniGUI
MiniGUI是由原清华大学教师魏永明主持开发的轻量级图形系统,遵循GPL公约。所支持的操作系统已不仅仅限于Linux,它还可以在μCli nux,μC/OS-Ⅱ,eCos和VxWorks等系统上运行。已验证的硬件平台包括Intelx86,ARM(ARM7/AMR9/StrongARM/xScale),Power-PC,MIP S,M68K(DragonBall/ColdFire)等。 1.1 MiniGUI与嵌入式系统的关系 MiniGUI具有良好的软件架构,通过抽象层将MiniGUI上层和底层操作系统隔离开来。如图1所示,基于MiniGUI的应用程序一般通过ANSIC库以及MiniGUI自身提供的API来实现自己的功能;MiniGUI中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关系底层的硬件平台输出和输入设备。 1.2 MiniGUI体系结构 从结构上看,MiniGUI是分层设计的,层次结构如图2所示。在底层,GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口。中间层是MiniGUI的核心层,其中包括了窗口系统必不可少的各个模块。最顶层的API向应用设计提供编程接口。 2 S3C2440开发平台简介 本文使用的目标平台是三星公司推出的高度集成的S3C2440(ARM920T core with MMC),最高主频可达532 MHz微处理器,提供64MB SDRA M,64 MBNAND FLASH以及2 MB NOR FLASH的存储设备,另外包括IDE和PCMICA接口的丰富的外围电路和多功能的扩展接口。S3C2440采用高性能ARM9微处理器以其优化的片上性能,在视频会议、楼宇的对讲系统、网络监控、GPS定位/导航仪、医疗电子设备、多媒体终端产品等应用领域有广泛应用。 3 MiniGUI的移植 宿主主机系统为redhat Linux 9.0,要求完全安装,移植步骤如下: 3.1 建立交叉编译环境 在移植之前首先建立好交叉编译环境,简单地说是指在一个平台上可以生成能在另一个平台上运行的代码,编译工具为arm-linux-gcc-3.3.2。 #tar-xvjf rm-linux-gcc-3.3.2 默认的安装路径是/usr/local,为了避免每次设置PATH,在.bash_profile文件中增加PATH=/usr/local/arm/3.4.1bin:MYMPA TH,并运行以下命令: #source.bash_profile 3.2 源代码准备 从http://www.minigui.org/res.shtml下载源代码包如下: (1)libminigui-1.6.10.tar.gz:MiniGUI函数库源代码。 MiniGUI由3个函数库的组成,它们分别是libminigui,libmgext和libvcongui。libminigui是提供窗口管理和图形接口的核心函数库,也提供了大量的标准控件;libmgext是libminigui的一个扩展库,提供了一些高级控件及“文件打开”、“颜色选择”对话框等;libvcon gui则为Linux操作系统提供了一个应用程序可用的虚拟控制台窗口,从而可以方便地在MiniGUI环境中运行字符界面的应用程序,libmgext和libvcongui库已经包含在这个源代码包中。 (2)minigui-res-1.6.10.tar.gz:MiniGUI所使用的资源,包括基本字体、图标、位图和鼠标光标。 (3)mg-smaples-1.6.10.tar.gz:配套示例程序。 3.3 编译安装 (1)建立工作目录 # mkdir/minigui # cd/minigui (2)编译安装MiniGUI库 # cd/minigui # tar xzvf libminigui-1.6.10.tar.gz-C/minigui # cd/minigui/libminigui-1.6.10 #./configure-prefix=/home/-host=i386-redhat-linux-target=arm-linux--build=arm-linuxCC=arm-linux-gcc--disa-ble-vbfsu pport prefix选项用于指定MiniGUI函数库的安装路径,默认的安装路径是/usr/local,这里应该是所使用的交叉编译环境中系统头文件目录include库目录lib所在的目录,本例中是/home,这样一来,MiniGUI的函数库和头文件也将被分别安装到lib和include目录中。在后续进行MiniGUI应用程序的交叉编译时,就可以正确地找到MiniGUI的头文件和函数库。其中: target选项用于指定目标平台,这里使用arm-linux; host选项用来指明宿主机的类型,这里使用i386-redhat-linux; build选项指定了交叉编译的系统环境,这里使用arm-linux; CC用来指定使用的交叉编译器,这里使用arm-linux-gcc。 运行.configure脚本成功后,就成了定制的Make-file文件,接下来只需编译和安装即可。 # make # make install (3)编译安装MiniGUI资源文件 # tar xzvf minigui-res-1.6.10.tar.gz-C/minigui # cd/minigui/minigui-res-1.6.10 # make install (4)编译安装配套应用程序 # tar mg-smaples-1.6.10.tar.gz-C/minigui # cd/minigui/mg-smaples-1.6.10# make install 3.4 拷贝MiniGUI资源到开发板 把/home/lib目录下的所有库文件(注:-prefix=/home/)拷贝到开发板的/lib目录下;把/minigui/res目录下的所有文件拷贝到开发板上/usr/local/lib目录下,其开发板上的目录如下形式/usr/local/lib/minigui/res/……;把/home/etc下的MiniGUI.c fg拷贝到开发板上的/etc目录下;最后把配套应用程序拷贝到开发板目录下。 3.5 配置开发板的运行环境 (1)/etc目录下建立ld.so.conf文件,并添加如下内容: /usr/local/lib /lib 这样程序运行的时候可以找到相应的库文件。 (2)修改开发板上的/etc/MiniGUI.cfg文件,主要修改是图形引擎和输入引擎。本开发平台的Linux中自带有VESAFrameBuffer设备驱动程序,并且初始状态已经激活。FrameBuffer是Linux内核中的一种驱动程序接口,这种接口将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映像。将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反映在屏幕上。这样,MiniGUI就可以使用FrameBuffer作为图形引擎进行图像显示。LCD显示器的像素为240x320,因此图形引擎的显示模式defaultmode为240x320-16bpp。并在输入引擎中添加u***鼠标设备文件和鼠标协议。修改如下: 同时在/etc/init.d/rcS脚本文件里添加鼠标设备,内容如下: /bin/ln-s/devr/vc/0/dev/tty0 /bin/ln-s/dev/input/mouse0/dev//mouse 4 结语 把图形用户界面移植到嵌入式设备中是嵌入式系统发展的趋势,本文详细介绍了MiniGUI移植到S3C2440的过程,并最终能稳定得在目标平台上运行。该方法对于移植到其他的目标平台有良好的借鉴作用。MiniGUI作为源代码开放的自由软件,在嵌入式图形用户界面领域将有更好的实用价值,并随着MiniGUI的功能日趋强大,应用将越来越广泛。 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:00 , Processed in 0.775058 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号