移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
生活随笔
收集整理的這篇文章主要介紹了
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
移植基于linux-2.6.26.5內核s3c2410觸摸屏驅動移植的過程記錄下來: (1)首先打一個補丁:s3c2410_touchscreen.patch, 在內核解壓的根目錄下 patch -Np1 -i? (接補丁的路徑); 然后修改arch/arm/mach-s3c2410/mach-smdk2410.c添加如下代碼:添加頭文件:#include <asm/arch/ts.h> 添加結構體:static struct s3c2410_ts_mach_info smdk2410_ts_cfg __initdata = {
??????? .delay = 20000,
??????? .presc = 49,
??????? .oversampling_shift = 2,
};
并添加支持觸摸屏平臺代碼的信息,這個找到一個名為*smdk2410_devices[]的結構體指針數組里添加:&s3c_device_ts,然后在smdk2410_map_io函數里添加:set_s3c2410ts_info(&smdk2410_ts_cfg);? 修改driver/input/touchscreen/Makefile,添加如下內容:
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
然后將驅動s3c2410_ts.c放置在driver/input/touchscreen/下面,接下來就是配置內核支持觸摸屏驅動make menuconfig 配置支持觸摸平驅動
? 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。
系統啟動以后會在dev目錄下產生event0 和 mouse0兩個設備節點,它們就是觸摸屏的設備節點。
關于s3c2410_touchscreen.patch和s3c2410_ts.c這個兩個補丁請到這個地址去下載,如果不行,請聯系我,我在發給你。 我的郵箱是:linweig@126.com http://www.51CTO提醒您,請勿濫發廣告!/files/09d713cc-dd96-11dd-9f5d-0014221b798a/
下載tslib-1.4.tar.gz,有些網上download下來的源碼包有些不對,一定要找好的源碼包,你可以到csdn網站下下載;
是在不行的話,我也可以發給你;我的郵箱是:linweig@126.com
第一步:解壓tslib-1.4.tar.gz
?
??????? tar -zxvf tslib-1.4.tar.gz 第二步:進入解壓過的目錄
???
??????? cd tslib-1.4 第三步:執行tslib-1.4目錄下的autogen.sh ./autogen.sh 第四步:執行autogen.sh腳本所生成的Makefile文件 在執行make時,出現下列錯誤:
? ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc'
? 在當前目錄查找了rpl_malloc,發現configure里有#define malloc rpl_malloc一行。分析configure 腳本相關的代碼,原來是????????? ac_cv_func_malloc_0_nonnull引起的,OK我們不讓它檢查了,產生一個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 是你執行make install 的時候編譯后生成的可執行文件和庫文件以及配置文所安裝的目錄;
? configure文件下還有好多選項;你可以執行./configure -help 來進行選擇其他項,不過在這里這些選項就夠了。 第五步:執行make 第六步:執行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 注意一定要頂格寫否則程序執行時會發生讀取ts.conf錯誤 第九步:啟動你的開發板 在終端上設置一下環境變量: 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 為了實現Tslib的正確運行,需要對如下的Tslib的環境變量進行配置: TSLIB_TSDEVICE? //觸摸屏設備文件名。 TSLIB_CALIBFILE? //校準的數據文件,由ts_calibrate校準程序生成。 SLIB_CONFFILE? //配置文件名。 TSLIB_PLUGINDIR //插件目錄 TSLIB_CONSOLEDEVICE //控制臺設備文件名 TSLIB_FBDEVICE? //設備名 QWS_DISPLAY 經過合理設置的QWS_DIS PLAY環境變量可以使QPE桌面環境在不同大小開發板上的顯示更適合閱讀。Sitsang開發板有一個320×240的QVGA液晶顯示屏,因此設置環境變量:
QWS_DISPLAY=Transformed:Rot90: mmWidth70:mmHeight85:0 參數Transformed指定QPE顯示采用qt-gfx-transformed協議,Rot90指定畫面旋轉90度,mmWidth70指定顯示屏幕物理寬度70mm,mmHeight85指定顯示屏幕物理長度85mm。
? 以上環境變量在實際開發中的實際配置可以根據實際情況決定。而這些指定的設備節點一定要和你的開發板上
?????? 的/dev目錄下的設備節點相對應。 第十步:就可以運行/rootfs/mytslib/bin下的測試文件了 ./ts_test
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/linweig/archive/2009/04/16/4075857.aspx
??????? .delay = 20000,
??????? .presc = 49,
??????? .oversampling_shift = 2,
};
并添加支持觸摸屏平臺代碼的信息,這個找到一個名為*smdk2410_devices[]的結構體指針數組里添加:&s3c_device_ts,然后在smdk2410_map_io函數里添加:set_s3c2410ts_info(&smdk2410_ts_cfg);? 修改driver/input/touchscreen/Makefile,添加如下內容:
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
然后將驅動s3c2410_ts.c放置在driver/input/touchscreen/下面,接下來就是配置內核支持觸摸屏驅動make menuconfig 配置支持觸摸平驅動
? 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。
系統啟動以后會在dev目錄下產生event0 和 mouse0兩個設備節點,它們就是觸摸屏的設備節點。
關于s3c2410_touchscreen.patch和s3c2410_ts.c這個兩個補丁請到這個地址去下載,如果不行,請聯系我,我在發給你。 我的郵箱是:linweig@126.com http://www.51CTO提醒您,請勿濫發廣告!/files/09d713cc-dd96-11dd-9f5d-0014221b798a/
下載tslib-1.4.tar.gz,有些網上download下來的源碼包有些不對,一定要找好的源碼包,你可以到csdn網站下下載;
是在不行的話,我也可以發給你;我的郵箱是:linweig@126.com
第一步:解壓tslib-1.4.tar.gz
?
??????? tar -zxvf tslib-1.4.tar.gz 第二步:進入解壓過的目錄
???
??????? cd tslib-1.4 第三步:執行tslib-1.4目錄下的autogen.sh ./autogen.sh 第四步:執行autogen.sh腳本所生成的Makefile文件 在執行make時,出現下列錯誤:
? ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc'
? 在當前目錄查找了rpl_malloc,發現configure里有#define malloc rpl_malloc一行。分析configure 腳本相關的代碼,原來是????????? ac_cv_func_malloc_0_nonnull引起的,OK我們不讓它檢查了,產生一個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 是你執行make install 的時候編譯后生成的可執行文件和庫文件以及配置文所安裝的目錄;
? configure文件下還有好多選項;你可以執行./configure -help 來進行選擇其他項,不過在這里這些選項就夠了。 第五步:執行make 第六步:執行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 注意一定要頂格寫否則程序執行時會發生讀取ts.conf錯誤 第九步:啟動你的開發板 在終端上設置一下環境變量: 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 為了實現Tslib的正確運行,需要對如下的Tslib的環境變量進行配置: TSLIB_TSDEVICE? //觸摸屏設備文件名。 TSLIB_CALIBFILE? //校準的數據文件,由ts_calibrate校準程序生成。 SLIB_CONFFILE? //配置文件名。 TSLIB_PLUGINDIR //插件目錄 TSLIB_CONSOLEDEVICE //控制臺設備文件名 TSLIB_FBDEVICE? //設備名 QWS_DISPLAY 經過合理設置的QWS_DIS PLAY環境變量可以使QPE桌面環境在不同大小開發板上的顯示更適合閱讀。Sitsang開發板有一個320×240的QVGA液晶顯示屏,因此設置環境變量:
QWS_DISPLAY=Transformed:Rot90: mmWidth70:mmHeight85:0 參數Transformed指定QPE顯示采用qt-gfx-transformed協議,Rot90指定畫面旋轉90度,mmWidth70指定顯示屏幕物理寬度70mm,mmHeight85指定顯示屏幕物理長度85mm。
? 以上環境變量在實際開發中的實際配置可以根據實際情況決定。而這些指定的設備節點一定要和你的開發板上
?????? 的/dev目錄下的設備節點相對應。 第十步:就可以運行/rootfs/mytslib/bin下的測試文件了 ./ts_test
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/linweig/archive/2009/04/16/4075857.aspx
轉載于:https://blog.51cto.com/19831028/283916
總結
以上是生活随笔為你收集整理的移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: squid代理服务器详解
- 下一篇: Struts标签和OGNL表达式