我手头项目的MiniGui编译移植

原创 2004年12月31日 09:45:00

一、MiniGui的交叉编译<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.   编译命令

编译前需要准备内核,把内核的源代码放到/opt/uClinux/uClinux-dist目录下。

进入libminigui目录

[…]#CC=arm-elf-gcc AR=arm-elf-ar RANLIB=arm-elf-ranlib LDFLAGS="-Wl,-elf2flt" ./configure /

--prefix="/opt/usr/local" /

--host=arm-elf-linux /

--build=i386-linux /

--disable-shared /

--enable-lite=yes /

--enable-video-fbcon=yes /

--enable-nativegal=yes /

--enable-nativeial=yes /

--enable-newgal=no /

--enable-timerunitms=no /

--enable-nativegalqvfb=no /

--enable-fblin8=no /

--enable-fblin16=no /

--enable-fblin24=no /

--enable-fblin32=yes /

--enable-dummyial=yes /

--enable-qvfbial=no /

--enable-nativeps2=no /

--enable-nativeimps2=no /

--enable-nativems=no /

--enable-nativems3=no /

--enable-nativegpm=no /

--enable-textmode=no /

--enable-rbfsupport=yes /

--enable-rbfgb12=no /

--enable-vbfsupport=no /

--enable-fontsserif=no /

--enable-fontcourier=no /

--enable-fontsymbol=no /

--enable-fontvgas=no /

--enable-qpfsupport=no /

--enable-ttfsupport=no /

--enable-type1support=no /

--disable-ttfsupport /

--enable-latin2support=no /

--enable-latin3support=no /

--enable-latin4support=no /

--enable-latin9support=yes /

--enable-gbsupport=yes /

--enable-gbksupport=no /

--enable-big5support=no /

--enable-unicodesupport=no /

--enable-savebitmap=yes /

--enable-gifsupport=yes /

--enable-jpgsupport=no /

--enable-pngsupport=no /

--enable-imegb2312=no /

--enable-imegb2312py=no /

--enable-aboutdlg=yes /

--enable-savescreen=no /

--enable-tinyscreen=no /

--enable-extfullgif=no /

--enable-video-dummy=no /

--enable-extskin=no

[…]#make

[…]#make install

最后libminigui被安装在/opt/usr/local/目录下

上面配置的yesno根据实际需要进行最优设置。

2.   资源安装

进入minigui-res目录

编辑config.linux文件大概在11行,把 TOPDIR=改为TOPDIR=/opt

[…]#make install

最后资源也被安装在/opt/usr/local/目录中

3.   输入引擎

引擎的入口代码:

src/ial.c 中有数组static INPUT inputs [],初始存放了所以输入引擎名称及其初始化函数和退出函数的入口,两个函数分别是InitNativeInputTermNativeInput

其他函数介绍:(主要介绍键盘相关的函数)

wait_event Minigui系统采用定时查询来获得输入设备的输入情况,wait_event就是一个定时运行的函数,返回事件类型,主要是检查输入句柄是否有新的数据输入。

keyboard_update 事件判断完毕后,若是有键盘输入,则调用该函数,主要功能就是判断那个按键有输入。数组atic unsigned char state [NR_KEYS] 存储了128个字符的状态,输入哪个字符,这个字符的状态就被置1

keyboard_getstate 直接返回状态数组

keyboard_suspend

keyboard_resume

移植内容,主要是按键码查表转化

具体移植代码:在Minigui中采用一个比较通用的输入引擎,在内核的键盘驱动中去实现按键的输出来适应Minigui的通用驱动。

4.   输出引擎(New

具体看framebuffer驱动是如何实现的,FrameBuffer中的数据格式如何。

真彩32bit

Minigui的象素输出格式0x00rrggbb

基于视频芯片的输入要求格式:0xaarrggbb

问题:对于Minigui中的格式高一字节永远是0x00,对该字节不进行处理的。

            但视频芯片的高一字节是定义透明度的,若为0x00则全透明,因此没有进行修改的Minigui程序是没有任何屏幕显示的。

解决:需要在Minigui的最终输出部分把高位修改为0xff

具体代码:待续

二、MiniGui的文件部署

1.   开发环境文件的部署

有上面的安装命令可以看出系统所有的文件都在/opt/usr/local

/opt/usr/local/

            >etc

                     >(MiniGUI.cfg)

            >include

                     >minigui

                               >(*.h)

            >lib

                     >(*.a)

                     >minigui

                              >res

                                        >bmp

                                                 >(系统位图文件)

                                        >cursor

                                                 >(系统光标文件)

                                        >font

                                                 >(系统字体文件)

                                        >icon

                                                 >(系统图标文件)

                                        >imetab

                                                 >(输入法文件)

  

2.   Romfs中文件的部署

/opt/usr/local/

            >bin

                     >(应用程序)

>lib

                     >minigui

                               >res

                                        >bmp

                                                 >(系统位图文件)

                                        >cursor

                                                 >(系统光标文件)

                                        >font

                                                 >(系统字体文件)

                                        >icon

                                                 >(系统图标文件)

                                        >imetab

                                                 >(输入法文件)

 

3.  

 

三、 MiniGui的配置文件(/usr/local/etc/MiniGUI.cfg)

1.   输入输出引擎

IAL= console

uClinux的输入驱动若是基于tty的就可以这么配置

该引擎的源代码主要在目录/src/ial/native中的native.c native.h文件中。

GAL = fbcon

基于Framebuffer的输出引擎可以这样配置

2.   字库配置

Mingui共支持五种字体分别是:等宽字体( rawbitmap)、变宽字体(varbitmap)qpfttftype1。因此在配置文件中有五个配置段分别来配置五种字体。

3.  

 

四、Minigui的裁剪

1.   在编译的时候适当的关闭一些不需要的功能

2.   资源的裁剪

主要是系统无用字库、无用图标、图片、光标的删除。

3.  

 

五、应用程序的编译(New

1.        mde例子程序的编译交叉编译

make CC=arm-elf-gcc LDFLAGS="-elf2flt -L/opt/usr/local/lib" /

CFLAGS="-I/opt/usr/local/include "

2.       

 

3.        应用程序运行前处理

设置内容:主要就是堆栈大小的设置。

设置原因:若堆栈太小,程序的函数调用又非常复杂,则容易出现堆栈溢出,从而导致运行错误。

设置方法:使用arm-elf-flthdr –s 16384 pro_name

                     16384就是堆栈的大小即16×1024 16K

                     使用arm-elf-flthdr –p pro_name 可以查看有关信息

4.       

 

六、

 

minigui3.0.12之初体验-移植篇

前言在一年多年前有幸接触使用到minigui一段时间,当时使用的应该是1.6版本,硬件平台使用的是s3c2440+64M内存,界面上做了很多功能,但整体运行还是十分流畅,我想要是换成QT在上面跑流畅度...
  • jxgz_leo
  • jxgz_leo
  • 2016年11月07日 21:06
  • 5060

MiniGUI3移植到Hi3515全过程

http://blog.csdn.net/longyue0917/article/details/7882672#comments 版权声明:本文为博主原创文章,未经博主允许不得转载...
  • mengzhengjie
  • mengzhengjie
  • 2016年05月31日 17:44
  • 576

在海思hi3520上移植minigui3.0

首先从官网上下载以下几个包:libminigui-gpl-3.0.12.tar.gz,minigui-res-be-3.0.12.tar.gz,mg-samples-3.0.12.tar.gz,zli...
  • HiRuyue
  • HiRuyue
  • 2014年03月13日 09:39
  • 1474

MiniGUI Lite 版本的新改进

简介: MiniGUI从0.98开始推出Lite版本。Lite版本是MiniGUI迈向嵌入式应用重要的一步。在Lite版本中,我们使用了自己设计的引擎,抛弃了pthread库,从而使得MiniGUI能...
  • HiRuyue
  • HiRuyue
  • 2013年09月15日 10:42
  • 710

MiniGUI源码分析——MiniGUIMain的奥秘

接下来,通过剖析MiniGUI的最简单的例程,来详细说明MiniGUI程序是如何创建和运行的。 这个例程,可以从很多地方得到,凡是接触过MiniGUI的朋友,首先接触的便是这个例子,为了方便大家阅读...
  • HiRuyue
  • HiRuyue
  • 2013年09月12日 14:39
  • 1604

TD项目的移植

TD项目的移植   TD项目的移植旨在当前存在另一台TD服务器时,能进行快速的项目数据移植,以在服务器出现灾难性故障时,快速切换到另一台能工作的TD服务器上工作。   在C:\Program Fi...
  • xierp5152
  • xierp5152
  • 2013年03月18日 19:12
  • 336

minigui成功移植到ubuntu64位平台

1.pc系统ubuntu14LTS 64bit,同时在32位ubuntu16.04上经过了测试,官方的所有范例程序都能运行。 2.过两天会写份详细的移植教程,现在只是将移植好的文件上传到我的csdn下...
  • u010346967
  • u010346967
  • 2016年09月06日 20:49
  • 2316

Xorg的一些问题和随想

http://blog.chinaunix.net/uid-269931-id-1761398.html 主要描述了一下xorg的一些令我比较头痛的问题和一些感想。 1:单进程的设计 类似于...
  • terence427
  • terence427
  • 2013年06月21日 10:18
  • 3940

从零开始移植QT4.8.5之三--linux下交叉编译QT运行库

这篇文章要实现的目标是在linux下交叉编译QT在嵌入式设备OK6410的运行库,最终在OK6410上运行QT演示程序。 1、触摸屏库文件安装tslib 首先如果嵌入式设备上有触摸屏,需要先移植t...
  • andylauren
  • andylauren
  • 2016年07月22日 23:22
  • 3586

Minigui3在海思Hi3520D/Hi3531平台上运行

Minigui3在海思Hi3520D/Hi3531平台上运行   WORD里直接贴出来的,有图片,看不到哦!!!!可以在这里下载PDF! 完整代码和PDF下载位置: http://note.y...
  • jhting
  • jhting
  • 2016年04月04日 23:37
  • 3056
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我手头项目的MiniGui编译移植
举报原因:
原因补充:

(最多只允许输入30个字)