移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
生活随笔
收集整理的這篇文章主要介紹了
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
移植基于linux-2.6.26.5內(nèi)核s3c2410觸摸屏驅(qū)動移植的過程記錄下來: (1)首先打一個補丁:s3c2410_touchscreen.patch, 在內(nèi)核解壓的根目錄下 patch -Np1 -i? (接補丁的路徑); 然后修改arch/arm/mach-s3c2410/mach-smdk2410.c添加如下代碼:添加頭文件:#include <asm/arch/ts.h> 添加結(jié)構(gòu)體:static struct s3c2410_ts_mach_info smdk2410_ts_cfg __initdata = {
??????? .delay = 20000,
??????? .presc = 49,
??????? .oversampling_shift = 2,
};
并添加支持觸摸屏平臺代碼的信息,這個找到一個名為*smdk2410_devices[]的結(jié)構(gòu)體指針數(shù)組里添加:&s3c_device_ts,然后在smdk2410_map_io函數(shù)里添加:set_s3c2410ts_info(&smdk2410_ts_cfg);? 修改driver/input/touchscreen/Makefile,添加如下內(nèi)容:
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
然后將驅(qū)動s3c2410_ts.c放置在driver/input/touchscreen/下面,接下來就是配置內(nèi)核支持觸摸屏驅(qū)動make menuconfig 配置支持觸摸平驅(qū)動
? Device Drivers? ---> Input device support? --->???? [*]?? Touchscreens? --->?
??????????????????????????????????????????????????????? <*>?? Samsung S3C2410 touchscreen input driver??????????????????
???????????????????????????????????????????????????????? [*]???? Samsung S3C2410 touchscreen debug messages????? Device Drivers? ---> Input device support? --->???? [*]?? Event interface Device Drivers? ---> Input device support? --->???? [*]???touchscreem interface 320 h...... 240 v......
然后make zImage。當然首先我們要支持framebuffer。
系統(tǒng)啟動以后會在dev目錄下產(chǎn)生event0 和 mouse0兩個設備節(jié)點,它們就是觸摸屏的設備節(jié)點。
關(guān)于s3c2410_touchscreen.patch和s3c2410_ts.c這個兩個補丁請到這個地址去下載,如果不行,請聯(lián)系我,我在發(fā)給你。 我的郵箱是:linweig@126.com http://www.51CTO提醒您,請勿濫發(fā)廣告!/files/09d713cc-dd96-11dd-9f5d-0014221b798a/
下載tslib-1.4.tar.gz,有些網(wǎng)上download下來的源碼包有些不對,一定要找好的源碼包,你可以到csdn網(wǎng)站下下載;
是在不行的話,我也可以發(fā)給你;我的郵箱是:linweig@126.com
第一步:解壓tslib-1.4.tar.gz
?
??????? tar -zxvf tslib-1.4.tar.gz 第二步:進入解壓過的目錄
???
??????? cd tslib-1.4 第三步:執(zhí)行tslib-1.4目錄下的autogen.sh ./autogen.sh 第四步:執(zhí)行autogen.sh腳本所生成的Makefile文件 在執(zhí)行make時,出現(xiàn)下列錯誤:
? ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc'
? 在當前目錄查找了rpl_malloc,發(fā)現(xiàn)configure里有#define malloc rpl_malloc一行。分析configure 腳本相關(guān)的代碼,原來是????????? ac_cv_func_malloc_0_nonnull引起的,OK我們不讓它檢查了,產(chǎn)生一個cache文件arm-linux.cache,欺騙configure:
?
?請打入以下命令: echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
? ./configure --host=arm-softfloat-linux-gnu? --prefix=/home/noah/mytslib --cache-file=$ARCH-linux.cache
??
? --host是指你的交叉編譯器的前最;例如:你的交叉編譯器是arm-linux-gcc,則--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc
? 則--host=arm-softfloat-linux-gnu --prefix 是你執(zhí)行make install 的時候編譯后生成的可執(zhí)行文件和庫文件以及配置文所安裝的目錄;
? configure文件下還有好多選項;你可以執(zhí)行./configure -help 來進行選擇其他項,不過在這里這些選項就夠了。 第五步:執(zhí)行make 第六步:執(zhí)行make install 第七步:把指定安裝目錄下的mytslib的文件都copy到你所掛載的根文件下 sudo cp -rf /home/noah/mytslib/*??? /rootfs/mytslib 第八步:修改/rootfs/mytslib下的etc目錄中ts.cong文件 vi ts.conf? 將第二行的#module_raw input修改成module_raw input 注意一定要頂格寫否則程序執(zhí)行時會發(fā)生讀取ts.conf錯誤 第九步:啟動你的開發(fā)板 在終端上設置一下環(huán)境變量: export TSLIB_ROOT=/mytslib
??????? export TSLIB_TSDEVICE=/dev/event0
??????? export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH
??????? export QWS_SIZE=320x240
??????? export TSLIB_FBDEVICE=/dev/fb0
??????? export TSLIB_PLUGINDIR=/mytslib/lib/ts
??????? export TSLIB_CONSOLEDEVICE=none
??????? export TSLIB_CONFFILE=/mytslib/etc/ts.conf
??????? export POINTERCAL_FILE=/etc/pointercal
??????? export QWS_MOUSE_PROTO=Tslib:/dev/event0
??????? export TSLIB_CALIBFILE=/etc/pointercal
??????? export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
??????? export TSLIB_TSEVENTTYYPE=H3600 為了實現(xiàn)Tslib的正確運行,需要對如下的Tslib的環(huán)境變量進行配置: TSLIB_TSDEVICE? //觸摸屏設備文件名。 TSLIB_CALIBFILE? //校準的數(shù)據(jù)文件,由ts_calibrate校準程序生成。 SLIB_CONFFILE? //配置文件名。 TSLIB_PLUGINDIR //插件目錄 TSLIB_CONSOLEDEVICE //控制臺設備文件名 TSLIB_FBDEVICE? //設備名 QWS_DISPLAY 經(jīng)過合理設置的QWS_DIS PLAY環(huán)境變量可以使QPE桌面環(huán)境在不同大小開發(fā)板上的顯示更適合閱讀。Sitsang開發(fā)板有一個320×240的QVGA液晶顯示屏,因此設置環(huán)境變量:
QWS_DISPLAY=Transformed:Rot90: mmWidth70:mmHeight85:0 參數(shù)Transformed指定QPE顯示采用qt-gfx-transformed協(xié)議,Rot90指定畫面旋轉(zhuǎn)90度,mmWidth70指定顯示屏幕物理寬度70mm,mmHeight85指定顯示屏幕物理長度85mm。
? 以上環(huán)境變量在實際開發(fā)中的實際配置可以根據(jù)實際情況決定。而這些指定的設備節(jié)點一定要和你的開發(fā)板上
?????? 的/dev目錄下的設備節(jié)點相對應。 第十步:就可以運行/rootfs/mytslib/bin下的測試文件了 ./ts_test
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/linweig/archive/2009/04/16/4075857.aspx
??????? .delay = 20000,
??????? .presc = 49,
??????? .oversampling_shift = 2,
};
并添加支持觸摸屏平臺代碼的信息,這個找到一個名為*smdk2410_devices[]的結(jié)構(gòu)體指針數(shù)組里添加:&s3c_device_ts,然后在smdk2410_map_io函數(shù)里添加:set_s3c2410ts_info(&smdk2410_ts_cfg);? 修改driver/input/touchscreen/Makefile,添加如下內(nèi)容:
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
然后將驅(qū)動s3c2410_ts.c放置在driver/input/touchscreen/下面,接下來就是配置內(nèi)核支持觸摸屏驅(qū)動make menuconfig 配置支持觸摸平驅(qū)動
? Device Drivers? ---> Input device support? --->???? [*]?? Touchscreens? --->?
??????????????????????????????????????????????????????? <*>?? Samsung S3C2410 touchscreen input driver??????????????????
???????????????????????????????????????????????????????? [*]???? Samsung S3C2410 touchscreen debug messages????? Device Drivers? ---> Input device support? --->???? [*]?? Event interface Device Drivers? ---> Input device support? --->???? [*]???touchscreem interface 320 h...... 240 v......
然后make zImage。當然首先我們要支持framebuffer。
系統(tǒng)啟動以后會在dev目錄下產(chǎn)生event0 和 mouse0兩個設備節(jié)點,它們就是觸摸屏的設備節(jié)點。
關(guān)于s3c2410_touchscreen.patch和s3c2410_ts.c這個兩個補丁請到這個地址去下載,如果不行,請聯(lián)系我,我在發(fā)給你。 我的郵箱是:linweig@126.com http://www.51CTO提醒您,請勿濫發(fā)廣告!/files/09d713cc-dd96-11dd-9f5d-0014221b798a/
下載tslib-1.4.tar.gz,有些網(wǎng)上download下來的源碼包有些不對,一定要找好的源碼包,你可以到csdn網(wǎng)站下下載;
是在不行的話,我也可以發(fā)給你;我的郵箱是:linweig@126.com
第一步:解壓tslib-1.4.tar.gz
?
??????? tar -zxvf tslib-1.4.tar.gz 第二步:進入解壓過的目錄
???
??????? cd tslib-1.4 第三步:執(zhí)行tslib-1.4目錄下的autogen.sh ./autogen.sh 第四步:執(zhí)行autogen.sh腳本所生成的Makefile文件 在執(zhí)行make時,出現(xiàn)下列錯誤:
? ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc'
? 在當前目錄查找了rpl_malloc,發(fā)現(xiàn)configure里有#define malloc rpl_malloc一行。分析configure 腳本相關(guān)的代碼,原來是????????? ac_cv_func_malloc_0_nonnull引起的,OK我們不讓它檢查了,產(chǎn)生一個cache文件arm-linux.cache,欺騙configure:
?
?請打入以下命令: echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
? ./configure --host=arm-softfloat-linux-gnu? --prefix=/home/noah/mytslib --cache-file=$ARCH-linux.cache
??
? --host是指你的交叉編譯器的前最;例如:你的交叉編譯器是arm-linux-gcc,則--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc
? 則--host=arm-softfloat-linux-gnu --prefix 是你執(zhí)行make install 的時候編譯后生成的可執(zhí)行文件和庫文件以及配置文所安裝的目錄;
? configure文件下還有好多選項;你可以執(zhí)行./configure -help 來進行選擇其他項,不過在這里這些選項就夠了。 第五步:執(zhí)行make 第六步:執(zhí)行make install 第七步:把指定安裝目錄下的mytslib的文件都copy到你所掛載的根文件下 sudo cp -rf /home/noah/mytslib/*??? /rootfs/mytslib 第八步:修改/rootfs/mytslib下的etc目錄中ts.cong文件 vi ts.conf? 將第二行的#module_raw input修改成module_raw input 注意一定要頂格寫否則程序執(zhí)行時會發(fā)生讀取ts.conf錯誤 第九步:啟動你的開發(fā)板 在終端上設置一下環(huán)境變量: export TSLIB_ROOT=/mytslib
??????? export TSLIB_TSDEVICE=/dev/event0
??????? export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH
??????? export QWS_SIZE=320x240
??????? export TSLIB_FBDEVICE=/dev/fb0
??????? export TSLIB_PLUGINDIR=/mytslib/lib/ts
??????? export TSLIB_CONSOLEDEVICE=none
??????? export TSLIB_CONFFILE=/mytslib/etc/ts.conf
??????? export POINTERCAL_FILE=/etc/pointercal
??????? export QWS_MOUSE_PROTO=Tslib:/dev/event0
??????? export TSLIB_CALIBFILE=/etc/pointercal
??????? export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
??????? export TSLIB_TSEVENTTYYPE=H3600 為了實現(xiàn)Tslib的正確運行,需要對如下的Tslib的環(huán)境變量進行配置: TSLIB_TSDEVICE? //觸摸屏設備文件名。 TSLIB_CALIBFILE? //校準的數(shù)據(jù)文件,由ts_calibrate校準程序生成。 SLIB_CONFFILE? //配置文件名。 TSLIB_PLUGINDIR //插件目錄 TSLIB_CONSOLEDEVICE //控制臺設備文件名 TSLIB_FBDEVICE? //設備名 QWS_DISPLAY 經(jīng)過合理設置的QWS_DIS PLAY環(huán)境變量可以使QPE桌面環(huán)境在不同大小開發(fā)板上的顯示更適合閱讀。Sitsang開發(fā)板有一個320×240的QVGA液晶顯示屏,因此設置環(huán)境變量:
QWS_DISPLAY=Transformed:Rot90: mmWidth70:mmHeight85:0 參數(shù)Transformed指定QPE顯示采用qt-gfx-transformed協(xié)議,Rot90指定畫面旋轉(zhuǎn)90度,mmWidth70指定顯示屏幕物理寬度70mm,mmHeight85指定顯示屏幕物理長度85mm。
? 以上環(huán)境變量在實際開發(fā)中的實際配置可以根據(jù)實際情況決定。而這些指定的設備節(jié)點一定要和你的開發(fā)板上
?????? 的/dev目錄下的設備節(jié)點相對應。 第十步:就可以運行/rootfs/mytslib/bin下的測試文件了 ./ts_test
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/linweig/archive/2009/04/16/4075857.aspx
轉(zhuǎn)載于:https://blog.51cto.com/19831028/283916
總結(jié)
以上是生活随笔為你收集整理的移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: squid代理服务器详解
- 下一篇: Linux系统/网络管理