MiniGUI在基于OMAP5912开发板上的移植

发布者:EtherealJourney最新更新时间:2010-02-23 来源: 现代电子技术关键字: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目录中。

  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库安装完成。上述方法是通过自动配置完成安装,另外也可以通过手工配置完成安装:

  参数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的不断推广和功能的加强,它将在嵌入式系统设计中起着举足轻重的作用,并且在实际应用中不断走向成熟。

关键字:MiniGUI  图形用户界面  交叉编译  移植 引用地址:MiniGUI在基于OMAP5912开发板上的移植

上一篇:基于μC/OS-II的智能窗系统设计
下一篇:基于μC/OS—II操作系统的数据采集控制系统

推荐阅读最新更新时间:2024-05-02 21:00

STM32移植U8g2图形库的方法 实现OLED图形显示
之前的文章,介绍过ESP8266在Arduino IDE环境中使用U8g2库,实现OLED上的各种图形显示。 本篇,介绍一下U8g2库如何移植到STM32上,进行OLED的图形显示。 本次的实验硬件为: STM32:型号为最常见的STM32F103C8T6 OLED:0.96寸OLED,IIC接口(如果是SPI接口,文中也有对应的修改介绍) 1 U8g2简介 U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。 U8g2源码的开源库地址:https://github.com/olikraus/u8g2 2 移植步骤 首先下载U8g
[单片机]
STM32<font color='red'>移植</font>U8g2<font color='red'>图形</font>库的方法 实现OLED<font color='red'>图形</font>显示
ARM开发板系统移植-----kernel的编译
前面一篇文章介绍了开发板上系统软件的第一部分--bootloader的编译方法。 背景:把bootloader烧写到开发板的Nand Flash中后,开发板从Nand启动,硬件会自动将bootloader加载到内存中运行,bootloader将板载资源都初始化完成后,会停留在一个命令行界面,接收并执行用户敲入的命令。这时候用户可以通过命令控制开发板,比如查看参数列表:print、读写nand:nand readnand write 、内存管理:mm、设置参数列表:setenv、网络下载:tftp、启动内核:bootm等等。如果我们把一个编译好的内核通过tftp服务器下载到内存中,就可以通过bootm 命令启动内核。 好吧,
[单片机]
ARM开发板系统<font color='red'>移植</font>-----kernel的<font color='red'>编译</font>
成功移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 在开始之前,我们需要确认有 SQLite3源码包; 有交叉编译环境; 有一块开发板; 1、下载 SQLite3源码 地址: http://www.sqlite.or
[单片机]
成功<font color='red'>移植</font>SQLite3到ARM Linux开发板
法“秘密”完成世界第二例永久性人工心脏移植
    据法国媒体4日报道,世界第二例永久性全人工心脏移植手术日前已在法国西部城市南特的一所医疗机构内“秘密”完成。此前移植了同类人工心脏的第一例患者在术后一段时间死亡,这次,有关机构拒绝透露患者信息。     4日晚间,法国《解放报》在其网站上刊登消息称,这次手术三周前在南特大学医疗中心进行,由法国生物医学企业卡尔马(CARMAT)公司研制的永久性全人工心脏被植入一名患者体内。这是第二名接受卡尔马人工心脏移植的患者,手术在“极其保密”的情况下进行。为手术主刀的是该医疗中心胸外科名誉主任达尼埃尔·迪沃教授。他曾参与首例卡尔马人工心脏移植手术。     尽管该报道说“手术应该进行得十分顺利”,但也表示,未能获知有关患者的任何
[医疗电子]
LAN8720A移植笔记
自己做的f407VE+LAN8720A板子,使用 《LwIP应用开发实战指南》系列中的例程修改,因为野火使用的是F407ZG的芯片,硬件接线图也不一样,所以还需要做一些修改。 User/eth/bsp_eth.h中,需要根据自己的硬件连线修改引脚配置。 /* Private defines --------------------------------------*/ #define ETH_MDC_Pin GPIO_PIN_1 //C1 #define ETH_MDC_GPIO_Port GPIOC #define ETH_REF_CLK_Pin GPIO_PIN_1
[单片机]
LAN8720A<font color='red'>移植</font>笔记
ucos ii 移植到STM32f103ze上
简介:在移植UCOS时,需要编写的函数文件有includes.h、os_cpu.c、os_cpu_a.asm、os_cpu.h、需要配置的文件有os_cgf.h、中断和启动代码。 采用别人移植好的代码。即所需函数已写好。 准备工作: 1、ucos ii源码 2、stm32库 步骤: 1、建工程。 工程目录为: 2、配置ucos ii 在os_cfg.h中配置相关功能 3、修改相关函数 ucos ii需要一个定时器,在stm32中采用systick定时器,因此需要配置systick定时器 void SysTick_Configuration(void) { //关计数
[单片机]
ucos ii <font color='red'>移植</font>到STM32f103ze上
单片机---HLK-W801图形框架LVGL移植
背景介绍 最近接触到了一个开源的显示框架lvgl,在跑起了demo的时刻,发现这确实是个酷酷的东西。 LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。 demo的样子 这流畅的动画和体面的输入,一个字–绝。 代码
[单片机]
单片机---HLK-W801<font color='red'>图形</font>框架LVGL<font color='red'>移植</font>
U-boot-2014.04移植到MINI2440(11) 第二启动阶段分析
回顾一下u-boot启动其一阶段做了哪些事: 第一:设置CPU为SVC模式 第二:关闭看门狗 第三:关中断和子中断 第四:设置时钟 第五:MMU关闭,清除cache和TLB,使能地址对齐检查等 第六:初始化SDRAM 在我前面的分析里,第一阶段的最后,通过bl _main,跳到了arch/arm/lib/crt0.S里面去了,从这里开始时第二阶段的入口,下面从这里开始分析。 文件:crt0.S 先看看该文件对_main的描述,在第18行,有一个_main execution sequence is:下面有五步,其实就是对_main的执行流程的一个介绍,我翻译一下: 1
[单片机]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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