MINIGUI成功移植到MINI2440詳解

作者:黃思華 地址:華僑大學信息學院

 

主要參考網絡文章MINIGUI移植到2440嵌入式網絡博客

作者:劉溯奇   地點:南寧師專數計系

MiniGUI 1.3.3 移植詳解,作者:大漠孤狼

說明:

因爲要用MINIGUIPDA,得把MINIGUI移植到我的開發板MINIGUI上,移植成功,支持PNGJPG,鼠標和觸摸屏可以用,但觸摸屏不準,需要較正,較正本打算用tslib.1.3,移植成功後,MINIGUI要使用它做爲IAL,還需對libminigui1.6.10/res/ial/2410.c進行修改並用SMDK2410做爲它的IAL,但經查1.6.10裏己經沒有發佈2410.c1.3.33裏是有的。

硬件環境:

 

 

硬件環境:

HostX86PC

Target:友善之臂mini2440開發板

軟件環境:

HostVMware虛擬機下的redhat linux 9.0(完全安裝)

Targetarm-linux             kernel:linux-2.6.13

Crosstool: arm-linux-gcc-3.4.1

2.    準備以下源碼包(下載)

http://www.minigui.org/downloads

開發庫:libminigui-1.6.10.tar.gz

資源文件:minigui-res-1.6.10.tar.gz

示例程序:mg-samples-str-1.6.10.tar.gz

3.    編譯安裝

 (1) 準備工作

redhat linux 9.0下新建工作目錄

[root@localhost /]# mkdir /minigui              工作目錄 

[root@localhost /]# mkdir /minigui/compressed /minigui/source

[root@localhost /]# cd /minigui/compressed        進入工作目錄

說明:把第2步下載的源碼包放到該目錄中,即/minigui/compressed

 (2)編譯安裝minigui-res-1.6.10.tar.gz

說明:minigui 所使用的資源,包括基本字體、圖標、位圖和鼠標光標。

[root@localhost compressed]# tar xzvf minigui-res-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/minigui-res-1.6.10

[root@localhost minigui-res-1.6.10]# make install

把生成的……/minigui/res目錄下的所有文件拷貝到開發板上,其開發板上的目錄如下形式/usr/local/lib/minigui/res/……,實際上這個目錄與配置文件MiniGUI.cfg裏的相應內容的目錄一致,以便找到相應的資源。

3)支持jpegpng

首先安裝 zlib ,這個是後面的庫的編譯基礎。

http://www.zlib.net/zlib-1.2.3.tar.gz  400K,去下載吧,下載到目錄 /opt/mini2440

[user]# tar zxf zlib-1.2.3.tar.gz

由於 zlib 庫的configure 腳本不支持交叉編譯選項,只好自己動用了,手動臨時把 gcc 修改成指向我們的交叉編譯器 arm-linux-gcc

[Root]# cd /usr/bin

[Root]# mv gcc gcc_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-gcc ./gcc

[Root]# mv ld ld_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-ld ./ld

OK ,修改完成後回到 /opt/mini2410/zlib-1.2.3 目錄下

[user]#  ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --shared  

注意:這裏配置指向 /usr/local/arm/3.4.1/arm-linux/ 目錄,會自動安裝在 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目錄下,千萬不要裝錯目錄了,不然後面會找不到這個庫的

[user]#  make

[Root]# make install

安裝完後檢查一下目錄 /usr/local/arm/3.4.1/arm-linux/ [include,lib] ,假如 include 中沒有 zlib.h 之類的頭文件,lib 中沒有 libz.so.1.2.3 ,那就自己手動拷到這些目錄下去,記着拷的時候把所有的 *.h  都需要拷過去,在拷庫的時候用 cp a libz.* /./lib  就行,要用上 a 選項

記着把剛纔改過的 gcc 再改回去,不然後面會出錯的!!!!!

安裝 png 庫,這個是用來顯示 png 圖形的,MiniGUI 裏很多圖都是 png 的,如果沒有這個庫,你的 MiniGUI 將無法正常工作,切記切記!

http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz

還是那句話,庫不要用最新的,最新的容易有問題,用這個老一點的就沒問題了,呵

[user]# tar zxf libpng-1.0.10rc1.tar.gz

[user]# cd libpng-1.0.10rc1

Libpng 不提供有效的 configure 腳本,所以只好自己動手改 Makefile 文件了

[user]# cp scripts/makefile.linux  Makefile   // Scripts  下的一個 makefile 拷出來自己動手改

[user]# vi Makefile    // 自己動手改

CC=arm-linux-gcc    //修改這裏

# where "make install" puts libpng.a, libpng.so*, png.h and pngconf.h

prefix=/usr/local/arm/3.4.1/arm-linux     //修改這裏

# Where the zlib library and include files are located

#ZLIBLIB=/usr/local/lib

#ZLIBINC=/usr/local/include

ZLIBLIB=/usr/local/arm/3.4.1/arm-linux/lib   //修改這裏

ZLIBINC=/usr/local/arm/3.4.1/arm-linux/include   //修改這裏

好了,保存,然後去編譯吧

[user]#  make

[user]#  make install

如果有錯誤,檢查你前面的步驟哪個沒做對 :) 尤其是 zlib 的安裝

還是前面說的,檢查 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目錄中有成功安裝否,如果沒有安裝成功,那就自己把編譯出來的東西拷過去。記着,*.h .so 的文件都要拷。

OK,現在來安裝 jpeg

http://www.minigui.org/downloads    自己去下載

[user]# tar zxf jpegsrc.v6b.tar.gz

[user]# cd jpeg-6b

[user]# ./configure help    //可以查看它的配置選項

首先在本機上編譯一下,主要是它的 configure 文件設計得有問題,得先用 gcc 編譯一個 dummy.c 的文件,然後才能後面編譯,不然的話就會出現 libtool 找不到之類的錯誤

[user]# ./configure --enable-shared --enable-static

本機正常編譯通過以後,[user]# make clean 清除掉,然後執行交叉編譯

一般情況下用 [cdp@cdpserver jpeg-6b]$ ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --host=arm-linux --enable-shared --enable-static

--host=arm-linux  來指定交叉編譯選項,可是這裏死活它不認,所以改用別的方法,如下

[user]# ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ CC=arm-linux-gcc --enable-shared --enable-static

[user]# make

安裝前需要在 arm-linux 下建個目錄,不然安裝會出錯

[Root]# mkdir –p /usr/local/arm/3.4.1/arm-linux/man/man1

[Root]# make install    // OK

一樣,自己去檢查一下安裝是否成功 :)

接下來就可以編譯libminigui

(4)編譯安裝libminigui-1.6.10.tar.gz

說明:minigui函數庫源代碼。

[root@localhost minigui-res-1.6.10]# cd /minigui/compressed

[root@localhost compressed]# tar xzvf libminigui-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/libminigui-1.6.10

[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/ --host=arm-linux --target=arm-linux --build=i386-linux CC=arm-linux-gcc --with-osname=linux --with-style=classic  --with-targetname=fbcon --enable-autoial --enable-commial --enable-rbf16 --disable-vbfsupport

[root@localhost libminigui-1.6.10]# make

[root@localhost libminigui-1.6.10]# make install

/home/lib目錄下的所有庫文件(注:--prefix=/home/)拷貝到開發板上的/lib目錄下,把/home/etc下的MiniGUI.cfg拷貝到開發板上的/etc目錄下。

注:--disable-vbfsupport ,一定要注意這個選項,否則在開發板上運行示例程序時,提示找不到var bitmap font,實際上在開發板上的/usr/local/lib/minigui/res/font目錄下沒有var bitmap font字體庫,至於如何支持它,沒有深究。其他選項可通過./configure h幫助查看,根據自己的開發板及項目需要控制相應的功能。

(4)編譯 mg-samples-str-1.6.10.tar.gz

同上原理:

解壓

[………]# ./configure –host=arm-linux

[………]# make

把生成的可執行文件helloworld拷貝到開發板上的/usr/local/sbin目錄下

(6) 配置

第一處:在開發板的/etc目錄下建立ld.so.conf文件,並添加如下內容:

/usr/local/lib

/usr/lib

/lib    #實際上添加這個庫文件目錄就行了,目的是運行helloworld的時候,能找到相應的庫文件,其他兩個庫目錄可選,我加上了它,是爲了系統擴展。

第二處:修改開發板上的/etc/MiniGUI.cfg文件

用編輯器打開,更改如下內容:

 [system]

# GAL engine and default options

gal_engine=fbcon

#IAL engine

ial_engine=cosole

mdev=/dev/input/mice

mtype=IMSP2

 [fbcon]

Defaultmode=240x320-16bpp    #我的LCD顯示器是240x320像素的豎屏

與上述內容不一致的,請結合自己的開發板進行比較後,修改。

第三處:

/etc/init.d/rcS腳本文件裏添加如下內容:

/bin/ln –s /dev/vc/0 /dev/tty0

如不加,則出現如下問題:NEWGAL>FBCON: Can''''''''''''''''t open /dev/tty0: No such file or directory

NEWGAL: Set video mode failure.

InitGUI: Can not initialize graphics engine!

注:就是使FBCON與你的FramBuffer設備關聯

4.    測試

在超級終端運行交叉編譯自己修改製作的PDA,命令如下:

[………]# /usr/local/sbin/pda

/etc/init.d/rcS腳本文件裏添加如下內容:

/usr/local/sbin/pda &

呵呵,minigui跑起來了,自己感覺還是比較爽的。移植就算成功了,但沒有使用價值,需繼續添加minigui的一些功能,並需要編寫相應應用程序和linux內核相應的驅動。雖然開源,但提供的功能有限,不過,當作學習還是可以的。

發佈了16 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章