OMAPL138開發板嵌入式(QT)軟件開發環境構建

本文檔基於ICETEK-OMAPL138-KB-EZ開發套件,主要參考開發套件中的ICETEK-OMAPL138-KB-EZ使用手冊和ICETEK-OMAPL138-KB-EZ-DS使用手冊。本文檔講述在ICETEK-OMAPL138-KB-EZ開發板上創建嵌入式Linux操做系統和嵌入式QT圖形用戶界面開發環境的流程與相關注意事項。
1、    宿主機軟件開發環境概述
操做系統:WINDOWS XP SP三、運行在虛擬機中的Linux系統Ubuntn V9.04
應用軟件:虛擬機軟件VirtualBox、超級終端
1.    設置超級終端
鏈接使用COM1,屬性設定:每秒位數=115200,數據位=8,奇偶校驗=無,中止位=1,數據流控制=無;退出時存儲鏈接
2.    安裝VirtualBox
3.    安裝虛擬機系統Ubuntn9.04
安裝NFS服務,啓動NFS服務
安裝TFTP服務,啓動TFTP服務
4.    安裝Linux開發環境
安裝OMAPL138開發環境,從Ti網站下載Ti原始安裝包或者使用ICETEK提供的開發包
5.    設置Linux開發環境(使用超級用戶權限)
設置ip地址:修改/etc/network目錄下的interfaces文件,添加須要的ip配置,重啓系統
設置NFS服務:修改/etc/exports文件,把ip修改成目標機使用的網段或地址,從新啓動NFS服務(/etc/init.d/目錄下的portmap服務、nfs-kernel-server服務)
2、    目標機嵌入式系統的創建
系統啓動須要執行的程序依次爲:RBL,UBL,UBoot,Linux Kernel,Linux Filesystem。
1.    UBoot的燒寫
獲取UBoot的源代碼,使用交叉編譯器環境編譯ARM架構下的UBoot,在windows中經過CCS軟件用Nandflash燒寫程序以uboot的格式燒寫到開發板的Nandflash裏面。
2.    Linux內核的移植
獲取Linux Kernel2.6.33的源代碼
在內核目錄樹根目錄下使用make menuconfig 進行內核的配置修改
須要修改的配置參考使用手冊更新版2中的修改內核部分(能夠修改一項測試一項,從而肯定每一項的修改是否可行及有誤;也能夠一次性所有修改完畢後再進行測試,但這樣若是編譯出錯不方便查錯)。
使用交叉編譯器arm-none-linux-gnueabi-編譯ARM架構下的Linux內核映像:make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
編譯須要動態加載的內核模塊:make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules
安裝編譯好的內核模塊到文件系統中
3.    NFS文件系統的創建
使用NFS服務進行目標機的文件系統的掛載,加快程序的調試和修改過程。
在Linux開發環境中建議一個NFS服務的目錄掛載點,把目標機的文件系統複製到該掛載點下。設置目標機的uboot啓動參數:setenv bootargs ‘console=ttyS2,115200n8 noinitrd rw ip=192.168.1.3 root=/dev/nfs nfsroot=192.168.1.103:/home/realtimedsp/workdir/filesys,nolock mem=64M’;saveenv【必須制定目標機的終端ip,不然沒法掛載nfs】
3、    嵌入式QT圖形界面開發環境的創建
1.    修改內核配置以支持圖形界面的顯示(LCD)和觸摸屏的操做
對內核的配置參考ICETEK-OMAPL138-KB-DS使用手冊中的修改內核。(不一樣的開發板對內核的配置不同,涉及相關硬件的型號等。)
2.    安裝觸摸屏支持庫tslib
(1)介紹:tslib是一個開源程序,爲觸摸屏驅動得到的採樣提供諸如濾波、去抖、校準等功能,一般做爲觸摸屏驅動的適配層,爲上層的應用提供了一個統一的接口。
tslib的做用:從驅動程序處得到原始的設備座標數據,經過一系列的去噪、去抖、座標變換等算法操做去除觸摸屏操做噪聲,並將原始的設備座標轉換爲相應的屏幕座標給GUI庫(如Qt)使用
(2)獲取:從互聯網下載tslib-1.4庫
(3)安裝   
a    解壓縮文件:tar  –zxvf  tslib-1.4.tar.gz
b    進入tslib目錄 :cd tslib   產生配置文件:./autogen.sh
c    產生緩衝文件:echo 「ac_cv_func_malloc_0_nonnull=yes」>arm-linux.cache

d    配置編譯安裝選項: linux

./configure –preifx=/home/realtimedsp/workdir/filesys/opt/tslib 
–host=arm-linux –target=arm-linux CC=arm-none-linux-gnueabi-gcc 
CXX=arm-none-gnueabi-g++ --with-gnu-ld –cache-file=arm-linux.cache
note:prefix選項指定tslib在目標板上的安裝目錄,host和target指定目標板CPU指令集和操做系統,CC和CXX指定交叉編譯器

e     修改libtool文件以保證make無誤:sed –I ‘s/\$echo/\$ECHO/g’ libtool
f      編譯、安裝tslib:make ;make install
在安裝目錄下有四個目錄:bin   etc   include  lib
g    修改配置文件:進入安裝目錄下cd /home/realtimedsp/workdir/filesys/opt/tslib,修改配置目錄下的配置文件:gedit  etc/ts.conf文件;去掉#module_raw input的註釋,保存退出
h    添加腳本配置文件,以方便加載tslib庫使用時須要的環境變量:在目標機文件系統的root目錄下創建loadModules.sh文件,添加以下tslib庫相關的環境變量:
#!/bin/sh
export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0
保存退出
I        把tslib/lib目錄下的共享庫複製到目標機的lib庫目錄下,使系統能夠搜索到
j        在須要使用tslib的支持以前,在目標板上經過執行source loadModules.sh來配置須要的環境變量
k    在目標板上第一次使用時使用tslib/bin/ts_calibrate程序進行觸摸屏的五點校對,校對文件保存在tslib安裝目錄的配置目錄下,即tslib/etc/pointercal文件
校對完,創建etc下的連接:輸入ln –s /opt/tslib/etc/pointercal  /etc/pointercal
m    校對後,可使用tslib/bin/ts_test程序進行測試
3.    嵌入式圖形用戶界面庫QT的移植
(1) 介紹:Qt是一個跨平臺應用程序框架,使用Qt,能夠一次性開發應用程序和用戶界面,而後將其部署到多個桌面和嵌入式操做系統中,而無需重複編寫源代碼。
(2) 獲取:從互聯網官方網站上下載或者從下面的路徑中拷貝Qt/Embedded版本:\\192.1.1.156\doc\產品資料\電能質量開發板資料\QT\qt-everywhere-opensource-src-4.7.4[embedded].tar.gz
(3) 把文件包拷貝到虛擬機Ubuntn中的某個目錄下,解壓縮:
tar –zxvf qt-everywhere-opensource-src-4.7.4[embedded].tar.gz
(3) 複製編譯配置目錄,進入解壓縮後的qt主目錄:
cp mkspecs/qws/linux-arm-g++/ mkspecs/qws/linux-omapl138-g++/ -R
(4) 修改上面的linux-omapl138-g++配置目錄下的qmake.conf配置文件,主要是修改交叉編譯器和添加tslib支持,修改文件中下面的變量:
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX= arm-none-linux-gnueabi-g++
QMAKE_LINK= arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB= arm-none-linux-gnueabi-
#tslib support
QMAKE_INCDIR=/home/realtimedsp/workdir/filesys/opt/tslib/include
QMAKE_LIBDIR=/home/realtimedsp/workdir/filesys/opt/tslib/lib
QMAKE_LFLAGS += -Wl, -rpath-link=/home/realtimedsp/workdir/filesys/opt/tslib/lib

QMAKE_AR= arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY=arm-none-linux-gnueabi-objcopy
QMAKE_STRIP= arm-none-linux-gnueabi-strip
(5) 產生編譯腳本,回到解壓縮的qt主目錄下:
./configure –prefix /home/realtimedsp/workdir/filesys/opt/qt-embedded –embedded arm –platform /qws/linux-x86-g++ -xplatform /qws/linux-omapl138-g++ -depths 16,24,32 –no-cups –no-largefile –no-accessibility –no-openssl –qt-mouse-pc –qt-mouse-linuxtp –qt-mouse-linuxinput –plugin-mouse-linuxtp –plugin-mouse-pc –fast –qt-mouse-tslib
選擇評估板進行安裝,輸入yes接收許可證條款。
(6) 安裝:make; make install,qt會安裝到上面prefix選項指定的目錄下面
(7) 設置一個到prefix指定路徑的鏈接以保證以NFS運行時正常運行Qt
cd /home/realtimedsp/workdir/filesys/home
sudo mkdir –p realtimedsp/workdir/filesys/opt
cd realtimedsp/workdir/filesys/opt
sudo ln –s /opt/qt-embedded qt-embedded
(8) 設定Qt使用的須要的環境變量,把下面變量添加到loadModules.sh配置文件中:
export QWS_MOUSE_PORTO=tslib:/dev/input/event0
export QWS_DISPLAY=LinuxFb:/dev/fb0
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/opt/qt-embedded/lib
保存退出 在使用Qt庫以前,經過執行source loadModules.sh添加須要的環境變量 在執行Qt程序時,在程序名後加上-qws選項,好比./demo  -qws 4、    相關的注意事項 1.    在Ubuntu9.04系統的終端中進行相關的操做,包括執行命令、腳本、修改配置文件、編譯安裝程序等動做時,儘可能使用超級用戶權限,即在命令前加上sudo,以免一些莫名奇妙的錯誤或者被忽略的錯誤。 2.    宿主機和目標機的ip地址的設置影響着TFTP、NFS服務的正常使用,根據實際的狀況進行ip地址的配置,保證宿主機中虛擬系統的ip和目標機中的ip處於同一個網段之中。 3.    Qt應用程序移植的注意事項 儘可能使用IDE工具(如CodeBlocks)進行開發和移植程序的構建 應用程序移植時應使用Qt-Embedded庫,且與開發板上的Qt相同的版本 使用交叉編譯器進行編譯:arm-none-linuxe-gnueabi-gcc/g++ 使用arm-none-linux-gnueabi-gcc進行鏈接 注意代碼中的中文編碼調整,在嵌入式環境中可能亂碼 在嵌入式環境中執行Qt應用程序時,在程序名後面加-qws選項 4.    若是在構建的過程當中全部的步驟都肯定無誤,可是沒法獲得手冊中的測試結果且不明白可能的緣由時,建議從新復位開發板後再進行測試。 5.    若是串口終端在加載根文件系統成功後,沒有出現登陸提示,則緣由應該是inittab中的設置與啓動參數的設置不一致:S:2345:respawn:/sbin/getty 115200 ttyS2,這行語句的做用是把控制終端定向到串口2終端,請檢查最後一個參數,即串口號與bootloader中設置的bootargs參數是否一致,不一致則把它改成與bootargs中的console使用的串口號一致。 6.    內核模塊編譯安裝的前提:/lib/modules目錄中對應內核版本號的內核源碼樹的安裝。在編譯生成內核uImage鏡像後,make modules以編譯內核模塊,而後經過export環境變量INSTALL_MOD_PATH的值來指定模塊使用的內核源碼樹的安裝路徑,最後執行make modules_install命令安裝模塊使用內核源碼樹。 7.    Qt圖形界面庫的使用:當進行嵌入式qt應用程序的開發時,必須安裝完整的qt-embedded版本庫【不必定要安裝到開發板的文件系統上,可是建議安裝到開發板的NFS文件系統上,這樣利於進行程序的調試】;當產品已經開發完畢時,應該只在文件系統上保留qt應用程序運行須要的動態庫(lib/),以下降文件系統的大小,有效利用存儲空間,刪除其它沒必要要的qt庫組件。
相關文章
相關標籤/搜索