linux-2.6.26.5内核的 lcd驱动移植…
2013-12-19 20:44
585 查看
在使用tslib之前,你的内核必须有lcd的驱动,以及触摸屏的驱动,
这是lcd驱动的移植:
(1) 在arch/arm/mach-s3c2410/mach-smdk2410.c里添加头文件:
#include <asm/arch/fb.h>
(2) 在arch/arm/plat-s3c24xx/common-smdk.c文件中添加如下信息:
static struct s3c2410fb_display qt2410_lcd_cfg[] __initdata =
{
{
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVCLK|
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type
= S3C2410_LCDCON1_TFT,
.width
= 320,
.height
= 240,
.pixclock = 100000,
.xres
= 320,
.yres
= 240,
.bpp
= 16,
.left_margin
= 13,
.right_margin = 8,
.hsync_len = 4,
.upper_margin = 2,
.lower_margin = 7,
.vsync_len = 4,
}
};
static struct s3c2410fb_mach_info qt2410_fb_info __initdata =
{
.displays =
qt2410_lcd_cfg,
.num_displays =
ARRAY_SIZE(qt2410_lcd_cfg),
.default_display = 0,
.lpcsel
= ((0xCE6) & ~7) |
1<<4,
};
在smdk_machine_init函数里添加:
s3c24xx_fb_set_platdata(&qt2410_fb_info);
(3) 重新配置内核
root@farsight:/source/kernel/linux-2.6.26.5#
make menuconfig
Device Drivers
--->
Graphics support --->
<*>S3C2410 LCD framebuffer
support
[]S3C2410 lcd debug messages
<*> Virtual Frame Buffer support
(ONLY FOR
TESTING!)
Logo configuration
--->
[*]Bootup logo
[*]Standard black and white Linux logo
[*]Standard 16-colo rLinux logo
[*]Standard 224-color Linux
logo
(4) 重新编译内核
重起开发板
这个时候会有一个很可爱的小企鹅的logo。说明你的驱动移植成功。
基于linux-2.26.5内核的FS2410开发板触摸屏驱动移植
把移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来:
(1)首先打一个补丁:s3c2410_touchscreen.patch,然后修改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
然后make zImage。当然首先我们要支持framebuffer。
系统启动以后会在dev目录下产生event0 和 mouse0两个设备节点,它们就是触摸屏的设备节点。
关于s3c2410_touchscreen.patch和s3c2410_ts.c这个两个补丁请到这个地址去下载,如果不行,请联系我,我在发给你。
我的邮箱是:linweig@126.com
http://www.rayfile.com/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 //设备名
以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上
的/dev目录下的设备节点相对应。
第十步:就可以运行/rootfs/mytslib/bin下的测试文件了
./ts_test
这是lcd驱动的移植:
(1) 在arch/arm/mach-s3c2410/mach-smdk2410.c里添加头文件:
#include <asm/arch/fb.h>
(2) 在arch/arm/plat-s3c24xx/common-smdk.c文件中添加如下信息:
static struct s3c2410fb_display qt2410_lcd_cfg[] __initdata =
{
{
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVCLK|
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type
= S3C2410_LCDCON1_TFT,
.width
= 320,
.height
= 240,
.pixclock = 100000,
.xres
= 320,
.yres
= 240,
.bpp
= 16,
.left_margin
= 13,
.right_margin = 8,
.hsync_len = 4,
.upper_margin = 2,
.lower_margin = 7,
.vsync_len = 4,
}
};
static struct s3c2410fb_mach_info qt2410_fb_info __initdata =
{
.displays =
qt2410_lcd_cfg,
.num_displays =
ARRAY_SIZE(qt2410_lcd_cfg),
.default_display = 0,
.lpcsel
= ((0xCE6) & ~7) |
1<<4,
};
在smdk_machine_init函数里添加:
s3c24xx_fb_set_platdata(&qt2410_fb_info);
(3) 重新配置内核
root@farsight:/source/kernel/linux-2.6.26.5#
make menuconfig
Device Drivers
--->
Graphics support --->
<*>S3C2410 LCD framebuffer
support
[]S3C2410 lcd debug messages
<*> Virtual Frame Buffer support
(ONLY FOR
TESTING!)
Logo configuration
--->
[*]Bootup logo
[*]Standard black and white Linux logo
[*]Standard 16-colo rLinux logo
[*]Standard 224-color Linux
logo
(4) 重新编译内核
重起开发板
这个时候会有一个很可爱的小企鹅的logo。说明你的驱动移植成功。
基于linux-2.26.5内核的FS2410开发板触摸屏驱动移植
把移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来:
(1)首先打一个补丁:s3c2410_touchscreen.patch,然后修改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
然后make zImage。当然首先我们要支持framebuffer。
系统启动以后会在dev目录下产生event0 和 mouse0两个设备节点,它们就是触摸屏的设备节点。
关于s3c2410_touchscreen.patch和s3c2410_ts.c这个两个补丁请到这个地址去下载,如果不行,请联系我,我在发给你。
我的邮箱是:linweig@126.com
http://www.rayfile.com/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 //设备名
以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上
的/dev目录下的设备节点相对应。
第十步:就可以运行/rootfs/mytslib/bin下的测试文件了
./ts_test
相关文章推荐
- linux-2.6.26.5内核的&nbsp;lcd驱动移植…
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植 (转)
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植
- linux-2.6.35内核移植—LCD驱动的添加
- 成功移植linux2.6.38内核到TQ2440&nbsp;…
- linux-2.6.32内核LCD驱动移植
- Linux4.3.2内核自带LCD驱动移植
- 基于ARM9处理器的linux-2.6.32.2操作系统内核移植手记part5.2(LCD驱动源码分析及移植之platform driver)
- S3C2410 LCD驱动的移植(基于linux-2.6.15.4内核)
- linux-2.6.32内核LCD驱动移植-1
- Linux-2.6.32.2内核在mini2440上的移植----增加LCD背光驱动
- Linux芯片级移植与底层驱动(基于3.7.4内核)(GPIO&&pinctrl&&clk)
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
- PART1 linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植 (转)
- 基于linux-2.6.38.8内核的SDIO/wifi驱动分析&&android 平台USB wifi驱动移植及使用 SDIOwifi
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动
- 基于S3C2410平台移植Linux 2.6.14内核&驱动指南
- 移植Linux3.4.2版本内核到mini2440(二)--添加网卡、UVC摄像头、LCD驱动
- Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动