全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、设计要求31、目的32、作品要实现的功能3二、设计方案31、硬件资源32、软件资源33、设计流程3三、移植过程41、环境搭建42、U-boot移植41)获取u-boot源码42)建立板级支持包43)添加代码使支持Nand Flash 驱动5.修改start.S 文件5.添加nand.c文件7.修改gdut2410.h84)开发板的配置9.添加命令9.修改环境变量10.修改命令提示符10.修改默认下载地址10.修改环境变量在Flash中的存储地址115)编译u-boot116)烧写u-boot117)测试u-boot113、Linux内核移植111)获取Linux-内核源码122)指定交叉编译器123)移植Nand驱动并更改分区信息124)添加devfs文件系统支持135)移植LCD显示驱动136)移植触摸屏驱动147)移植网卡驱动168)配置内核17.配置文件17.配置方式17.处理器配置18.添加S3C2410LCD驱动支持18.Bootup logo19.配置触摸屏19.配置CS8900网卡支持20.配置对NFS文件系统的支持21.配置USB键盘、扫描器和鼠标229)制作uImage内核映象234、QT4编程及移植231)搭建Qt-creator环境23.下载并安装QT-creator24.建立并编译工程242)搭建QT/E环境28.编译m4-1.4.13.tar.bz228.编译autoconf-2.64.tar.bz228.编译tslib-1.4.tar.bz2触摸屏库29.编译QT/E库29.测试触摸屏及QT/E程序293)编译QT/E程序32.编译好的工程文件共享32.清除原有编译中间过程文件32.程序测试325、文件系统制作321)建立文件系统的目录322)创建设备文件333)准备启动配置文件33.下面创建inittab文件33.创建rcS文件34.下面创建fstab文件344)利用BusyBox安装命令工具34.下载并解压BusyBox34.修改Makefile34.配置busybox34.编译 Busybox37.安装 Busybox中的工具到根文件系统37.修改bin/busybox的属性37.复制常用的库文件到/rootfs/lib/目录下375)制作带QT的文件系统37.环境配置及触摸屏校准37. 生成.cramfs根文件系统镜像38四、结语38Linux2.6系统移植与驱动设计一、设计要求1、目的1) 掌握bootloader的移植2) 掌握linux2.6的移植与剪裁3) 掌握文件系统的制作4) 掌握QT的安装及制作带QT界面的文件系统2、作品要实现的功能1) 移植bootloader,使系统支持从NAND FLASH启动2) 移植linux2.6版本的内核,包括进行系统分区修改,实现网卡驱动、液晶驱动、触摸屏驱动以及添加常用功能的配置(例如USB鼠标、键盘的配置)。3) 制作文件系统,生成可执行文件,编写启动文件,创建设备端点号。4) 编译安装QT和TSLIB触摸屏库,制作带QT界面的文件系统和TSLIB连接、配置文件系统的初始化文件使其支持QT。二、设计方案1、硬件资源(深圳旋极公司开发的实验箱)1) ARM 处理器:采用三星公司的处理器S3C2410X(ARM9)。基于ARM920T 内核,主频高达203MHz,带MMU(内存管理单元),片上资源丰富。2) 存储器:4M Flash、64M NandFlash 及64M SDRAM。(容量皆可扩展)3) 其它资源:主/从USB 接口、RS232 接口2 个、多功能I/O 扩展接口、外中断输入、LCD/触摸屏接口、A/D 输入、JTAG 调试接口、以太网口等。2、软件资源1) arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2(交叉编译器)2) u-boot-1.3.2.tar.bz2、linux.tar.bz2、busybox1.9.2.tar.bz2源码3) qt-sdk-win-opensource-2010.02.1,qt-embedded-linux-opensource-src-4.5.0.tar.bz2、qt-x11-opensource-src-4.5.0.tar.bz2、m4-1.4.13.tar.bz2、autoconf-2.64.tar.bz23、设计流程三、移植过程1、环境搭建安装交叉编译器:把arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2拷贝到linux的/gdut2410 目录下,解压安装到/usr/local/arm目录下,并修改环境变量,使刚安装的交叉编译工具生效。操作执行命令为:rootBC /#cp /mnt/hgfs/wtk2410/arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 /gdut2410rootBC /#cd /gdut2410rootBC gdut2410#tar -jxvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 CrootBC gdut2410#cd /gdut2410/gcc-3.4.6-glibc-2.3.6/rootBC gdut2410#cp arf arm-linux /usr/local/这样就把arm-linux-gcc-3.4.6-glibc-2.3.6安装到了/目录下,接着修改环境rootBC gdut2410#vi /etc/profile在/etc/profile 文件中添加一行:export PATH = /usr/local/arm-linux/bin:$PATH #export PATH = /gcc-3.4.6-glibc-2.3.6/arm/linux/bin:$PATH执行命令:source /etc/profile 或注销再登录使环境变量生效执行 arm-linux-gcc v 查看安装是否成功,若成功则会显示如下信息:Reading specs from /usr/local/arm-linux/bin/./lib/gcc/arm-linux/3.4.6/specsConfigured with: /home/samba/armlinux/crosstool/crosstool-0.42/build/arm-linux/gcc-3.4.6-glibc-2.3.6/gcc-3.4.6/configure -target=arm-linux -host=i686-host_pc-linux-gnu -prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux -with-headers=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/include -with-local-prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux -disable-nls -enable-threads=posix -enable-symvers=gnu -enable-_cxa_atexit enable-languages=c,c+ -enable-shared -enable-c99 -enable-long-longThread model: posixgcc version 3.4.6到此,交叉编译器安装完毕。2、U-boot移植1)获取u-boot源码从u-boot官方网站下载源代码,版本是1.3.2 ,将u-boot-1.3.2.tar.bz2放在gdut2410/u-boot 目录下,解压源码包:cd /gdut2401/u-boottar jxvf u-boot-1.3.2.tar.bz2cd u-boot-1.3.22)建立板级支持包在board目录下,每一块开发板都有一个对应的目录,因此需要为开发板建立一个目录,名字叫做gdut2410,并创建相应的文件。因本开发板与smdk2410开发板极为相似,故可选择它作为模板,如下:cd board/cp rf smdk2410 gdut2410cd gdut2410cd .每个开发板都有一个自己的配置文件,如smdk2410开发板的配置文件为 include/configs/smdk2410.h ,也需要为本开发板建立自己的配置文件。可以直接从smdk2410开发板的配置文件中修改而来。因此先把smdk2410的配置文件复制到块开发板的配置文件当中:cp include/configs/smdk2410.h include/configs/gdut2410.h修改Makefile,使得可以配置本开发板:Vi Makefile在适当的位置添加如下两行:gdut2410_config : unconfig $(MKCONFIG) $(:_config=) arm arm920t gdut2410 NULL s3c24x0在140行将CROSS_COMPILE 指定为arm-linux- ,指定交叉编译器。3)添加代码使支持Nand Flash 驱动因为u-boot 默认不支持从Nand Flash启动,所以需要自己添加代码 来实现Nand Flash驱动。.修改start.S 文件位于cpu/arm920t/目录下的start.S文件是开发板上电后支持的第一段代码,需要在这个文件中添加内容,以支持从Nand Flash 启动。Vi cpu/arm920t/start.S首先,删掉start.S中的第181行和201行的这两条语句,两条语句间的内容不要删除:#ifdef CONFIG_AT91RM9200#endif这两句之间的内容将不会被编译,而开发板需要执行这些内容,然后找到这一行:#ifdef CONFIG_SKIP_RELOCATE_UBOOT在紧接这行的下面添加如下几行:#ifdef CONFIG_S3C2410_NAND_BOOT bl copy_myself#else再找到 ble copy_loop在它的下面添加一行:#endif做这些工作就是要完成一个简单的功能:如果定义了CONFIG_S3C2410_NAND_FLASH这个宏,那么就执行copy_myself 这个子程序,否则就执行#else下面的程序。copy_myself 这个子程序的功能就是把u-boot自身的代码从Nand Flash 拷贝到SDRAM中,需要自己实现。u-boot 自身并没有实现。把copy_myself 也添加在start.S文件中,找到下面一行:_start_armboot: .word start_armboot在这行下面添加如下内容:/*copy u-boot to RAM*/#ifdef CONFIG_S3C2410_NAND_BOOTcopy_myself: mov r10,lr ldr sp,DW_STACK_START mov fp,#0 bl NF_Init ldr r0,=UBOOT_RAM_BASE mov r1,#0x0 mov r2,#0x30000 bl nand_read_whole tst r0,#0x0 beq ok_nand_read1: b 1bok_nand_read: mov r0,#0x00000000 ldr r1,=UBOOT_RAM_BASE mov r2,#0x400go_next: ldr r3,r0,#4 ldr r4,r1,#4 teq r3,r4 bne notmatch subs r2,r2,#4 beq done_nand_read bne go_nextnotmatch:1: b 1bdone_nand_read: mov pc,r10#endifDW_STACK_START: .word STACK_BASE+STACK_SIZE-4上面是copy_myself的实现代码,添加完成以后,u-boot启动时就行执行这段代码,将u-boot的内容从Flash中拷贝到SDRAM中,这样,start.S这个文件就修改完成了。.添加nand.c文件在copy_myslef这段程序中,调用了nand_read_whole子程序,这个程序是用C程序实现的,新建一个文件,board/gdut2410/nand.c ,在这个文件中实现它:#include#include#include#define TACLS 0#define TWRPH0 3#define TWRPH1 0#define U32 unsigned intextern unsigned long nand_probe(unsigned long physadr);static void NF_Reset(void) int i; NF_nFCE_L(); NF_CMD(0xff); for(i=0;i10;i+); NF_WAITRB(); NF_nFCE_H();void NF_Init(void) rNFCONF=(115)|(114)|(113)|(112)|(111)|(TACLS8)|(TWRPH04)|(TWRPH10); NF_Reset();int nand_read_whole(unsigned char *buf,unsigned long start_addr,int size) int i,j; if(start_addr & NAND_BLOCK_MASK)|(size & NAND_BLOCK_MASK) return 1; NF_nFCE_L(); for(i = 0;i 10;i +); i = start_addr; while(i 9) & 0xff; rNFADDR = (i17) & 0xff; rNFADDR = (i25) & 0xff; NF_WAITRB();for(j = 0;j NAND_SECTOR_SIZE; j +,i +) *buf = (rNFDATA & 0xff); buf +; NF_nFCE_H(); return 0;上面就是nand.c文件的全部内容,为了使编译的时候能把这个文件编译进去,需要修改相应的Makefile:Vi board/gdut2410/Makefile找到这一行:COBJS:= smdk2410.o flash.o把这行改成如下:COBJS:= smdk2410.o flash.o nand.o即在行尾加上nand.c,这样编译的时候就会把nand.c编译进去 ,并进行链接。.修改gdut2410.h前面提到,gdut2410.h 是开发板的配置文件,关于nand.c 中用到的一些宏或者其它需要定义的,都放在gdut2410.h中。Vi include/configs/gdut2410.h光标移动到文件的末尾,在文件的最后一个#endif的前面添加如下内容:#define CONFIG_S3C2410_NAND_BOOT 1#define STACK_BASE 0x33f00000#define STACK_SIZE 0x8000#define UBOOT_RAM_BASE 0x33f80000#define CFG_NAND_BASE 0x4E000000#define CFG_MAX_NAND_DEVICE 1#define SECTORSIZE 512#define NAND_SECTOR_SIZE SECTORSIZE#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE-1)#define ADDR_COLUMN 1#define ADDR_PAGE 2#define ADDR_COLUMN_PAGE 3#define NAND_ChipID_UNKNOWN 0x00#define NAND_MAX_FLOORS 1#define NAND_MAX_CHIPS 1#define WRITE_NAND_COMMAND(d,adr)dorNFCMD = d;while(0)#define WRITE_NAND_ADDRESS(d,adr)dorNFADDR = d;while(0)#define WRITE_NAND(d,adr)dorNFDATA =d ;while(0)#define READ_NAND(adr)(rNFDATA)#define NAND_WAIT_READY(nand)while(!(rNFSTAT & (10);#define NAND_DISABLE_CE(nand)rNFCONF |= (111);#define NAND_ENABLE_CE(nand)rNFCONF &= (111);#define NAND_CTL_CLRALE(nandptr)#define NAND_CTL_SETALE(nandptr)#define NAND_CTL_CLRCLE(nandptr)#define NAND_CTL_SETCLE(nandptr)#define CONFIG_MTD_NAND_VERIFY_WRITE 1#define rNFCONF (*(volatile unsigned int *)0x4e000000)#define rNFCMD (*(volatile unsigned char *)0x4e000004)#define rNFADDR (*(volatile unsigned char *)0x4e000008)#define rNFDATA (*(volatile unsigned char *)0x4e00000c)#define rNFSTAT (*(volatile unsigned int *)0x4e000010)#define rNFECC (*(volatile unsigned int *)0x4e000014)#define rNFECC0 (*(volatile unsigned char *)0x4e000014)#define rNFECC1 (*(volatile unsigned char *)0x4e000015)#define rNFECC2 (*(volatile unsigned char *)0x4e000016)#define NF_CMD(cmd)rNFCMD = cmd;#define NF_addr(addr)rNFADDR = addr;#define NF_nFCE_L()rNFCONF &= (111);#define NF_nFCE_H()rNFCONF |= (111);#define NF_RSTECC()rNFCONF |= (112);#define NF_RDDATA()(rNFDATA)#define NF_WRDATA(data)rNFDATA = data;#define NF_WAITRB()while(!(rNFSTAT & (10);这样,关于从Nand启动的修改就完成了。4)开发板的配置前面提到,gdut2410.h 是开发板的配置文件,许多重要的内容都需要在这个文件中进行配置。.添加命令u-boot 中提供了丰富的命令,smdk2410开发板配置了一部分命令,还要为本开发板增加一些命令。找到下面的几行:#define CONFIG_CMD_CACHE#define CONFIG_CMD_DATE#define CONFIG_CMD_ELF在其下添加下面几行:#define CONFIG_CMD_REGINFO#define CONFIG_CMD_NAND#define CONFIG_CMD_PING#define CONFIG_CMD_DLF#define CONFIG_CMD_ENV#define CONFIG_CMD_NET这样就添加了一些需要的命令。.修改环境变量环境变量是u-boot运行时或者传递给内核的重要参数,需要正确地设置。找到下面的一行:#define CONFIG_BOOTDELAY 3将紧接的几行修改成如下:#define CONFIG_BOOTARGS root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200#define CONFGI_BOOTCOMMAND nand read 30008000 80000 200000;bootm#define CONFIG_NETMASK #define CONFIG_IPADDR 0#define CONFIG_SERVERIP #define CONFIG_ETHADDR 08:00:3e:26:0a:5b#define CONFIG_LOAD_ADDR 0x00008000#define CONFIG_LOAD_BOOT_FILE_NAME uImage#define CONFIG_CMDLINE_TAG 1#define CONFIG_SETUP_MEMORY_TAGS 1#define CONFIG_INITRD_TAG 1上面添加的环境变量在u-boot启动时作为u-boot的默认环境变量,如果不执行saveenv命令,则这些变量只存在于SDRAM中,执行saveenv命令之后,这些变量会保存到Flash中,下次上电,在从Flash中把它读出来,作为环境变量使用。.修改命令提示符找到如下一行:#define CFG_PROMPT SMDK2410# /* Monitor Command Prompt*/修改为:#define CFG_PROMPT GDUT_ARM# /* Monitor Command Prompt*/.修改默认下载地址找到如下一行:#define CFG_LOAD_ADDR 0x33000000 /* default load address */这个变量定义的是在使用串口或网卡下载文件到SDRAM时,如果不指定下载地址,则下载到这个宏指定的默认地址。用下面两行来替代:#define CFG_LOAD_ADDR 0x30008000#define CFG_TFTP_LOAD_ADDR 0x30008000.修改环境变量在Flash中的存储地址找到如下两行:#define CFG_ENV_IS_IN_FLASH 1#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */上面的定义说明环境变量是存在Flash中。板子上只有Nand Flash,因此环境变量只能存在Nand Flash中。因此修改为如下:#define CFG_ENV_IS_IN_NAND 1#define CFG_ENV_SIZE 0x4000 /* Total Size of Environment Sector */#define CFG_ENV_OFFSET (0x80000-0x4000)表示环境变量存储在Nand Flash中,大小为16KB,起始地址是0.5M往下的16KB地址处。u-boot占用的Flash地址是前0.5M,对u-boot来说,已经足够了。配置文件的修改就完成了。5)编译u-boot首先运行如下命令配置u-boot:rootlocalhost u-boot-1.3.2# make gdut2410_configConfiguring for gdut2410 board.然后执行make命令进行编译:rootlocalhost u-boot-1.3.2# make编译完成后,会在u-boot的源代码目录下生成u-boot.bin文件,这个文件就是需要的二进制可执行文件。6)烧写u-boot把编译好的u-boot放置到所提供down_uboot文件夹里。右键查看u-boot.bin的大小,修改批处理文件downUBoot.bat,把u-boot.bin的实际大小写到相应位置。修改完毕后,给开发板上电,找开并配置好MultiICE2.2,然后运行downUBoot.bat,把u-boot.bin烧录到NAND FLASH 0地址处。7)测试u-boot现在u-boot已经烧写到开发板上了,可以启动检验是否烧写好。连接开发板与主机之间的串口、网线,启动开发板。如果烧写成功,在串口终端上出现如下内容:3、Linux内核移植对于嵌入式Linux系统来说,有各种系统结构的处理器和硬件平台,用户需要根据需求定制硬件。只要是硬件平台发生变化,即使非常小,可能也需要做一些移植工作。内核移植是嵌入式linux系统中最常见的一项工作。移植嵌入式Linux系统并不意味着该内核使用了任何特定的链接库或用户工具,建立嵌入式系统并不需要特别的内核。嵌入式系统用使用的内核与工作站服务器上使用的内核主要的不同在于内核的配置方面。Linux内核移植是在Linux内核基础上,通过对平台的选择设计来实现针对特定系统的内核版本。Linux内核和移植包含启动代码的修改、内核的链接及装入、参数传递、内核引导几个部分。基本过程如下:(1)首先获取某一版本的Linux内核源码,根据具体的目标平台对源码进行必要的改写(主要是修改体系结构相关的部分);(2)添加一部分外设驱动(如网卡驱动、USB驱动),打造一款适合于目标平台的新的操作系统,也就是常说的内核配置或内核定制;(3)对该系统进行针对目标平台的交叉编译,生成一个内核映象文件(如zImage、uImage、bzImage);(4)最后通过一些手段将该映象烧写到目标平台中。1)获取Linux-内核源码从Linux内核官方网站/ 下载linux-版本的内核源码。将linux-.tar.bz2源码放入/gdut2410/目录下,解压并进入linux-目录。rootlocalhost gdut2410# tar jxvf linux-.tar.bz2 rootlocalhost gdut2410# cd linux-/ 2)指定交叉编译器修改顶层目录的Makefile,执行命令: rootlocalhost linux-# vi Makefile找到并修改文件,指定arm体系及交叉编译工具,如下:ARCH ?= armCROSS_COMPILE ?= arm-linux-这两行表示接下来将对嵌入式ARM系统上使用的Linux内核进行交叉编译。3)移植Nand驱动并更改分区信息设置Nand Flash 的分区信息表是为内核启动以后加载文件系统用的,可以将Nand Flash看成PC机的硬盘,对Nand Flash的分区看成对硬盘的分区。而Nand Flash 则可以分成很多块,每块有不同的名字、大小和用途。下面慢对Super_ARM实验箱的Nand Flash进行分区的情况:第0块命名为“uboot”,表示它用来存放u-boot.bin映象,起始地址是Nand Flash的0x000000,最大0x80000字节;第1块命名为“kernel”,表示用来存放内核,起始地址是Nand Flash的0x80000,最大0x200000字节;第2块命名为“rootfs”,表示用来存放根文件系统,起始地址是Nand Flash的0x280000,最大60M字节。具体怎样分区,需要根据目标板的Nand Flash来定论。分区的方法就是修改 arch/arm/plat-s3c24xx目录下的common-smdk.c文件,执行命令:rootlocalhost linux-# vi arch/arm/plat-s3c24xx/common-smdk.c在第109行找到: static struct mtd_partition smdk_default_nand_part ,在其中以如下内容覆盖原有的内容,覆盖代码如下:static struct mtd_partition smdk_default_nand_part = 0 = .name = u-boot, .size = 0x80000, .offset = 0, , 1 = .name = kernel, .offset = 0x80000, .size = 0x200000, , 2 = .name = rootfs, .offset = SZ_2M+0x80000, .size = SZ_2M*30, ,;4)添加devfs文件系统支持为了内核支持devfs,以及在启动时能自动挂载/dev。编辑fs/Kconfig,执行命令:rootlocalhost linux-# vi fs/Kconfig在907行menu “Psendo filesystems”下面添加如下代码:config DEVFS_FS bool /dev file system support (OBSOLETE) default yconfig DEVFS_MOUNT bool Automatically mount at boot default y depends on DEVFS_FS5)移植LCD显示驱动(1)修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,执行命令:rootlocalhost linux-# vi arch/arm/mach-s3c2410/mach-smdk2410.c第一:添加如下头文件#include 第二:添加s3c2410fs_display 结构static struct s3c2410fb_display s3c2410_lcd_cfg _initdata= .lcdcon5 = S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_HWSWP, .type = S3C2410_LCDCON1_TFT, .width = 240, .height = 320, .pixclock = 98619, .xres = 240, .yres = 320, .bpp =16, .left_margin = 16, .right_margin = 7, .hsync_len = 14, .upper_margin = 2, .lower_margin = 3, .vsync_len = 2,;第三:添加s3c2410_mach_info 结构static struct s3c2410fb_mach_info s3c2410_fb_info _initdata = .displays = &s3c2410_lcd_cfg, .num_displays = 1, .default_display = 0, .gpccon = 0xaaa556a9, .gpccon_mask = 0xfff003fc, .gpcup = 0x0000ffff, .gpcup_mask = 0xffffffff, .gpdcon = 0xaa95aaa5, .gpdcon_mask = 0xffc0fff0, .gpdup = 0x0000ffff, .gpdup_mask = 0xffffffff, .lpcsel = 0x4,;第四:在函数smdk2410_init()中加入如下一行:S3c24xx_fb_set_platdata(&s3c2410_fb_info);添加的这些代码的作用:首先看s3c2410_mach_info ,它是s3c2410_mach_info类型结构体,这个结构体有一个displays成员变量,它指向s3c2410fb_display 类型的指针。一个系统有多少个显示设备就对应多少个s3c2410fb_display 结构,Super_ARM只有一个LCD显示设备,所以只定义一个s3c2410fb_display 结构体smdk2410_lcd_cfg ,那么displays就指向这个结构体,同时将num_displays赋值为1。最后通过smdk24xx_fb_set_platdata函数将smdk2410_fb_info传递给底层LCD驱动。在drivers/video/目录下添加s3c2410fb.c 、s3c2410fb.h两个文件。代码如下见附录。6)移植触摸屏驱动(1)修改drivers/input/touchscreen/Makefile文件:rootlocalhost linux-# vi drivers/input/touchscreen/Makefile在文件中添加:obj-$(CONFIG_TOUCHSCREEN_S3C2410) +=s3c2410_ts.o(2)修改drivers/input/touchscreen/Kconfig 文件:rootlocalhost linux-# vi drivers/input/touchscreen/Kconfig在文件中添加如下:config TOUCHSCREEN_S3C2410 tristateS3C2410 Touchscreen depends on ARCH_SMDK2410 & INPUT & INPUT_TOUCHSCREEN(3)修改arch/arm/mach-s3c2410/mach-smdk2410.c 文件rootlocalhost linux-# vi arch/arm/mach-s3c2410/mach-smdk2410.c第一:在map_desc smdk2410_iodesc结构体前添加s3c2410_ts_mach_info结构: static struct s3c2410_ts_mach_info s3c2410_ts_cfg _initdata = .delay = 10000, .presc =49, .oversampling_shift = 2, ;其中,s3c2410_ts_mach_info结构中的delay是AD转换的延时时间,在触摸屏驱动中将被写入ADCDLY寄存器中,presc将被写入ADCCON的PREAVL字段,用来配置AD的转换速率。oversampling_shift将传给s3c2410_ts的shift成员,该值为2,说明一次触摸动作需要进行4(12)次AD转换后取平均值作为最后的坐标值。第二:在static struct platform_device *smdk2410_devices _initdata 中添加:&s3c_device_ts,第三:在static void _init smdk2410_map_io(void)函数中添加:set_s3c2410ts_info(&s3c2410_ts_cfg);第四:添加头文件(4)在include/asm-arm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会员充值代理加盟合同
- 小学二年级数学上册认识线段与测量物体练习卷
- 2025年Q4医护药品储备管理及应急供应保障工作总结
- 急性心梗术后戒烟戒酒:习惯养成与护理策略
- 咳嗽日久不愈的中医护理策略
- 宁夏回族自治区小学五年级上学期数学第四单元测试卷-可能性(高考点衔接)
- 建筑施工合同范本-011
- 2026年光纤通信工(光纤熔接技术)考试题
- 复产后没有订单合同
- 沐浴品订货服务合同
- 2025年下半年国元农业保险股份有限公司安徽分公司社会招聘12名笔试考试备考题库及答案解析
- 2025年电厂水处理值班员职业技能鉴定题库及答案(中级工)
- 涂装代工外包合同范本
- 板房拆除回收协议书
- 物流中包装的课件
- 物业设备设施培训课件
- 卤味店员工合同范本
- 第19课《大雁归来》课件+2025-2026学年统编版语文七年级上册
- 2025江西省金融资产管理股份有限公司下属子公司社会招聘3人(第二次)笔试历年典型考点题库附带答案详解试卷3套
- 物业反恐防暴培训
- 2025初中英语复习策略
评论
0/150
提交评论