在這裡就不著重講解 qt的發展和裡面細節的內容,針對嵌入式linux系統來說,使用一種gui是很常見的,那麼首先就涉及移植的問題,只有再移植好的情況下再開發自己的產品。當然這個步驟不是死的,但移植確實是要做的,還要做好,過程有的時候也不是很容易的。今天我就在s3c2410的平台上移植了qt4,然後把移植出現的問題記錄了下來,僅僅做個參考。
1.開發平台:ubuntu 81.0,交叉編譯器版本3.4.5(arm-linux-gcc),qt-embedded-linux-opensource-src-4.4.3.tar.gz。
2.目標平台:s3c2410,320*240觸控螢幕 ,linux-2.6.26.5,u-boot-1.3.4
3.移植步驟如下:
(1)首先配置linux核心,支援lcd驅動,然後點亮你的屏,並且支援framebuffer,具體的核心配置如下:
device drivers ---> graphics support ---> <*> support for frame buffer devices --->
<*> s3c2410 lcd framebuffer support
當然裡面還涉及一些細節,這裡就不一一說了,如果大家這塊有問題,可以提出來!
(2)如果你想支援usb滑鼠和usb鍵盤,只需配置核心既可:
device drivers ---> [*] hid devices ---> <*> usb human inte***ce device (full hid) support
(3)編譯核心進行測試。
(4)
ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz
,放在你普通使用者的乙個目錄,比如/home/yoyoili/qt4_port.解壓.
(5)進入解壓好的目錄。
(6)然後就是很關鍵的配置,qt4的移植是通過配置來是否支援某種特性,比如openssl等等。那麼根據你自己的需求呢進行相應的配置就可以了,這裡參考**的一篇文章進行了配置,具體如下:
./configure /
-prefix /home/yoyoili/qt4_port/qt/build / //指定安裝的目錄,與開發板上執行的目錄一致
-release -shared /
-fast /
-pch /
-no-qt3support /
-qt-sql-sqlite /
-no-libtiff -no-libmng /
-qt-libjpeg /
-qt-zlib /
-qt-libpng /
-qt-freetype /
-no-openssl /
-nomake examples -nomake demos -nomake tools/
-optimized-qmake /
-no-phonon /
-no-nis /
-no-opengl /
-no-cups /
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm/
-no-xinerama -no-xshape /
-no-separate-debug-info /
-xplatform qws/linux-arm-g++ /
-embedded arm /
-depths 16 /
-no-qvfb /
-qt-gfx-linuxfb /
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb/
-qt-kbd-usb /
-confirm-license /
-no-armfpa
這裡我沒有去實現觸控螢幕的校準,由於時間的問題,以後陸續補充完整,如果支援觸控螢幕在加乙個:-qt-mouse-tslib。
這個過程如果涉及很多問題,一般都是你的系統缺少了某些庫的問題,我的ubuntu 8.10相應的庫都安裝的比較齊全,沒有錯誤,如果你是fedroa,只需要完全安裝,就不會有什麼問題,這個是驗證過的!
(7)然後就是make && make install,編譯和安裝了,如果好的話,就會在你的安裝目錄,也就是 /home/yoyoili/qt4_port/qt/build 有相應的如下目錄:bin include lib mkspecs plugins translations,大家可以看看裡面的內容。這裡我們關心的是乙個lib,就是庫檔案,以後交叉編譯好的程式在板子上跑起來以後都需要這些庫。把所需要的庫拷貝到開發板的相應的目錄即可,這裡比如:cp /home/yoyoili/qt4_port/qt/build/lib/libqt* /home/yoyoili/source/rootfs/home/qt/build/lib,當然有的庫你可以不需要拷貝的。
(8)然後拷貝顯示中文的文泉驛字型,這裡比如:cp /home/yoyoili/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf /home/yoyoili/source/rootfs/home/qt/build/fonts (前面的路徑就是編譯並安裝以後的目錄,這個字型就是這個目錄的lib/fonts下面 ,當然後面就是我們開發板根檔案系統的目錄)
(9)測試,我們用原始碼自帶的程式來進行測試,比如在原始碼的example裡有很多,你只需qmake && make就可以了,然後把可執行檔案拷貝開發板上用的根檔案系統。
(10)設定相應的環境變數,這個環境變數是給開發板使用的,不是給你的pc機!具體如下:
export qtdir=/home/qt/build
export ld_library_path=$qtdir/lib:$ld_library_path //(否則找不到庫)
export path=$qtdir/bin:$path
export qt_qws_fontdir=/home/qt/build/fonts // (否則字型無法顯示)
當然如果你用觸控螢幕還有相關的設定,你也需要在這裡新增!
(11)執行我們的程式:
./test -qws -fn /home/qt/build/fonts/wenquanyi_160_75.qpf
然後你的屏上就有了顯示。
(12)然後你可以在開發板上插上你的usb滑鼠就可以來操作這個小qt程式了。
(13)如果你想玩鍵盤,這樣有意思:
設定你的console=tty0既可以操作你的開發板了,你就可以玩命令了,那麼這個console的引數的指定有兩種方法,乙個可以通過u-boot傳遞,這裡比如:setenv bootargs root=/dev/nfs nfsroot=192.168.1.110:/home/yoyoili/source/rootfs ip=192.168.1.120 init=/linuxrc console=tty0,另乙個就是通過核心,你只需配置核心既可以:具體如下:
boot options ---> (root=/dev/nfs nfsroot=192.168.1.2:/home/yoyoili/source/rootfs ip=192.168.1.3 init=/linuxrc console=tty0)!
(14)這裡說一下可能出現的問題:
1.在編譯你的qt程式的時候會有乙個collect錯誤,應該是連線的qt4的庫不是arm交叉編譯工具編譯的,兩者連線有衝突。在file.pro中去掉對qt4庫的連線即可,增加一行config -= qt,即可去掉。
2.如果出現這個問題:/lib/libqtcore.so: undefined reference to `clock_gettim
解決的辦法就是在makefile裡的lfags後新增乙個 -lrt就可以。
3.有的人用的交叉編譯器是用的arm-softfloat-linux-gnu-gcc,所以在make編譯的時候老是提示arm-linux-gcc找不到,解決這個問題的辦法很多,乙個方法就是重新製作你的交叉編譯器,修改arm-softfloat.dat(好像是這個)將裡面的target修改為arm-linux就可以了,另乙個方法就是修改qt4原始碼的mkspecs/qws/linux-arm-g++目錄下修改qmake.config將arm-linux-gcc修改為arm-softfloat-linux-gcc,然後再make就行了。
4.當然你可以用很多任務具來編譯你的程式,比如qtcreator,kdevelop!
S3C2410讀寫Nand Flash分析
2009 01 15 16 51 321人閱讀 收藏舉報 s3c2410讀寫nand flash分析 一 結構分析 s3c2410處理器整合了8位nandflash控制器。目前市場上常見的8位nandflash有三星公司的k9f1208 k9f1g08 k9f2g08等。k9f1208 k9f1g0...
s3c2410的nand flash的驅動分析
以前都是把別人寫好的 直接拿過來用,而沒有去關心裡面到底怎麼實現的,昨晚對照著samsung 2410和k 9f1208的晶元資料把這些 讀了一遍,終於明白了對nand flash的操作一步步是怎麼實現的了。以下的這些 可以在vivi或者kernel裡面找到 對乙個nand flash的操作,總體上...
S3C2410快速啟動的實現
嵌入式系統對功能 可靠性 成本 體積 功耗等均有嚴格要求,以arm體系結構為基礎的各種risc微處理器具有靈活的特性和強大的效能,在嵌入式系統中得到了廣泛的應用。s3c2410是三星公司基於arm920t設計的一款處理器,在開發基於s3c2410的系統的過程中,如何讓系統快速穩定地啟動是乙個重要問題...