移植 Qt for Embedded Linux Architecture for Next-generation Digital Engines for SoC
1. 移植 QT for Embedded Linux 至實驗板, 使 Qt Creator 上所撰寫的程式可以跨平台在 Embedded System 上執行. QT 目前並沒有將 Andes Core 加到程式的選項內, 不過只需要修改部分的程式, Andes Core 也可以執行 QT. Page 2
2. 編譯前, 先在根目錄指定 Toolchains, 使用 Terminal 輸入 source bashrc.nds32le-linux- V0, 指定編譯路徑. 3. 使用 Terminal 輸入 tar zxvf qteverywhere-opensource-src-4.6.0.tar.gz 解壓縮. Page 3
4. 輸入 cd qt-everywhere-opensource-src- 4.6.0 進入 qt-everywhere-opensource-src-4.6.0 目錄. Page 4
5. 至 /mkspecs/qws/linux-genericg++/qmake.conf 檔案內修改程式, 並存檔.(-lts 參數是 lib touch screen) 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 -lts QMAKE_CXX = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data -lts QMAKE_LINK = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data -lts QMAKE_LINK_SHLIB = nds32le-linux-g++ -EL -G0 -Wa,-mno-small-data -lts # modifications to linux.conf QMAKE_AR = nds32le-linux-ar cqs QMAKE_OBJCOPY = nds32le-linux-objcopy QMAKE_STRIP = nds32le-linux-strip load(qt_config) Page 5
Page 6
6. 先前說過 Qt for Embedded Linux 目前並沒有將 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 # define NR_inotify_init1 332 Page 7
8. 使用 Terminal 至 qt-everywhere-opensource-src-4.6.0 目錄下輸入下列指令, 這裡先選擇支援觸控面板 : 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-phononbackend -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-phononbackend -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 Page 8
注意 : a. 選擇支援觸控面板必須加入 tslib 路徑, 記得路徑使用者名稱需修改. b. 如要增加 configure 參數可以輸入./configure - help 查看有哪些參數可以輸入. Page 9
9. 輸入 o. Page 10
10. 輸入 yes, 編譯 configure 需等待一段時間 Page 11
11. 使用 Terminal 輸入 make, 等待一段時間, 可以去喝個下午茶再回來. Page 12
12. 輸入 sudo make install, 再輸入 password, 執行完畢後 Qt for Embedded Linux building 程式結束, 之後要將 building 程式複製至實驗板上執行. Page 13
13. 先在 SD 卡新增 usr/local/ Trolltech/ 檔案目錄. Page 14
14. 使用 Terminal 輸入 cd / 至根目錄. Page 15
15. 輸入 cd /usr/local/trolltech/ 至編譯好的 QtEmbedded-4.6.0- generic 檔案夾內. Page 16
16. 輸入 cp -a * /media/disk/usr/local/trolltech/ 將 QtEmbedded- 4.6.0- generic 複製到 SD 卡上. Page 17
17. 還有將 ANDSE toolchain 目錄下檔案 /home/acer/andestech/andesight133/toolchain s/nds32le-linux-glibc-v0/nds32le-linux/libc/lib 目錄下的 libgcc_s.so.1 複製到 SD 卡 /usr/local/trolltech/qtembedded-4.6.0- generic/lib 檔案夾下. Page 18
18. 執行 Embedded Linux: a. 注意 : 一般 SD 卡格式都為 FAT32, 在 Linux 下無法顯示長檔名, 如要支援長檔名請將 SD 卡 format 成 EXT2 或是 EXT3 格式. b. 開發板上所使用的 OS 與程式要使用同一個 Toolchains building 才不會造成錯誤. Page 19
19. 使用 GtkTerm 輸入 mount -o mand /dev/cf /tmp 掛載 SD 卡. Page 20
20. 輸入 export 參數 : export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6.0-generic export QWS_KEYBOARD=None export QWS_MOUSE_PROTO=tslib export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 注意 : 如重 loading Embedded Linux 也需輸入 tslib export 參數. Page 21
21. 輸入 cd usr. 22. 新增檔案夾輸入 mkdir local, 再輸入 cd local. 23. 新增檔案夾輸入 mkdir Trolltech. Page 22
24. 連結 Qt 檔案輸入 ln -s /tmp/usr/local/trolltech/qtembedded-4.6.0- generic /usr/local/trolltech/. 25. 連結 tslib 檔案輸入 ln -s /tmp/etc/pointercal /etc/pointercal. Page 23
26. 測試執行 QT 範例輸入 cd /tmp/usr/local/trolltech/qtembedded-4.6.0- generic/examples/layouts/borderlayout Page 24
27. 執行./borderlayout -qws, 顯示結果如下所示. 注意 : 實驗板 Embedded Linux 進入休眠狀態時, 輸入 printf \033[9;0] > /dev/tty0, 開啟. 注意 : 中斷測試程式按 Ctrl+C. Page 25
28. 程式執行完畢後要卸載 SD 需再根目錄輸入 umount /tmp. Page 26
Thank You!!! Architecture for Next-generation Digital Engines for SoC