2009年6月3日 星期三

Embedded Linux系統視窗程式設計-QT(4-3)移植Qt4.5.1 for Embedded Linux

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的:
移植QT for Embedded Linux至ADP-XC5實驗板,使Qt Creator 上所撰寫的程式可以跨平台在Embedded System上執行.
QT目前並沒有將Andes Core加到程式的選項內,不過只需要修改部分的程式, Andes Core也可以執行QT.
3. 移植:
(1). QT for Embedded Linux已於 Embedded Linux系統視窗程式設計-QT(4-1)下載與安裝章節就已下載.
http://andescore.blogspot.com/2009/06/embedded-linux-qt4-1.html
注意:編譯前,先在根目錄指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-linux-V0〞,指定編譯路徑.
(2). 使用〝Terminal〞輸入〝tar zxvf qt-embedded-linux-eval-src-4.5.1.tar.tar〞解壓縮.

(3). 輸入〝cd qt-embedded-linux-eval-src-4.5.1〞進入qt-embedded-linux-eval-src-4.5.1目錄.(4). 至〝/mkspecs/qws/linux-generic-g++/qmake.conf〞檔案內修改程式,並存檔.
include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

# modifications to g++.conf

QMAKE_CC = nds32le-linux-gcc -EL -G0 -Wa,-mno-small-data
QMAKE_CXX = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data
QMAKE_LINK = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data
QMAKE_LINK_SHLIB = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data

# modifications to linux.conf
QMAKE_AR = nds32le-linux-ar cqs
QMAKE_OBJCOPY = nds32le-linux-objcopy
QMAKE_STRIP = nds32le-linux-strip

(5). 先前說過QT目前並沒有將Andes Core加到程式的選項內,需強制程式選擇下列#define的參數,至〝src/corelib/io/qfilesystemwatcher_inotify.cpp〞修改程式如下:
//# error "This architecture is not supported. Please talk to qt-bugs@trolltech.com"
# define __NR_inotify_init 291
# define __NR_inotify_add_watch 292
# define __NR_inotify_rm_watch 293

(6). 使用〝Terminal〞至〝qt-embedded-linux-opensource-src-4.5.1〞目錄下輸入下列指令,這裡先選擇支援觸控面板:
a. 不支援觸控面板:
〝./configure -embedded generic -qt-zlib -qt-libpng -qt-gif -qt-libtiff -qt-libmng -qt-libjpeg -no-openssl -little-endian -webkit -svg -no-xmlpatterns -no-phonon-backend -no-accessibility -no-glib -no-freetype -no-dbus -no-pch -v -D ALWAYS_INLINE=inline〞
b. 支援觸控面板:
〝./configure -embedded generic -qt-zlib -qt-libpng -qt-gif -qt-libtiff -qt-libmng -qt-libjpeg -no-openssl -little-endian -webkit -svg -no-xmlpatterns -no-phonon-backend -no-accessibility -no-glib -no-freetype -no-dbus -no-pch -qt-mouse-tslib -I/usr/local/Trolltech/include -L/usr/local/Trolltech/lib -v -D ALWAYS_INLINE=inline〞
注意:選擇支援觸控面板必須加入tslib路徑,記得路徑使用者名稱需修改.

(7). 輸入〝o〞.

(8). 輸入〝yes〞,編譯configure需等待一段時間.(9). 使用〝Terminal〞輸入〝make〞,等待一段時間,可以去喝個下午茶再回來.(10). 輸入〝sudo make install〞,輸入Password,執行完畢後QT for Embedded Linux building程式結束,之後要將building程式,至ADP-XC5實驗板上執行.(11). 先在SD卡新增〝usr/local/ Trolltech/〞檔案目錄.(12). 使用〝Terminal〞輸入〝cd /〞至根目錄.(13). 輸入〝cd /usr/local/Trolltech/〞至編譯好的QtEmbedded-4.5.1-generic檔案夾內.(14). 輸入〝cp -a * /media/disk/usr/local/Trolltech/〞將QtEmbedded-4.5.1-generic複製到SD卡上.

(15). 還有將ANDSE toolchain目錄下檔案〝/home/acer/Andestech/AndeSight133/toolchains/nds32le-linux-glibc-V0/nds32le-linux/libc/lib〞目錄下的〝libgcc_s.so.1〞複製到SD卡〝/usr/local/Trolltech/QtEmbedded-4.5.1-generic/lib〞檔案夾下.(16). 執行Embedded Linux:
a. 注意:一般SD卡格式都為FAT32,在Linux下無法顯示長檔名,如要支援長檔名請將SD卡format成EXT2或是EXT3格式.format步驟如下所示: http://andescore.blogspot.com/2009/02/format-sd-cardext2.html
b. 因目前ADP-XC5開發板上所使用的OS為AndeSight v1.3.1 Toolchains building 會造成錯誤,請依照Embedded Linux系統(C)_在SD card上執行Embedded Linux http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Embedded%20Linux%202.6.27%5E_2/XC527執行AndeSight v1.3.3 Toolchains building的OS,再執行下列程序.
(17). 使用〝超級終端機〞輸入〝mount -o mand /dev/cf /tmp〞掛載SD 卡.(18). 輸入export參數:
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-generic
export QWS_KEYBOARD=None
export QWS_MOUSE_PROTO=tslib
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

注意:如重loading Embedded Linux也需輸入tslib export參數.
(19). 輸入〝cd usr〞.

(20). 新增檔案夾輸入〝mkdir local〞,再輸入〝cd local〞.(21). 新增檔案夾輸入〝mkdir Trolltech〞.(22). 連結QT檔案輸入〝ln -s /tmp/usr/local/Trolltech/QtEmbedded-4.5.1-generic /usr/local/Trolltech/〞.

(23). 連結tslib檔案輸入〝ln -s /tmp/etc/pointercal /etc/pointercal〞.(24). 測試執行QT範例輸入〝cd /tmp/usr/local/Trolltech/QtEmbedded-4.5.1-generic/examples/layouts/borderlayout〞

(25). 執行〝./borderlayout -qws〞,

顯示結果如下所示.注意: ADP-XC5實驗板Embedded Linux進入休眠狀態時,輸入
〝printf “\033[9;0]” > /dev/tty0〞,開啟.注意:中斷測試程式按〝Ctrl+C〞.
(26). 程式執行完畢後要卸載SD需再根目錄輸入〝umount /tmp〞.




2009年6月2日 星期二

Embedded Linux系統視窗程式設計-QT(4-2)移植tslib

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu10.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.27
2.目的:
下載並移植tslib,tslib為QT for Embedded Linux 控制觸控面板的函式庫.
3. 下載與移植:
(1). 至下網址下載〝tslib-1.0〞.
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/tslib-1.0/tslib-1.0.zip
注意:編譯前,先在根目錄指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-linux-V0〞,指定編譯路徑.
(2). 使用〝Terminal〞輸入〝tar -xvf tslib-1.0.tar〞解壓縮. (3). 輸入〝cd tslib-1.0〞進入tslib-1.0目錄.
(4). 輸入〝./autogen.sh〞(需先使用System->Administration->Synaptic Package Manager 安裝:m4;autoconf;automake;libtool).
(5). 至〝config.sub〞修改程式,依下列所示增加參數,這裡要非常注意容易出錯(Tab鍵與空白鍵的差異)〞.
(6). 至〝configure.ac〞修改程式,依下列所示,將〝AC_FUNC_MALLOC〞註解掉.
(7). 使用〝Terminal〞輸入〝./configure --prefix=/usr/local/Trolltech CC=nds32le-linux-gcc CXX=nds32le-linux-g++ --host=nds32le-linux ac_cv_func_malloc_0_nonnull=yes〞. (8). 輸入〝make〞編譯.
(9). 輸入〝sudo PATH=/home/acer/Andestech/AndeSight133/toolchains/nds32le-linux-glibc-V0/bin:$PATH make install〞再輸入password安裝.

(10). 安裝完成的檔案夾,內路徑為〝/usr/local/Trolltech〞產生下列四個檔案夾.
(11). 開啟〝/usr/local/Trolltech/etc/ts.cof〞檔案, ,將〝# module_raw input〞改成〝module_raw input〞#號拿掉後存檔.
注意:如遇到無法開啟之檔案,請使用〝Terminal〞輸入〝sudo chmod –R 777 Trolltech/〞將此目錄下權限全開.
(12). 將〝/bin;/etc;/lib〞三個檔案夾複製至SD卡.
a. 注意:一般SD卡格式都為FAT32,在Linux下無法顯示長檔名,如要支援長檔名請將SD卡format成EXT2或是EXT3格式.format步驟如下所示: http://andescore.blogspot.com/2009/02/format-sd-cardext2.html
b. 因目前ADP-XC5開發板上所使用的OS為AndeSight v1.3.1 Toolchains building 會造成錯誤,請依照Embedded Linux系統(C)_在SD card上執行Embedded Linux http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Embedded%20Linux%202.6.27%5E_2/XC527 執行AndeSight v1.3.3 Toolchains building的OS,再執行/bin下的執行檔程式.
(13). 使用〝超級終端機〞輸入〝mount –o mand /dev/cf /tmp〞掛載SD 卡.
(14). 輸入export參數:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/tmp/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/tmp/etc/pointercal
export TSLIB_CONFFILE=/tmp/etc/ts.conf
export TSLIB_PLUGINDIR=/tmp/lib/ts
export TSLIB_FBDEVICE=/dev/fb0

(15). 輸入〝cd tmp/bin〞至SD卡執行檔位置.
(16). tslib-1.0下共有五個測試執行檔:
a. 共有〝./ts_calibrate〞;〝./ts_harvest〞;〝./ts_print〞;〝./ts_print_raw〞; 執行〝./ts_test〞結果如下所示.b. 再執行〝./ts_calibrate〞,會在SD卡〝/tmp/etc/〞下產生〝pointercal〞定位檔,需給下一章節QT for Embedded Linux使用. 注意: ADP-XC5實驗板Embedded Linux進入休眠狀態時,輸入 〝printf “\033[9;0]” > /dev/tty0〞,開啟.
注意:中斷測試程式按〝Ctrl+C〞.
(17). 程式執行完畢後要卸載SD需再根目錄輸入〝umount /tmp〞.



2009年6月1日 星期一

Embedded Linux系統視窗程式設計-QT(4-1)Qt 4.7.0下載與安裝

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu10.04.
(4). Toolchains: AndeSight v1.4.0 for Linux.
(5). Embedded Linux2.6.27
2. 目的:
下載〝Qt libraries 4.7.0 for Embedded Linux〞與〝Qt SDK for Linux/X11〞,並安裝Qt Creator.
3. 下載與安裝:
(1). 至下列網站下載程式:
http://qt.nokia.com/downloads
(2). 使用滑鼠選擇〝Go LGPL〞.(3). 選擇〝Qt libraries 4.7.0 for Embedded Linux〞與〝Qt SDK for Linux/X11〞.(4). 之後可以看到下列下載路徑,點選路徑下載程式.(5). 開啟〝Terminal〞,輸入〝./qt-sdk-linux-x86-opensource-2010.05.bin〞,安裝Qt Creator.(6). 按〝Nest>〞.(7). 選擇〝I accept the agreement〞,按〝Nest>〞.(8). 按〝Nest>〞.(9). 按〝Nest>〞.(10). 按〝Nest>〞.(11). 按〝Nest>〞.(12). 開始安裝.(13). 按〝Finish〞結束安裝.(14). 最後成功安裝Qt Creator.


Embedded Linux系統視窗程式設計-QT(4-1)Qt 4.5.0下載與安裝

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的:下載〝Qt for Embedded Linux〞與〝Qt SDK for Linux/X11〞,並安裝Qt Creator.
3. 下載與安裝:
(1). 至下列網站申請序號:
http://qt.nokia.com/downloads/evaluations/embedded-linux-cpp(2). 申請序號完畢後,可以在自己的E-mail信箱內收到回信,請依回信內容下載,〝Qt for Embedded Linux〞與〝Qt SDK for Linux/X11〞,回信內容還包括〝License Key〞.(3). 使用〝Terminal〞在qt-sdk-linux-x86-eval-2009.02.bin檔案位置輸入〝./ qt-sdk-linux-x86-eval-2009.02.bin〞,執行Qt Creator安裝.
(4). 按〝Next>〞.(5). 按〝Next>〞. (6). 鍵入E-mail取得的〝License Key〞後,按〝Next>〞繼續安裝至完成.