⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 触摸屏移植(成功)for2.6.rtf

📁 包含触摸屏驱动源码(for s3c2410)以及触摸屏驱动,USB键盘鼠标移植详细步骤,tslib触摸屏校准程序的移植使用,包括错误解决方法.
💻 RTF
📖 第 1 页 / 共 2 页
字号:
                 from include/linux/fs.h:12,                 from include/linux/mm.h:15,                 from include/linux/poll.h:11,                 from drivers/input/touchscreen/s3c2410_ts.c:85:include/linux/interrupt.h:33:1: warning: this is the location of the previous definitiondrivers/input/touchscreen/s3c2410_ts.c: In function `touch_timer_fire':drivers/input/touchscreen/s3c2410_ts.c:244: error: called object is not a functiondrivers/input/touchscreen/s3c2410_ts.c:275: error: called object is not a functiondrivers/input/touchscreen/s3c2410_ts.c:200: warning: unused variable `updown'drivers/input/touchscreen/s3c2410_ts.c:200: warning: unused variable `i'drivers/input/touchscreen/s3c2410_ts.c: In function `stylus_updown':drivers/input/touchscreen/s3c2410_ts.c:294: warning: unused variable `lcdstate'drivers/input/touchscreen/s3c2410_ts.c:294: warning: unused variable `lcdenble'drivers/input/touchscreen/s3c2410_ts.c: In function `stylus_action':drivers/input/touchscreen/s3c2410_ts.c:365: error: called object is not a functiondrivers/input/touchscreen/s3c2410_ts.c:376: error: called object is not a functiondrivers/input/touchscreen/s3c2410_ts.c: In function `s3c2410ts_probe':drivers/input/touchscreen/s3c2410_ts.c:430: warning: implicit declaration of function `clk_get'drivers/input/touchscreen/s3c2410_ts.c:430: warning: assignment makes pointer from integer without a castdrivers/input/touchscreen/s3c2410_ts.c:440: warning: implicit declaration of function `clk_use'drivers/input/touchscreen/s3c2410_ts.c:442: warning: implicit declaration of function `clk_enable'drivers/input/touchscreen/s3c2410_ts.c:486: error: called object is not a functiondrivers/input/touchscreen/s3c2410_ts.c:533: warning: passing arg 2 of `request_irq' from incompatible pointer typedrivers/input/touchscreen/s3c2410_ts.c:545: warning: passing arg 2 of `request_irq' from incompatible pointer typedrivers/input/touchscreen/s3c2410_ts.c: In function `s3c2410ts_remove':drivers/input/touchscreen/s3c2410_ts.c:588: warning: implicit declaration of function `clk_disable'drivers/input/touchscreen/s3c2410_ts.c:590: warning: implicit declaration of function `clk_unuse'drivers/input/touchscreen/s3c2410_ts.c:592: warning: implicit declaration of function `clk_put'drivers/input/touchscreen/s3c2410_ts.c: In function `touch_timer_fire':drivers/input/touchscreen/s3c2410_ts.c:244: warning: statement with no effectdrivers/input/touchscreen/s3c2410_ts.c:275: warning: statement with no effectdrivers/input/touchscreen/s3c2410_ts.c: In function `stylus_action':drivers/input/touchscreen/s3c2410_ts.c:365: warning: statement with no effectdrivers/input/touchscreen/s3c2410_ts.c:376: warning: statement with no effectdrivers/input/touchscreen/s3c2410_ts.c: In function `s3c2410ts_probe':drivers/input/touchscreen/s3c2410_ts.c:486: warning: statement with no effectmake[3]: *** [drivers/input/touchscreen/s3c2410_ts.o] 错误 1make[2]: *** [drivers/input/touchscreen] 错误 2make[1]: *** [drivers/input] 错误 2make: *** [drivers] 错误 2在regs-adc.h中加入相应内容:/* linux/include/asm/arch-s3c2410/regs-adc.h * * Copyright (c) 2004 Shannon Holland <holland@loser.net> * * This program is free software; yosu can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * S3C2410 ADC registers * *  Changelog: *    27-09-2004     SAH     Created file*/#ifndef __ASM_ARCH_REGS_ADC_H#define __ASM_ARCH_REGS_ADC_H "regs-adc.h"#define S3C2410_ADCREG(x) (x)#define S3C2410_ADCCON	   S3C2410_ADCREG(0x00)#define S3C2410_ADCTSC	   S3C2410_ADCREG(0x04)#define S3C2410_ADCDLY	   S3C2410_ADCREG(0x08)#define S3C2410_ADCDAT0	   S3C2410_ADCREG(0x0C)#define S3C2410_ADCDAT1	   S3C2410_ADCREG(0x10)/***************************add by lfc***************************/#define S3C2410_ADC_IN0                 0#define S3C2410_ADC_IN1                 1#define S3C2410_ADC_IN2                 2#define S3C2410_ADC_IN3                 3#define S3C2410_ADC_IN4                 4#define S3C2410_ADC_IN5                 5#define S3C2410_ADC_IN6                 6#define S3C2410_ADC_IN7                 7#define S3C2410_ADC_BUSY                1#define S3C2410_ADC_READY               0#define S3C2410_NOP_MODE                0#define S3C2410_X_AXIS_MODE             1#define S3C2410_Y_AXIS_MODE             2#define S3C2410_WAIT_INT_MODE           3/*****************************end add****************************//* ADCCON Register Bits */#define S3C2410_ADCCON_ECFLG		(1<<15)#define S3C2410_ADCCON_PRSCEN		(1<<14)#define S3C2410_ADCCON_PRSCVL(x)	(((x)&0xFF)<<6)#define S3C2410_ADCCON_PRSCVLMASK	(0xFF<<6)#define S3C2410_ADCCON_SELMUX(x)	(((x)&0x7)<<3)#define S3C2410_ADCCON_MUXMASK		(0x7<<3)#define S3C2410_ADCCON_STDBM		(1<<2)#define S3C2410_ADCCON_READ_START	(1<<1)#define S3C2410_ADCCON_ENABLE_START	(1<<0)#define S3C2410_ADCCON_STARTMASK	(0x3<<0)/**************************add by lfc***********************/#define S3C2410_ADCCON_PRSCDIS          (S3C2410_ADCCON_PRSCEN*0)/***************************end add*************************//* ADCTSC Register Bits *//**************************add by lfc************************/#define S3C2410_UD_SEN                  (1<<8)/***************************end add**************************/#define S3C2410_ADCTSC_YM_SEN		(1<<7)#define S3C2410_ADCTSC_YP_SEN		(1<<6)#define S3C2410_ADCTSC_XM_SEN		(1<<5)#define S3C2410_ADCTSC_XP_SEN		(1<<4)#define S3C2410_ADCTSC_PULL_UP_DISABLE	(1<<3)#define S3C2410_ADCTSC_AUTO_PST		(1<<2)#define S3C2410_ADCTSC_XY_PST		(0x3<<0)/**********************modify by lfc**************************/#define S3C2410_ADCTSC_XY_PST(x)        (((x)&0x3)<<0)#define S3C2410_DOWN_INT                (S3C2410_UD_SEN*0)#define S3C2410_UP_INT                  (S3C2410_UD_SEN*1)#define S3C2410_ADCTSC_XM_HIZ           (S3C2410_ADCTSC_XM_SEN*0)#define S3C2410_ADCTSC_XM_GND           (S3C2410_ADCTSC_XM_SEN*1)#define S3C2410_ADCTSC_XP_EXTVLT        (S3C2410_ADCTSC_XP_SEN*0)#define S3C2410_ADCTSC_XP_AIN           (S3C2410_ADCTSC_XP_SEN*1)#define S3C2410_ADCTSC_YM_HIZ           (S3C2410_ADCTSC_YM_SEN*0)#define S3C2410_ADCTSC_YM_GND           (S3C2410_ADCTSC_YM_SEN*1)#define S3C2410_ADCTSC_YP_EXTVLT        (S3C2410_ADCTSC_YP_SEN*0)#define S3C2410_ADCTSC_YP_AIN           (S3C2410_ADCTSC_YP_SEN*1)#define S3C2410_ADCTSC_XP_PULL_UP_EN   (S3C2410_ADCTSC_XP_PULL_UP_DIS*0)/************************end modify***************************//* ADCDAT0 Bits */#define S3C2410_ADCDAT0_UPDOWN		(1<<15)#define S3C2410_ADCDAT0_AUTO_PST	(1<<14)#define S3C2410_ADCDAT0_XY_PST		(0x3<<12)#define S3C2410_ADCDAT0_XPDATA_MASK	(0x03FF)/* ADCDAT1 Bits */#define S3C2410_ADCDAT1_UPDOWN		(1<<15)#define S3C2410_ADCDAT1_AUTO_PST	(1<<14)#define S3C2410_ADCDAT1_XY_PST		(0x3<<12)#define S3C2410_ADCDAT1_YPDATA_MASK	(0x03FF)/*added by Zxh*/#define S3C2410_ADCTSC_XY_PST_N     (0x0<<0)#define S3C2410_ADCTSC_XY_PST_X     (0x1<<0)#define S3C2410_ADCTSC_XY_PST_Y  (0x2<<0)#define S3C2410_ADCTSC_XY_PST_W   (0x3<<0)/*added by Zxh*/#endif /* __ASM_ARCH_REGS_ADC_H */后重新编译解决问题。要选中input device support中的Touchscreen interface内核配置中选择device driver-->graphics support-->logo configuration重新编译内核,烧到开发板中。就OK了学会ctags命令可cscope查找一下按理说,这样做过后,启动开发板应该出现小企鹅,但结果并没有显示。后来经过搜索相应资料,了解到这可能是framebuffer驱动没搞好的缘故。因为该驱动和屏幕分辩率有关。2007.6.12日早上和潘建聊起来,他说需要在bootloader启动时加参数VGA,如在grub.conf中加入VGA=0x...,但这一般适用于PC机,在嵌入式系统中胡军国说:最好编译tslib,用它来检测触摸屏。tslib可以直接从input层获取坐标信息以下是成功显示小企鹅的步骤:启动开发板,出现小企鹅表明framebuffer驱动成功(LCD驱动)成功。先前没有出现是因为framebuffer驱动没搞好。也就是说先要移植LCD驱动。我们通过上面的工作,在串口中已经看到了 linux2.6.14 的启动信息,但是在 LCD 上没有任何显示,这是因为我们还没有对 LCD 进行初始化, linux2.6.14 已经包含了 lcd 的驱动程序,驱动程序位于 /linux-2.6.14/drivers/video/ 目录下,文件名是 s3c2410fb.c, 头文件是 s3c2410fb.h. 。我们在这里可以不研究这个文件。只要我们对 lcd 进行以下初始化就可以了。       我们打开 /linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c, 在这个文件里增加包含文件:    #include <asm/arch/fb.h>       然后增加 LCD 初始化的代码,    static struct s3c2410fb_mach_info hfrk_lcdcfg __initdata = {        .fixed_syncs=       0,        .regs={            .lcdcon1=   S3C2410_LCDCON1_TFT16BPP | \                        S3C2410_LCDCON1_TFT | \                        S3C2410_LCDCON1_CLKVAL(6),             .lcdcon2=   S3C2410_LCDCON2_VBPD(2) | \                        S3C2410_LCDCON2_LINEVAL(319) | \                        S3C2410_LCDCON2_VFPD(0) | \                        S3C2410_LCDCON2_VSPW(4),             .lcdcon3=   S3C2410_LCDCON3_HBPD(47) | \                        S3C2410_LCDCON3_HOZVAL(239) | \                        S3C2410_LCDCON3_HFPD(15),             .lcdcon4=   S3C2410_LCDCON4_MVAL(1) | \                        S3C2410_LCDCON4_HSPW(31),             .lcdcon5=   S3C2410_LCDCON5_FRM565 | \                        S3C2410_LCDCON5_INVVLINE | \                        S3C2410_LCDCON5_HWSWP,        },        .lpcsel=    0x0,        .gpccon=    0xaaaaaaaa,        .gpccon_mask=   0xffffffff,        .gpcup=     0xffffffff,        .gpcup_mask=    0xffffffff,        .gpdcon=    0xaaaaaaaa,        .gpdcon_mask=   0x0,        .gpdup=     0xffffffff,        .gpdup_mask=    0xffffffff,        .width=     240,        .height=    320,        .xres=      {240,240,240},        .yres=      {320,320,320},        .bpp=       {16,16,16},    };    static void __init sdmk2410_init(void)    {        set_s3c2410fb_info(&hfrk_lcdcfg);    }       在系统初始化中增加对 lcd 的初始化。    MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch                    * to SMDK2410 */        /* Maintainer: Jonas Dietsche */        ……        .map_io     = smdk2410_map_io,        .init_irq   = smdk2410_init_irq,        .init_machine   = sdmk2410_init, /* 这一句是新增加的*/        .timer      = &s3c24xx_timer,    MACHINE_END       现在我们重新保存这个文件,现在需要重新进入配置菜单,检查一下 LCD 的相关选项是否选上, [Device Drivers->Graphics support->] 这个配置菜单下面是相关 LCD 的配置。回到根目录下,输入 make 编译内核,重现烧写内核到开发板,再次启动 linxu2.6.14 以后就可以在 lcd 上看到一个小的企鹅。我们的 lcd 驱动已经移植完成了。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -