蒋若鸿
摘 要:当前嵌入式系统被广泛应用于工业领域和家用领域,且随着嵌入式系统的不断发展,用户对嵌入式系统的要求也越来越高,因此实现与用户交流功能的嵌入式GUI成为嵌入式研究领域中的一个重点。该文详细描述了MiniGUI系统基于s3c2410开发板的移植与实现,内容包括交叉编译环境的建立、MiniGUI编译选项的配置和修改、启动项参数的设置以及交叉编译MiniGUI应用程序等。
关键词:s3c2410 MiniGUI 移植
中圖分类号:TP273 文献标识码:A 文章编号:1672-3791(2019)04(a)-0053-02
MiniGUI是目前比较常见的几种GUI系统之一,与其他的GUI相比,MiniGUI最显著的特点是:(1)小巧轻型、占用资源少,稳定性高,可移植性好。(2)拥有丰富的控件资源,包括静态框控件、按钮控件、编辑框控件、列表框控件、进度条控件、滑块控件、组合框控件、工具栏控件等。(3)支持拼音输入法和五笔输入法。(4)支持消息传递机制。(5)支持JPG、PNG和BMP等图像文件。
1 MiniGUI的移植
Samsung公司的s3c2410开发板,平台硬件系统为64MB Nandflash、2MB Norflash、64MB SDRAM。s3c2410开发板通过USB口、串口、网口与宿主机通信,图形图像处理通过LCD显示。
把MiniGUI移植到s3c2410开发板的步骤:(1)安装交叉编译器和设置交叉编译器环境;(2)使用编译器CC对MiniGUI进行交叉编译,获得可在s3c2410上运行的库;(3)在s3c2410开发板的文件系统中添加交叉编译的MiniGUI库;(4)编译MiniGUI可执行程序,并下载到s3c2410开发板上。
1.1 安装和设置交叉编译环境
在宿主机建立MiniGUIde交叉编译环境,这里使用的是arm-none-linux-gnueabi系列,将arm-none-linux-gnueabi交叉编译器文件夹拷贝到宿主机目录的/usr/local/arm目录下,在控制台执行gedit /etc/profile,在profile文件最末尾增加export PATH=/usr/local/arm/arm-2009q1/bin:$PATH,就可将交叉编译器加载到系统环境变量中。
1.2 交叉编译MiniGUI库函数,并进行配置
(1)使用tar解压缩minigui-res-2.0.4.tar.gz文件,之后使用命令make install安装minigui-res-2.0.4,其安装文件默认保存到到/usr/local/lib/minigui目录下,文件内容包括bmp图片、cursor光标效果图片、font默认字体、imetab输入法数据表等。
(2)使用tar解压缩libminigui-2.0.4-linux.tar.gz文件,之后使用make menuconfig命令进入图形配置界面,配置内容需要注意以下几点。
①System options指定Unit of timer is 10ms,用来支持10毫秒触发一次定时器;指定Cursor support,用来支持光标显示;不指定Build MiniGUI-Processes模式,自动会改为MiniGUI-Lite模式;指定Use incore (built-in) resource,避免缺少资源导致编译报错;指定Clipboard support,用来支持内容复制到系统剪贴板的功能。
②GAL引擎指定Include Advanced 2D Graphics APIs,用来支持2D画图功能;指定NEWGAL engine of Dummy、NEWGAL engine of Shadow、NEWGAL engine on Linux frameBuffer console和Have console on Linux frameBuffer,用来支持framebuffer显示功能;指定NEWGAL engine for Common LCD interface,用来支持LCD显示屏功能。
③IAL引擎指定Dummy IAL engine、Automatic IAL engine、Random IAL engine、Linux native (console) input engine,用来支持控制台功能;指定PS2 mouse和IntelligentMouse (IMPS/2) mouse,用来支持PS键鼠功能。
④Font Option指定Raw bitmap font,用来支持RBF字体;不指定Var bitmap font,避免出现unreferenced vfb_Courier8x8错误;指定Qt Prerendered Font,用来支持QPF字体;指定TrueType font,用来支持矢量字体,否则无法满足随意放大字体号数的需求;指定Incore font sansserif、Incore font courier、Incore font symbol 和Incore font vgas,用来支持默认系统字体。
⑤Charset options指定GBK charset,用来支持GBK字符集;指定EUC encoding of GB2312 charset,用来支持GB2312字符集;指定BIG5 charset,用来支持大五码繁体字;指定UNICODE (ISO-10646-1 and UTF-8 encoding) ,用来支持UNICODE字符集。
⑥6Keyboard layout specific options不指定所有的键盘格局,表示使用默认的英文键盘格局。
⑦Input Medthold Option不指定IME (GB2312) Intelligent Pinyin module,避免mginit程序一启动就崩溃了。
⑧Image Options指定GIF file support、JPG file support 和PNG file support,用来支持GIF、JPG和PNG图片的显示;指定Includes SaveBitmap-related functions,用来支持BMP保存图片功能。
⑨Appearance options指定(Classic) The window/control style,其他模式会造成系统消耗大量资源进而导致系统不稳定。
⑩Misc options指定mouse calibration,用来支持校准功能;不指定Include about Dialog Box,取消MiniGUI的关于提示功能;不指定screenshots,防止误触键盘PrtSc键后自动截图。
Controls options指定所有的选项,表示支持所有的基础控件。
Ext library options指定所有的选项,表示支持所有的扩展控件。
Development Environment Option指定(Linux) The target operating system,设置目标系统为linux系统;指定(arm-none-linux-gnueabi-gcc) Compiler,设置编译器为arm-none-linux-gnueabi-gcc;指定(glibc) Libc,设置libc库为glibc库;指定Installation option下的Path prefix为/usr/local/cross-arm-linux,表示设置交叉编译MiniGUI库的安装路径为/usr/local/cross-arm-linux。
以上内容选完后,使用make命令就可编译生成MiniGUI的运行库。
1.3 MiniGUI运行环境的配置
将/usr/local/cross-arm-linux/etc目录下的MiniGUI.cfg文件复制到s3c2410开发板文件系统中的/etc目录下;将/usr/local/cross-arm-linux/lib目录下的所有文件复制到s3c2410开发板文件系统的/usr/lib目录下;将/usr/local/lib/minigui目录下的所有资源文件复制到s3c2410开发板文件系统的/usr/local/lib/minigui目录中。以后内容完成后,进入s3c2410开发板文件系统的/etc目录,找到并打开MiniGUI.cfg文件,修改内容为:
GAL引擎使用fbcon,与framebuffer对应;IAL引擎使用系统控制台console;mtype配置为IMPS2,表示支持PS2键鼠,mdev配置为/dev/input目录下的mice设备,表示兼容USB键鼠;显示模式采用800×600分辨率,16位色的LCD显示屏。以内容操作完成后,代表MiniGUI平台完整移植到s3c2410开发板中。
1.4 编译MiniGUI的应用程序
MiniGUI的应用程序函数入口是int MiniGUIMain (int argc, const char* argv[]),标准的main函数已经在MiniGUIMain中定义了,MiniGUIMain函数启动时,会对MiniGUI系统进行初始化工作。使用arm-none-linux-gnueabi-gcc交叉编译器编译MiniGUI应用程序,需要指定LIBDIR为MiniGUI交叉编译库的安装路径/usr/local/cross-arm-linux/lib,指定INCDIR为MiniGUI交叉编译库的头文件的安装路径/usr/local/cross-arm-linux/include,应用程序编译配置完成后就可以进行编译操作,编译完成后将应用程序下载到s3c2410开发板中。
2 结论
该文以s3c2410开发板为硬件基础,移植MiniGUI系统,重点描述了MiniGUI编译选项的配置和启动参数的设置。实践证明,嵌入式Linux下的MiniGUI高效、稳定、占用资源少、可移植性强。
3 结语
把性能优良的GUI系统应用于嵌入式系统设备中,为产品设计出友好的人机交互界面是当前嵌入式技术领域开发的总体趋势,拥有广阔的市场前景。MiniGUI作为国内优秀的自由软件,因其控件丰富、源代码开放等特点深受广大用户的喜爱。该文详细描述了MiniGUI移植到s3c2410的目标平台上。熟悉图形应用程序的用户可很快在MiniGUI上面编写自己的图形应用程序。
参考文献
[1] 魏永明.MiniGUI用户手册[M].北京:北京飛漫软件技术有限公司,1998.
[2] 肖习攀.GUI应用程序移植[M].北京:电子工业出版社,2007.
[3] 田泽.ARM7-uClinux开发实验与实践[M].北京:北京航空航天大学出版社,2005.
[4] 张绮文,谢建雄,谢劲心,等.ARM嵌入式常用模块与综合系统设计[M].北京:电子工业出版社,2007.



