一:前言
最近幾天在移植minigui,一直沒有使用過minigui界面,想看看什么效果,順便學習一下,畢竟是國產的。花了我三天的時間,終于在我的LCD上顯示minigui界面了,可以運行MDE演示程序。期間遇到很多問題,還好我都把我的問題以及解決方法都記錄下來,下面開始我的移植。
二:使用環境的搭建
1.主機:RedHat Enterprise Linux AS4
2.交叉編譯工具路徑:/usr/local/arm/2.95.3/ (用于編譯vivi,minigui1.3.3)
/usr/local/arm/3.3.2/ (用于編譯busybox1.5.1)
/usr/local/arm/3.4.1/ (用于編譯linux2.6.11.1內核的)
把/usr/local/arm/2.95.3/bin路徑添加到/etc/profile文件中
3.開發板:友善之臂SBC2410
4.開發板使用的Linux2.6.11內核
內核配置時候選擇下面的選項
Graphics support --->
<*> Support for frame buffer devices //minigui圖形引擎有關
<*> Virtual Frame Buffer support (ONLY FOR TESTING!)
Console display driver support --->
<*> Framebuffer Console support //minigui圖形引擎有關
三:資源依賴庫的安裝
在網上參考了大漠孤狼的移植方法,編譯的時候這些資源不知道用到沒,有的是用到的。我都安裝了。所有的資源依賴庫和minigui源文件都下載到/home/minigui/下。
1.zlib 庫的安裝
下載地址:http://www.zlib.net/zlib-1.2.3.tar.gz
# tar zxf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --shared
#vi Makefile
把gcc都改成arm-linux-gcc
#make
#make install
2.png 庫的安裝
下載:http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz
# tar zxf libpng-1.0.10rc1.tar.gz
# cd libpng-1.0.10rc1
# cp scripts/makefile.linux Makefile
# vi Makefile
CC=arm-linux-gcc
# where 'make install' puts libpng.a, libpng.so*, png.h and pngconf.h
prefix=/usr/local/arm/2.95.3/arm-linux //修改這里
# Where the zlib library and include files are located
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=/usr/local/arm/2.95.3/arm-linux/lib //修改這里
ZLIBINC=/usr/local/arm/2.95.3/arm-linux/include //修改這里
#make
#make install
3.jpeg庫的安裝
jpeg庫的安裝我是copy /usr/local/arm/3.3.2/arm-linux/lib/目錄下的,3.3.2的交叉編譯器本身含有jpeg庫的。
4.libttf庫的安裝
下載地址:http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz
# tar zxf freetype-1.3.1.tar.gz
# cd freetype-1.3.1
把所有的Makefile文件的gcc改為arm-linux-gcc
#make
#make install
四.MiniGUIi的安裝
在/usr/下新建一個目錄存放minigui編譯安裝的結果
#mkdir /usr/arm-linux
#cd /usr/arm-linux
# mkdir lib etc include
1.安裝minigui-res-1.3.3.tar.gz
#tar –xzvf minigui-res-1.3.3.tar.gz
#cd minigui-res-1.3.3
#修改config.linux 文件,將{prefix}改為/usr/arm-linux
#make install //安裝資源文件
資源文件安裝到/usr/arm-linux/lib下
2.安裝libminigui-1.3.3.tar.gz
在安裝libminigui-1.3.3時候需要修改一個文件fbvideo.c,在libminigui-1.3.3/src/newgal/fbcon/目錄下:修改如下:
/* Initialize the library */
GAL_fbdev = getenv('FRAMEBUFFER');
if ( GAL_fbdev == NULL ) {
GAL_fbdev = '/dev/fb/0'; //修改在這里
}
console_fd = open(GAL_fbdev, O_RDWR, 0);
if ( console_fd < 0 ) {
GAL_SetError('Unable to open %s', GAL_fbdev);
return(-1);
}
#tar –xzvf libminigui-1.3.3.tar.gz
#cd libminigui-1.3.3
#make menuconfig
配置libminigui
System Wide Options:
[*] Build MiniGUI-Lite //用 Lite 方式編譯,不是Thread 方式,這里適用于 PDA
[ ] Stand-Alone
[ ] Use incore (built-in) resource
[*] Unit of timer is 10ms
[*] Cursor support
[ ] User can move window with mouse
[*] Mouse button can do double click
[*] Build with debugging messages
[ ] Trace messages of MiniGUI
[*] Include symbol name of messages
GAL engine Options :
(NEWGAL) GAL and its engines
[*] NEWGAL engine on Linux FrameBuffer console
[ ] NEWGAL engine on Qt Virtual FrameBuffer
[ ] NEWGAL engine on eCos LCD interface
[*] Dummy NEWGAL engine
[*] Have console on Linux FrameBuffer
IAL engine options :
[ ] EP7211-based board
[ ] ADS Graphics Client
[ ] iPAQ H3600 (also H3800)
[ ] MPC823
[ ] PX255B
[ ] NEC VR4181
[ ] Helio Touch Panel
[ ] MT T800
[*] SMDK2410 Touch Screen
[ ] uClinux Touch Screen Palm/MC68EZ328
[*] Dummy IAL engine
[*] Native (console) input engine
--- Native IAL engine subdriver options
[ ] PS2 mouse
[ ] IntelligentMouse (IMPS/2) mouse
[ ] MS mouse
[ ] MS3 mouse
[*] GPM daemon
Font Option :
[*] Raw bitmap font
[ ] Var bitmap font //不要選這個,編譯mde時候會出現錯誤
[*] Incore font sansserif
[*] Incore font courier
[*] Incore font symbol
[*] Incore font vgas
[*] Qt Prerendered Font
[*] TrueType font
[ ] Adobe Type1 font
Image Options :
[*] Includes SaveBitmap-related functions
[ ] PCX file support
[ ] LBM/PBM file support
[ ] TGA file support
[*] GIF file support
[*] JPG file support
[*] PNG file support
Input Medthold Option:
[*] IME (GB2312) support
[ ] IME (GB2312) Intelligent Pinyin module
Development Environment Option :
(Linux) Platform
(arm-linux-gcc) Compiler
(glibc) Libc
--- Installation options
Path prefix: '/usr/arm-linux'
--- Additonal Compiler Flags
CFLAGS: ''
LDFLAGS: ''
配置完成后
#make
#make install
就會把minigui庫安裝到/usr/arm-linux/lib下 MiniGUI.cfg安裝到/usr/arm-linux/etc/ 相關的文件安裝到/usr/arm-linux/include/下。
3.安裝mde-1.3.0.tar.gz
#tar –xzvf mde-1.3.0.tar.gz
#cd mde-1.3.0
#export CC=arm-linux-gcc
#vi configure.in
修改configure.in 文件
l 增加一行
CFLAGS=”$CFLAGS –I${prefix}/include -L${prefix}/lib” //指定minigui 的頭文件及庫文件的參考路徑。
l 修改頭文件路徑:
AC_CHECK_HEADERS(${prefix}/include/minigui/common.h,
have_libminigui=yes, foo=bar)
#./autogen.sh
#./configure --prefix=/usr/arm-linux /
--host=i386-linux /
--build=arm -linux /
--target=arm -linux /
#make
如果編譯通過后就會在當前目錄下生成minigui演示程序,如果編譯不通過大多是你的libminigui-1.3.3配置不正確。
五.MiniGUI根文件系統的制作
在/opt目錄下新建rootfs,如果你已經有了一個可利用的根文件系統,把它復制到rootfs目錄下,新建幾個目錄即可。如下:
#cd /opt/rootfs/usr
#mkdir local
#cd local
#mkdir etc lib minigui
1.把以上資源copy到/usr/local/相關目錄下。方法如下:
#cp –a /usr/arm-linux/lib/*.* /opt/rootfs/usr/local/lib/
#cp –a /usr/arm-linux/etc/*.* /opt/rootfs/usr/local/etc/
把/usr/local/arm/2.95.3/arm-linux/lib/目錄下的libjpeg,libpng,libttf,libz相關的庫copy到/opt/rootfs/usr/local/lib/下,copy時帶上-a參數。
2.使庫文件工作。
修改/opt/rootfs/etc/目錄下的ld.so.conf,把/usr/local/lib添加到改文件。為了使新加的庫生效,執行
#ldconfig –r /opt/rootfs/
3.復制mde演示程序
把生成的mde演示程序copy到/opt/rootfs/usr/local/minigui/目錄下,只copy相關的應用程序和res目錄,注意復制mginit時候把mginit.rc也復制過去
4.修改MiniGUI.cfg
修改MiniGUI.cfg先調試GAL engine,調試完成后再調試IAL engine,修改如下:其他默認:
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=dummy //修改再這里
mdev=none //修改再這里
mtype=none //修改再這里
[fbcon]
defaultmode=640x480-16bpp //修改再這里,我使用的lcd是640x480
5.含有minigui根文件映像的制作。
我使用的linux2.6.11.1內核已經移植好了yaffs文件系統,可以使用mkyaffsimg工具制作yaffs根文件系統映像。燒到開發板即可,我是通過usb下載的。制作方法如下:
#cd /opt
#mkyaffsimg rootfs rootfs.img
這樣就會在/opt生成rootfs.img映像文件,下載到開發板運行。
六.MiniGUI初始化一些問題以及解決辦法。
按照以上的方法運行mginit的時候會出現一些問題,按照上面MiniGUI.cfg配置運行的話會出現:
問題1
[root@FriendlyARM mginit]# ./mginit
640x480 LCD
GAL ENGINE: Can't open /dev/tty0: No such file or directory
NEWGAL: Set video mode failure.
Error in step 3: Can not initialize graphics engine!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
解決方法:
#mknod /dev/tty0 c 4 0
這樣在運行mginit的時候還會有錯誤,如下:
問題2
LoadSharedResource: No such file or directory
Error in step 7: Can not load shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
[root@FriendlyARM mginit]#
解決方法:
mkdir /var/tmp
這樣就可以看到minigui初步界面了,如果強制退出的話,在下次運行mginit的話會出現下面的問題:
問題3:
Error in step 3: There is already an instance of 'mginit'!
解決方法:
刪除/var/tmp目錄下的2個minigui的文件。
七.輸入引擎的添加
以上的操作還沒有添加輸入引擎。我的開發板可利用的輸入引擎是usb鼠標,下面就是添加usb輸入引擎的過程。
1. 查看usb鼠標設備節點
查看方法就是在沒有插入usb鼠標和插入usb鼠標時看看/dev/input/目錄下有什么變化,我的在/dev/input目錄下多出了mouse1,說明我的usb鼠標的設備節點是/dev/input/mouse1,把這個節點鏈接到/dev下更名為mouse,即:
#ln –s /dev/input/mouse1 /dev/mouse
2.配置MiniGUI.cfg文件(可以通過串口修改)
配置MiniGUI.cfg文件,主要是添加輸入引擎,添加方法如下:
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=console //添加在這里
mdev=/dev/mouse //添加在這里
mtype=PS2 //添加在這里
[fbcon]
defaultmode=640x480-16bpp
這樣就把我的usb鼠標添加上去了,修改mginit.rc,自動執行same程序,然后運行mginit就會有對話框跳出來,點擊確定確定后就進入到minigui界面了,點擊左下角的start按鈕會有問題,其他的游戲等都可以使用。
上一篇:S3C4510上嵌入式Web服務器-boa在uclinux下的的移植
下一篇:Linux幀緩沖設備驅動程序框架及圖形界面GUI的移植
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- MCP3905EV,用于計量客戶的 MCP3905 電能計量 IC 的評估板
- AS3930 演示系統,AS3930 喚醒接收器的演示板包括一維喚醒模式檢測、虛假喚醒讀出
- 使用 ROHM Semiconductor 的 BD45291 的參考設計
- ONS321A5VGEVB:5 Vgs MOSFET 評估板
- 2022電子設計競賽省賽F題跟隨小車設計
- LTC2635-LMX10 四通道、10 位數模轉換器的典型應用
- NCP5104SYNCBUCKGEVB:可變直流輸入、開環同步降壓評估板
- 用LED替代低效率的MR16鹵素燈
- DC2296A DC2209和DC2210數字溫度測量系統
- 【訓練營】一條狗腿子