移植tslib和Qt5.6到三星s5pv210開發板
tslib1.4移植
下載tslib1.4後
1.cp tslib-1.4.tar.bz2 /home/gec
2.tar jxvf tslib-1.4.tar.bz2
3.sudo -s
4.cd tslib-1.4/
5../configure --host=arm-linux --prefix=/usr/local/arm ac_cv_func_malloc_0_nonnull=yes
6.make
7.make install
修改tslib安裝目錄下的/etc/ts.conf檔案去掉# module_raw input註釋。
安裝後把整個資料夾下載到開發板 在開發板/etc/profile 裡配置環境變數,我的如下,要按你放的位置配置
export TSLIB_TSDEVICE=/dev/event0
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$LD_LIBRARY
source /etc/profile 使配置生效或重啟開發板
進入/usr/local/tslib/bin 目錄執行ts_calibrate校準程式,進行5點觸控校準 生成的校準檔名為pointercal,位於/etc目錄下。
這些網址都是介紹tslib的移植,可以參考下。
http://blog.sina.com.cn/s/blog_406127500101dsmy.html
http://blog.chinaunix.net/uid-12461657-id-2975918.htmlhttp://www.ttfanwen.com/info_12/fw_2537170.html
http://www.embeddedlinux.org.cn/emb-linux/system-development/201603/28-5238.html
http://mojijs.com/2016/07/217478/index.html
可能用到的資料
Linux系統如何檢視版本資訊輸入"uname -a ",可顯示電腦以及作業系統的相關資訊。
輸入"cat /proc/version",說明正在執行的核心版本。
輸入"cat /etc/issue", 顯示的是發行版本資訊。
lsb_release -a (適用於所有的linux,包括Redhat、SuSE、Debian等發行版,但是在debian下要安裝lsb)
虛擬機器當前核心版本安裝位置
/lib/modules/`uname -r`/kernel
移植出現的錯誤
錯誤1:< selected device is not a touchscreen I understand >
檢視tslib原始碼可知編譯器的EV_VERSION要與核心的EV_VERSION一致。
修改核心include/linux/input.h的EV_VERSION使之與編譯器的一致
移植經驗表明修改核心的EV_VERSION較好
<1.從工程角度來看,一個專案中為了相容不同編譯特性,可能經常換編譯器,而核心卻很少重新解壓編譯
更換編譯器以後,很容易忘記掉修改input.h檔案
2.從版本相容的角度看,0x01001修改為0x01000是可以的,但是從0x01000修改為0x01001不合理
3.從跨平臺角度,一個編譯器可能有Linux版本和Windows版本,為了做到相容或者跨平臺編譯,也不應修改編譯器(出自網路某大神)>
tslib的EV_VERSION在linux/input.h裡
其中有
值 | 核心 | 編譯器 | 結果 |
EV_VERSION | 0x010001 | 0x010000 | ok |
EV_VERSION | 0x010000 | 0x010000 | ok |
EV_VERSION | 0x010001 | 0x010001 | no |
EV_VERSION | 0x010000 | 0x010001 | no |
不信的話可以自己試試。
參考下這個
http://www.cnblogs.com/lcw/p/3802624.html錯誤2:< 出現介面,點十字架沒反應 > < selected device is not a touchscreen I understand >觸控式螢幕能顯示,但對其操作無反應。
原因1:網路上一參考博文的環境配置,其中沒有export QWS_MOUSE_PROTO=tslib:/dev/input/event1解決:環境變數加上export QWS_MOUSE_PROTO=tslib:/dev/input/event1 ,重啟板子即可。
QWS_MOUSE_PROTO該如何寫
http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html
原因2:核心裁剪時沒加上觸控裝置(更可能的原因)
檢視觸控式螢幕的裝置檔案
hexdump /dev/event0
點觸控式螢幕,有輸出則證明event0是觸控裝置
這是我的核心觸控驅動配置
Device Drivers --->
Input device support --->
[*] Touchscreens --->
< > S3C touchscreen driver //去除S3C 觸控式螢幕驅動支援
<*> TSC2007 based touchscreens //新增TSC2007 驅動
具體驅動按自己的開發板lcd型號配置
其他原因參考
http://www.it165.net/embed/html/201409/2656.html
http://blog.chinaunix.net/uid-14782631-id-111870.html
tslib原始碼分析http://blog.csdn.net/subfate/article/details/6361062
http://blog.csdn.net/hejinjing_tom_com/article/details/49252333
http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html
http://www.ttfanwen.com/info_12/fw_2537170.html
Qt5.6移植
下載Qt5.6原始碼:https://download.qt.io/archive/qt/5.6/5.6.0/single/ 下載qt-everywhere-opensource-src-5.6.0.tar.gz1.tar zxvf qt-everywhere-opensource-src-5.6.0.tar.gz 2.cd qt-everywhere-opensource-src-5.6.0 3.指定開發板架構和交叉編譯器
vi
qtbase/
mkspecs
/
linux
-
arm
-
gnueabi
-
g
+
+
/
qmake.conf
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM =linuxfb #指定Qt執行平臺 EGLFS, LinuxFB, KMS, DirectFB, Wayland
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a #O2為優化選項,march只處理器架構,s5pv210的架構是armv7
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_INCDIR +=/usr/local/tslib/include #連線的tslib庫位置
QMAKE_LIBDIR +=/usr/local/tslib/lib
# modifications to g++.conf
QMAKE_CC = arm-si-linux-gnueabi-gcc #交叉編譯器的名稱(以下部分全換成自己的交叉編譯器)
QMAKE_CXX = arm-si-linux-gnueabi-g++
QMAKE_LINK = arm-si-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-si-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-si-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-si-linux-gnueabi-objcopy
QMAKE_NM = arm-si-linux-gnueabi-nm -P
QMAKE_STRIP = arm-si-linux-gnueabi-strip
load(qt_config)
4.根據需求配置Qt
./mkqt.sh
這是我的配置指令碼
- #!/bin/sh
- ./configure \
- -prefix /usr/local/Qt5.6 \
- -opensource \
- -release \
- -confirm-license \
- -xplatform linux-arm-gnueabi-g++ \
- -shared \
- -qt-zlib \
- -qt-libjpeg \
- -no-nis \
- -no-opengl \
- -no-cups \
- -no-glib \
- -no-dbus \
- -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
- -no-avx \
- -no-openssl \
- -nomake tools \
- -qt-libpng \
- -qt-sql-sqlite \
- -tslib \
- -I /usr/local/tslib/include \
- -L /usr/local/tslib/lib
Qt配置選項解釋 Qt4(解釋更詳細) http://www.360doc.com/content/10/0225/22/79031_16834764.shtml# Qt5(與以上網址對比看) http://www.cnblogs.com/chenfulin5/p/5798764.html 5.make -j4 (4執行緒編譯,長時間等待囧) 6.make install 錯誤分析: 配置時遇到的錯誤 錯誤1:
Running
configuration
tests...
Warning
:
Disabling
pkg
-
config
since
PKG_CONFIG_LIBDIR
is
not
set
.
Warning
:
Disabling
pkg
-
config
since
PKG_CONFIG_SYSROOT_DIR
is
not
set
.
Could
not
determine
the
target
architecture!
Turn
on
verbose
messaging
(
-
v
)
to
see
the
final
report.
The
tslib functionality test failed!
原因:沒有指定自己交叉編譯器
輸入:arm-linux-gcc -v檢視自己的交叉編譯器名稱
vi
qtbase/
mkspecs
/
linux
-
arm
-
gnueabi
-
g
+
+
/
qmake.conf
修改#
modifications to g++.conf內容以下交叉編譯器
錯誤2: Project ERROR: Unknown module(s) in QT: quick (quick說明已跳過該步驟,影響不大嘛)
make[4]: *** [sub-textureandlight-make_first] 錯誤 3
make[4]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d/canvas3d'
make[3]: *** [sub-canvas3d-make_first] 錯誤 2
make[3]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d'
make[2]: *** [sub-canvas3d-make_first] 錯誤 2
make[2]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples'
make[1]: *** [sub-examples-make_first] 錯誤 2
make[1]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d'
make: *** [module-qtcanvas3d-make_first] 錯誤 2
make: *** 正在等待未完成的任務.... 原因:由於配置時加了-no-opengl影響了該例子的生成,對編譯Qt影響不大不用管 解決:找出s5pv210提供的opengl庫和標頭檔案,配置時加上-opengl並設定相應路徑後編譯通過 安裝時遇到的錯誤 Project ERROR: Unknown module(s) in QT: quick (已跳過該步)
make[4]: *** [sub-textureandlight-install_subtargets] 錯誤 3
make[4]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d/canvas3d'
make[3]: *** [sub-canvas3d-install_subtargets] 錯誤 2
make[3]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d'
make[2]: *** [sub-canvas3d-install_subtargets] 錯誤 2
make[2]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples'
make[1]: *** [sub-examples-install_subtargets] 錯誤 2
make[1]:正在離開目錄 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d'
make: *** [module-qtcanvas3d-install_subtargets] 錯誤 2 原因:與上面對應,編譯不通過,安裝時也出錯,不過影響不大,只是不嫩生成該例子而已
7.安裝完後把Qt所在資料夾下的lib、plugins資料夾打包下載到開發板,配置環境變數
vi /etc/profile 新增 (!具體配置要按你所放的目錄位置) 我的配置如下export QTEDIR=/usr/local/Qt5.6 export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0 export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$QTDIR/lib:$QTEDIR/lib:$LD_LIBRAR export LD_PRELOAD=/lib/preloadable_libiconv.so source /etc/profile 使配置生效
8.執行example裡的程式測試Qt是否移植成功
出錯 QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed This application failed to start because it could not find or load the Qt platform plugin "linuxfb". Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb. 解析:這裡包含2個錯誤 錯誤1: QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed 原因:配置時沒有設定-no-iconv或-iconv。iconv是一個計算機程式以及一套應用程式程式設計介面的名稱。它的作用是在多種國際編碼格式之間進 行文字內碼的轉換。這對跨語言 Qt開發人員來說是很有用的 解決辦法:網上下載libiconv,交叉編譯 ,編譯好後將 ./preload/preloadable_libiconv.so 拷貝到板子的 /lib 下面,設定環境變 量 export LD_PRELOAD=/lib/preloadable_libiconv.so 錯誤2: This application failed to start because it could not find or load the Qt platform plugin "linuxfb". Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb. 原因1:qmake.conf中QT_QPA_DEFAULT_PLATFORM =linuxfb沒有設定為linuxfb。 解決:設定為linuxfb後重新編譯 原因2: 環境變數重疊 LD_LIBRARY_PATH寫了2個 解決:把LD_LIBRARY_PATH合成一個,既包括tslib也包括Qt export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$QTDIR/lib:$QTEDIR/lib:$LD_LIBRAR 再次執行example裡的程式,成功! example裡的fluidlauncher程式,點選圖片還能開啟新執行緒進入到另一個程式介面。 至此移植完成 轉發請註明處處相關推薦
移植tslib和Qt5.6到三星s5pv210開發板
tslib1.4移植 下載tslib1.4後1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.c
移植QT5.6到嵌入式開發板(史上最詳細的QT移植教程)
文件傳輸 嵌入式環境 ubun 導致 字庫 etc -a led fill 目前網上的大多數 QT 移植教程還都停留在 qt4.8 版本,或者還有更老的 Qtopia ,但是目前 Qt 已經發展到最新的 5.7 版本了,我個人也已經使用了很長一段時間的 qt5.6 for
移植Qt5.7到4412開發板上(開發環境搭建)
轉自:https://www.cnblogs.com/t1029901995/p/6046600.html 一、環境: 系統:Ubuntu16.04 64位, 開發板:訊為iTOP-4412精英版(4.7寸屏
三星S5PV210開發之ARM彙編偽指令
偽指令的意義:偽指令和機器指令的區別是偽指令經過編譯後不會生成機器碼偽指令的意義在於指導編譯過程偽指令和具體的編譯器相關,我們使用gnu工具鏈,因此學習gnu環境的彙編偽指令@符號是彙編裡面的註釋:以冒號結尾的符號為標號,用來標識該指令的地址. 點號代表當前指令的地址 b .
移植新核心4.15.6到JZ2440開發板
近來無事就想著動手移植新的核心在JZ2440開發板上跑起來,https://www.kernel.org/ 下載kernel linux-4.15.6.tar.xd,執行xz -d linux-4.15.6.tar.xz tar -xvf linux-4.15.6.tar進行
怎樣從網路上核心和根檔案系統啟動開發板
首先在ubuntu虛擬機器上要有nfs伺服器 1.啟動開發板uboot,輸入 下面的命令 set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini
移植linux3.7.4系統到itop4412開發板記錄
最近要移植linux3.7.4系統到itop4412開發板,好長時間沒有移植系統了,今天弄了一下,都感覺手生了。 首先先編譯一下核心試下,然後再慢慢移植各驅動 1.下載linux核心原始碼 2.進入核心原始碼目錄,修改makefile中的arch =arm 交叉編譯器為我們
mt7601的ap驅動在s5pv210開發板上的編譯,裝載及配置使用
mt7601的驅動和其他的無線網絡卡有點區別。mt7601作為station使用還是作為AP使用分別有兩套不同的原始碼包。這裡介紹mt7601作為ap的驅動。下載地址:http://download.csdn.net/download/diandianyangyi/7894
s5pv210開發板 led驅動學習筆記
相應驅動程式如下:#include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/types.h> #include <linu
第三期 Android Kernel 下載和編譯 《手機就是開發板》
https://blog.csdn.net/aggresss/article/details/53461464 Android原始碼預設不包含他所使用的Linux核心原始碼,所以需要另外下載和編譯。在
第二期 AOSP 環境搭建、下載和編譯 《手機就是開發板》
https://blog.csdn.net/aggresss/article/details/53393511 Android最初是由Andy Rubin基於linux核心開發出來用於數碼相機的作業系統,Android名字的原型是Andy Rubin小時候最喜歡的一個遊戲
LINUX 工具移植:scp 快速拷貝檔案到開發板
工作中會遇到有時候開發板不支援 類似adb 之類的快速傳檔案的協議,這時候是要移植一個簡單的工具到開發板了。 1.下載原始碼包,地址如下: 2.交叉編譯 建立工作目錄: 在/work目下面建立ssh目錄 mkdir ssh cd ssh mdkir compress mkdir install 解
dnw和超級終端在嵌入式開發板燒程式的作用
今天總算是把超級終端搞定了,哈哈!現在就可以用自己的本本玩開發板了。 由於筆記本沒有串列埠、並口,可玩ARM開發板串列埠是必需的,我買了根USB轉串列埠線,本想應該沒什麼問題,可之前我裝了轉換線那邊配來的驅動,是已經連上了,連線應該是正常的。可我把線連到開發板上,上電後,在超級終端上並沒
Tslib和Qt 4.8.4與在開發板上的移植
Linux:Ubuntu 12.04 X86 QT:4.8.4 交叉編譯工具鏈:gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) 安裝如下的軟體 sudo apt-get install automake sudo a
OpenSceneGraph3.4.0+Qt5.6.1MinGW開發環境部署
borde lighting GC AD nor 內容修改 translate ali 提示
C++的可移植性和跨平臺開發
file volatil rec 遍歷 程序包 arc scu 千萬 之前 概述 今天聊聊C++的可移植性問題。如果你平時使用C++進行開發,並且你對C++的可移植性問題不是非常清楚,那麽我建議你看看這個系列。即使你目前沒有跨平臺開發的需要,了解可移植性方面的知識對你還
jz2440移植QT5.6【學習筆記】【原創】
平臺:jz2440 作者:莊澤彬(歡迎轉載,請註明作者) 交叉編譯工具:arm-linux-gcc (GCC)4.4.3 linux:linu3.4.2 PC環境:ubuntu18.04 一、修改/opt/FriendlyARM/toolschain/4.4.3arm-none-linux-gnue
imx6的qt5.6.2的移植
一 準備工作: 1.主機環境:ubuntu14.04 2.交叉編譯器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 (www.veryarm.com/arm-none-linux-gnueabi-gcc) 3.
linux-2.6.32移植到qq2440開發板手冊
虛 擬 機: RedHat 9.0交叉編譯器: arm-linux-gcc-4.3.2開 發 板: QQ2440V3本次移植用到的核心原始碼包為: linux-2.6.32.2-mini2440-20110413.tar.gz。1.修改頂層的 Makefile:ARCH ?= armCROS
20181206 IMX6Q開發板移植螢幕小小心得和參考文件
作為一個嵌入式開發的初學者,花了倆星期時間,終於讓跑Linux系統的IMX6開發板換上了新的螢幕。 這裡,移植螢幕的主要思路就是: 確保連線正確; 學習LCD液晶屏的時序(在修改引數時需要); 看懂螢幕的資料手冊(各種資料手冊對同一個現象的寫法不一樣); 修改uboot和(核心驅動部分的