欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

移植LCD、触摸屏、USB驱动 到内核3.4.2

程序员文章站 2022-03-22 15:14:02
...

http://blog.csdn.net/tpmamba/article/details/78870434

移植LCD

  1. 上传二期编写好的lcd驱动文件及其Makefile,修改其Makefile,编译后出现如图错误提示。

    —修改Makefile
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —错误提示
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  2. 根据错误提示,修改驱动文件后,重新编译,编译成功

    —修改驱动
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —编译成功
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  3. 测试驱动

    3.1 拷贝ko文件到根文件系统目录里

    cp lcd.ko /work/nfs_root/fs_mini_mdev_new

    3.2 配置(make menuconifg)3.4.2内核,将内核自带的LCD驱动配置为模块,重新编译内核

    —配置内核

    -> Device Drivers
     -> Graphics support
        -> Support for frame buffer devices
            <M> S3C2410 LCD framebuffer support
    
    • 1
    • 2
    • 3
    • 4
    • 5

    —编译内核,编译模块,并将内核重命名为uImage_3.4.2_nolcd,并将/drivers/video目录下的所需的ko文件拷贝到根文件系统目录下

    make uImage
    cp arch/arm/boot/uImage /work/nfs_root/uImage_3.4.2_nolcd 
    
    //make modules
    //cd drivers/video
    //cp cfb*.ko /work/nfs_root/fs_mini_mdev_new
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.3 修改etc/inittab,加上tty1::askfirst:-/bin/sh后,nfs下载新内核(uImage_3.4.2_nolcd),并用其启动

    修改etc/inittab
    
    • 1
    • 2

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    nfs 30000000 192.168.0.3:/work/nfs_root/uImage_3.4.2_nolcd
    bootm 30000000
    
    • 1
    • 2
    • 3

    3.4 加载驱动,屏幕上出现一行文字(如图1);在串口上输入echo tianpeng,hello! > /dev/tty1,屏幕上出现tianpeng,hello!(如图2)

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —图1
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —图2
    移植LCD、触摸屏、USB驱动 到内核3.4.2


移植符合输入子系统的按键驱动(8th_ buttons_ input)

  1. 上传8th_ buttons_ input整个文件夹,修改其下的Makefile,编译后出现如图错误提示。

    —修改Makefile
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —错误提示
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  2. 根据错误提示,修改驱动文件后,重新编译,编译成功

    —修改驱动
    移植LCD、触摸屏、USB驱动 到内核3.4.2
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —编译成功
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  3. 测试驱动

    3.1 拷贝ko文件

    cp buttons.ko /work/nfs_root/fs_mini_mdev_new
    
    • 1
    • 2

    3.2 在新内核(uImage_3.4.2_nolcd)下,并在加载了上节的lcd驱动后,加载驱动,依次按下按键S2,S3,S4后,屏幕上会依次出现l,s,回车;若在串口上输入exec 0 < /dev/tty1(将标准输入重定位到/dev/tty1),依次按下按键S2,S3,S4后,屏幕上会显示和secureCRT上一样的效果,将整个根文件系统目录显示出来(如图)

    —测试
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —屏幕图片
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    {IRQ_EINT0, "S2", S3C2410_GPF(0), KEY_L},
    {IRQ_EINT2, "S3", S3C2410_GPF(2), KEY_S},
    {IRQ_EINT11, "S4", S3C2410_GPG(3), KEY_ENTER},
    {IRQ_EINT19, "S5", S3C2410_GPG(11), KEY_LEFTSHIFT}


移植触摸屏驱动

  1. 上传11th_ ts整个文件夹,修改其下的Makefile,编译后出现如图错误提示。

    —修改Makefile
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —错误提示
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  2. 根据错误提示,修改驱动文件后,重新编译,编译成功

    —修改驱动
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —编译成功
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  3. 测试驱动(1)

    3.1 拷贝编译成功的ko文件

    cp ts.ko /work/nfs_root/fs_mini_mdev_new

    3.2 用tslib测试:将tslib-1.4.tar.gz复制到11th_ts文件夹下解压、编译、安装

    编译:
        tar xzf tslib-1.4.tar.gz
        cd tslib
        ./autogen.sh
    
        mkdir tmp
        echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
        ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    移植LCD、触摸屏、USB驱动 到内核3.4.2
    移植LCD、触摸屏、USB驱动 到内核3.4.2
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    安装:make
          make install  
    
    进入到tmp文件夹下,将文件复制到文件系统根目录下:
        cd tmp/
        cp * -rf /work/nfs_root/fs_mini_mdev_new
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    3.3 加载触摸屏驱动

    insmod ts.ko 
    
    • 1
    • 2

    3.3 修改 /etc/ts.conf第1行(去掉#号和第一个空格):

    # module_raw input
    改为:
    module_raw input
    
    • 1
    • 2
    • 3
    • 4

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    3.4 在串口上输入:这里event1是加载串口查看哪个是触摸屏设备(图1)

    export TSLIB_TSDEVICE=/dev/event1   
    export TSLIB_CALIBFILE=/etc/pointercal
    export TSLIB_CONFFILE=/etc/ts.conf
    export TSLIB_PLUGINDIR=/lib/ts
    export TSLIB_CONSOLEDEVICE=none
    export TSLIB_FBDEVICE=/dev/fb0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    3.5 校正(ts_calibrate),当屏幕出现校正点(图1),点击后,串口提示错误(图2)

    —屏幕图
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —错误提示
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  4. 解决错误:在百问网论坛上,搜索tslib,搜到如图帖子,找到解决方法

    —帖子
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —修改arm交叉编译工具中的头文件(进入工具链目录,搜索EV_VERSION,找到需要修改的头文件,需和内核中头文件(include/linux/input.h)中定义保持一致)

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    echo $PATH
    cd /usr/local/arm/4.3.2
    grep "EV_VERSION" * -nR
    
    sudo chmod +w arm-none-linux-gnueabi/libc/usr/include/linux/input.h
    sudo vi arm-none-linux-gnueabi/libc/usr/include/linux/input.h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    —修改
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —重新编译tslib

    cd /work/drivers_and_test_new/11th_ts/tslib
    make clean
    make 
    make install
    
    cd tmp/
    cp * -rf /work/nfs_root/fs_mini_mdev_new
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  5. 再次测试驱动

    5.1 修改 /etc/ts.conf第1行(去掉#号和第一个空格):

    # module_raw input
    改为:
    module_raw input
    
    • 1
    • 2
    • 3
    • 4

    5.2 测试

    ts_calibrate # 校正

    ts_test # 进入tslib test program

    ts_print # 打印坐标(真实坐标)

    ts_print_raw # 打印原始坐标(电压值)

    —ts_calibrate
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —ts_test
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —ts_print
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —ts_print_raw
    移植LCD、触摸屏、USB驱动 到内核3.4.2


移植USB驱动(12th_usb)

  1. 上传12th_usb整个文件夹,修改其下的Makefile,编译后出现如图错误提示。

    —修改Makefile
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —错误提示
    移植LCD、触摸屏、USB驱动 到内核3.4.2

  2. 根据错误提示,修改驱动文件后,重新编译,编译成功并拷贝文件

    —根据提示,找到所在行,找到函数定义文件,继而找到新内核提供的函数,修改驱动
    移植LCD、触摸屏、USB驱动 到内核3.4.2
    移植LCD、触摸屏、USB驱动 到内核3.4.2
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —编译成功
    移植LCD、触摸屏、USB驱动 到内核3.4.2

    —拷贝文件

    cp usbmouse_as_key.ko /work/nfs_root/fs_mini_mdev_new   
    
    • 1
    • 2
  3. 测试驱动(这里仅需lcd驱动配合即可)

    3.1 加载驱动、插入鼠标

    移植LCD、触摸屏、USB驱动 到内核3.4.2

    3.2 点击左键(l)–>点击右键(s)–>点击中键(Enter)

    移植LCD、触摸屏、USB驱动 到内核3.4.2