当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]MiniGUI在基于OMAP5912开发板上的移植

摘 要:随着嵌入式系统的发展,用户对嵌入式系统的要求越来越高,其中用于实现人机交流功能的嵌入式GUl成为研究中的一个重点,拥有广阔的应用前景。详细介绍了MinGUI的移植、使用方法,说明了交叉编译环境建立的过程、移植MiniGUI所需的库和资源文件及其作用、MiniGUl运行环境的配置。最终实现了对具有双核结构的OMAP5912开发板的界面支持,完成了构建嵌入式图形界面系统的前期工作,取得了很好的实验效果。
关键词:MiniGUI;图形用户界面;交叉编译;移植


0 引 言
    随着嵌入式的飞速发展,以ARM为硬件平台和以Linux为软件平台的方式受到广泛的关注。图形用户界面GUI是迄今为止计算机系统中最为成熟的人机交互技术。MiniGUI作为一款优秀的图形用户界面支持系统,目前已在许多实际产品和项目中得到了应用,这里正是针对这样的需求,详细介绍如何在OMAP5912开发板上移植MiniGUI的全过程。


1 OMAP5912开发板简介
    OMAP5912处理器是由TI应用最为广泛的TMS320C55X DSP内核(192 MHz)与低功耗、增强型ARM926EJ-S微处理器(192 MHz)组成的双核应用处理器,采用O.13μm CMOS工艺制造。C55xDSP可提供对低功耗应用的实时多媒体处理的支持;ARM926EJ-S MPU可满足控制和接口方面的处理需要。基于双核结构的OMAP5912具有极强的运算能力和极低的功耗,采用开放式、易于开发的软件设施,支持广泛的操作系统。


2 图形用户界面MiniGUI简介
    与几种主流嵌入式GUI相比,MiniGUI具有以下显著特点:占用资源少,高性能,高可靠性,可配置。MiniGUl采用分层设计,层次结构如图1所示。

    在最底层,GAL和IAL提供底层图形接口以及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是编程接口API。GAL和IAL为MiniGuI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口,大大提高了MiniGUI的可移植性,并且使程序的开发和调试变得更加容易。


3 MiniGUI在OMAP5912开发板上的移植过程
3.1 构建Linux交叉编译环境
    本实例中宿主机系统为RedHat 9 Linux,交叉编译工具为cross-2.95.3.tar.bz2,把工具解压缩到/usr/local/arm目录下,然后执行export PATH=/usr/local/arm/2.95.3/bin:MYMPATH;将安装好的库资源的路径添加到PATH中。这样,交叉编译环境就构建完成。后面所有的资源文件和库文件都应安装在/usr/local/arm/2.95.3/arm-linux目录。
3.2 交叉编译MiniGUI资源文件
    提供程序调用所需的资源,如位图、光标、界面控制条等,编译方法较简单,只需在宿主机环境编译后即可在开发板上使用,解压minigui-res-1.3.3.tar.gz,进入目录执行make install命令,资源文件会安装到/usr/local/lib下minigui目录中。[!--empirenews.page--]
3.3 交叉编译MiniGUI库函数,并进行配置安装
    首先解压缩libminigui-1.3.3.tar.gz,进入Fra-meBuffer控制器配置文件libminigui-1.3.3/src/new-gal/fbcon,修改fbvideo.C中GAL_fbdev=”/dev/fb/O”,这是因为系统启动后,其/dev目录下实际存在的设备文件不是fb而是/fb/0。通常Frame-Buffer作为标准字符设备处理,主设备号为29,次设备号则从0~31,分别对应/dev/fb/0-/dev/fb/31的设备文件。修改完后进入解压后的目录,执行以下命令以完成对编译选项的配置:


    CC是用来指定所使用的编译器;-target选项用来指定目标平台;-host选项用来指明宿主机的类型;-build选项与-arget一样为arm-linux;-en-able-lite选项用来指定生的模式。MiniGUI 1.3.3有Threads和Lite两种模式,本例中采用Lite模式;-prefix选项用来指定MiniGUI函数库的安装路径,本例中安装路径为/usr/local/arm/2.95.3/arm-linux。如果运行成功,就会生成定制的Makefile文件,然后可以继续执行make和make install命令编译并安装libminigui。
3.4 加入辅助函数库的支持
3.4.1 安装zlib库
    这个库是后面许多库编译的基础,解压zlib-1.2.3.tar.gz文件,zlib库的configure脚本不支持交叉编译选项,可以通过软链接方式,使目标文件指向当前的2.95.3版本的arm-linux-gcc和arm-linux-ld链接器;还可以将库文件设置为动态共享方式,通过这种方式,许多程序可以重复使用相同的代码,能有效减小应用程序的大小,打开Makefile并且添加如下代码:


    其中:LDSHARED参数设置为共享模式生成libz.SO.1共享文件;CPP指定服务器路径。最后make installprefix=/usr/local/arm/2.95.3/arm-linux/安装到指定路径。
3.4.2 安装png库
    这个库是用来显示png图形的,先解压libpng-1.0.10rcl.tar.gz文件,编译时,主目录下面没有配置文件,因此执行命令cp scripts/makefile.linux,将与开发系统体系结构一致的配置文件makefile.linux安装到主目录下面,然后还需要对makefile.linux文件进行修改:

        其中:上述ZLIBLIB参数和ZLIBINC参数分别指定了库文件和头文件的路径。
3.4.3 安装jpeg库
    这个库用来支持jpeg格式图片显示,编译过程与png库的编译过程类似:


3.4.4 安装libttf库
    这个是TrueType字体的支持库,用来显示文字,解压freetype-1.3.1.tar.gz,进入目录,然后./con-figure会生成Makefile文件,因为没有安装Xlib testexample,后面编译通不过,屏蔽掉关于test的部分代码,打开Makefile文件,找到有“FTTESTDIR”字段的行注释掉,一共有7处。然后make编译库文件,在freetype-1.3.1/lib目录下,生成链接库文件:

   


    至此libttf库安装完成。上述方法是通过自动配置完成安装,另外也可以通过手工配置完成安装:

    [!--empirenews.page--]
    参数O2表示完成编译过程的同时还要经过二级优化,不再加入符号表等调试信息,以使程序代码占用空间最小,同时执行的速度最快。


4 加入mde库支持
    mde库是执行MiniGUI应用程序的归档压缩文件,其中包含被称为mginit的MiniGUI-Lite的服务器程序,安装的过程需要popt-1.7.tar.gz库支持,安装过程较为简单,和前面的库安装类似。
    为了避免安装过程出现MINIGUI-LiteVerl.2.6 orLater的警告信息,必须对configure.in文件作出修改,添加下面的一行语句指定头文件和库文件的寻找路径:


    同时对包含MiniGUI常用的宏以及数据类型定义的common.h文件路径进行修改,在参数AC_CHECK_HEADERS行中添加如下代码:


5 创建设备文件节点
    在内核启动之前,应该保证MiniGUI运行于服务器模式,嵌入式系统上执行MiniGUI应用程序时,先由mginit调用vfork产生一个子进程,然后呼叫系统调用execl来启动,同时服务器程序还需要创建几个设备文件,在/dev目录下执行下面创建命令:
    mknod ptysf c 2 63
    mknod ttysf c 3 63
    分别创建了主设备号是2、次设备号是63的设备文件ptysf以及主设备号是3、次设备号是63的设备文件ttysf。如果需要在系统启动时自动加载上述设备文件,可以在系统启动脚本文件rc.d中添加上述命令。至此移植阶段的工作完成。


6 下载程序到目标板并运行
    通过以上的编译,在目标板上运行MiniGUI所需的库文件和应用程序已全部编译好,进入/usr/local/arm/2.95.3/arm-linux/,在etc,lib子目录下有需要拷贝到目标机上的资源。首先拷贝根文件目录到/opt/rootfs下,在根文件目录下新建和/usr/local/arm/2.95.3/arm-linux/下相同的目录结构,把/usr/local/arm/2.95.3/arm-linux/lib中相应的库拷到根文件系统的/usr/local/lib目录下去(无需拷贝libjpeg.a等静态库);拷贝MiniGUI资源文件,将usr/local/lib/目录下的minigui目录拷贝到根文件/opt/rootfs目录下;拷贝配置文件/usr/local/etc/MiniGUI.cfg,保持目录结构一致。修改根文件系统中的/etc/ld.SO.conf文件,在文件最后一行增加“/usr/local/lib”,然后执行命令ldconfig-r/opt/rootfs,将根文件目录设置为根目录,最后修改MiniGUI.cfg,使之适合目标板的硬件设置:将鼠标设备改为mdev=/dev/input/mouse0,鼠标协议类型改为mtype=IMPS2,其他的用默认方式即可。
    至此,MiniGUI已经成功移植到了开发板上,图2为MiniGUI在开发板上启动后的画面。此后可以根据需要,继续修改MiniGUI库函数及各种资源,并且编写自己的应用程序,使开发板上的界面更加美观和完善。

7 结 语
    介绍的MiniGUI移植过程已通过实验验证,并且大体的过程适合于其他型号的开发板和其他开源版本的MiniGUI。将图形用户界面引人嵌入式系统是嵌入式技术发展的必然趋势,可以肯定,随着MiniGUI的不断推广和功能的加强,它将在嵌入式系统设计中起着举足轻重的作用,并且在实际应用中不断走向成熟。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

亘喜生物科技集团宣布正在中国开展的、旨在全面评估GC007g治疗复发/难治性急性B淋巴细胞白血病效果的1/2期注册性临床试验顺利进入2期研究阶段,首例入组患者已给药。GC007g是亘喜生物旗下的一款靶向CD19的供者来源...

关键字: 移植 CD

北京2022年9月9日 /美通社/ -- 诺诚健华(香港联交所代码:09969)今天宣布,tafasitamab (Minjuvi®)联合来那度胺治疗不适合自体干细胞移植 (ASCT) 条件的复发/难治弥漫性大B...

关键字: VI NJU BSP 移植

伦敦2022年8月29日 /美通社/ -- 继此前Canonical宣布Ubuntu已可运行于RISC-V 处理器及硬件之后,现在自豪地宣布发布支持更多款RISC-...

关键字: UBUNTU 开发板 RISC-V CANONICAL

苏州2022年8月19日 /美通社/ -- 近日,华中科技大学同济医学院附属协和医院心外科董念国教授团队运用与心擎医疗联合研发的短中期体外全磁悬浮心室辅助装置MoyoAssist®,成功救治三例危重的终...

关键字: 磁悬浮 移植 IC 静脉

Hello大家好,我是米尔的工程师。现在车规级芯片市场潜力巨大,需求旺盛,芯片都在逐渐走向国产化。本期要介绍的主角是MYD-YT507H开发板,是米尔结合国产工业级平台CPU:全志T507-H芯片研制的CPU模组,接下来...

关键字: 米尔电子 处理器 开发板

上海2022年8月17日 /美通社/ -- 2022年8月16日,聚焦于基因和细胞治疗的上海邦耀生物科技有限公司(以下简称"邦耀生物")宣布,其...

关键字: CD 移植 BSP ISP

儒卓力(Rutronik Elektronische Bauelemente GmbH)宣布发布先进集成式热管理系统(Integrated Thermal Managment System)开发板,该开发板采用分布式控制...

关键字: 儒卓力 集成式热管理系统 开发板

DSP开发板,就是围绕DSP的功能进行研发,推出用于DSP芯片开发的线路板,并提供原理图和源代码给客户。DSP尤以TI公司的DSP市场占有率最大。

关键字: DSP 开发板

苏州2022年6月28日 /美通社/ -- 2022年6月23日,首都医科大学附属北京安贞医院(以下简称安贞医院)与苏州心擎医疗技术有限公司(以下简称心擎)在北京、苏州两地线上连线,隆重召开体外心室辅助系统临床...

关键字: BSP 磁悬浮 创始人 移植

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭