全志A10平板上的ubuntu内核编译,支持LCD触摸屏

  转自http://hi.baidu.com/lang_byebye/item/ea52c13e466708f9e7bb7ae4


    ubuntu系统首先安装img映像到SD卡,设置LCD显示,具体参见上一文章。文件来自Linaro 12.06 armhf build项目,目前版本为http://dl.miniand.com/toby_corkindale/linaro-alip-armhf-t4.7z

    详情参见https://www.miniand.com/forums/forums/2/topics/82

    该img不支持触摸屏。网上没找到这个版本的源码。要支持触摸屏只能替换内核了。

 

编译环境为ubuntu 10.04LTS虚拟机。

1)  安装交叉编译工具

    sudo apt-get install gcc-4.6-arm-linux-gnueabi

    安装版本为4.6.2。

2) 下载源码

    git clone git://github.com/amery/linux-allwinner.git

3) 验证版本

    git checkout 23e5456879db0175f571dec43095c49e181e0b10

    修改触摸屏配置文件

编辑 linux-allwinner/drivers/input/touchscreen/ft5x_ts.h
注释掉这一行 "#define CONFIG_FT5X0X_MULTITOUCH     (1)" 
变成这样 "/* #define CONFIG_FT5X0X_MULTITOUCH     (1) */"

4) 编译内核及模块

    make clean

    make mrproper

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- sun4i_defconfig

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage modules

5) 替换uImage,安装模块

    挂载SD卡,将arch/arm/boot中的uImage复制到17M分区覆盖原文件。

    查看SD卡第二分区挂载点名称

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/SD卡第二分区挂载点名称 modules_install


至此,新内核和模块安装完毕,可以到平板上启动了。

启动之后,感觉菜单、终端等的操作迟钝了。对于armhf的编译选项应该没搞好,以后再试。

加载触摸屏驱动:

modprobe ft5x_ts

点击LCD屏幕,触摸屏可以使用了,但是位置和方向不对。

使用下面的操作校正:

xinput set-prop ft5x_ts "Evdev Axis Inversion" 1 1

xinput set-prop ft5x_ts "Evdev Axis Calibration" 0 1024 0 768

xinput set-prop ft5x_ts "Evdev Axes Swap" 0

就可以了,点击跟踪位置比较准确。

========================================================

    由于Linux内核版本众多,编译工具也很多,使得运行的linux系统之间存在差异。如果一个系统的模块加载到另一个有差异的系统,就可能使得系统不稳定甚至崩溃。Linux内核使用模块校验机制,禁止存在差异的模块加载。虽然这样解决了系统稳定的问题,但带来了另一个问题:如果想为系统开发硬件驱动模块,必须获得同样的系统源码和编译工具。在很多情况下这是不容易做到的。许多软件工程师使用替代办法,自己下载合适内核源码编译并替换内核。

    本次加载触摸屏驱动就是这种情况。

=========================================================

使用linaro的硬件浮点交叉编译工具:

下载地址:
http://launchpad.net/linaro-toolchain-binaries/trunk/2012.08/+download/gcc-linaro-arm-linux-gnueabihf-2012.08-20120827_linux.tar.bz2

在ubuntu中解压到:/media/scsi/Tools/gcc-linaro-arm-linux-gnueabihf

设置交叉编译工具路径:export PATH=/media/scsi/Tools/gcc-linaro-arm-linux-gnueabihf/bin:$PATH

重新编译内核及模块

    make clean

    make mrproper

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

重新替换uImage,安装模块

    挂载SD卡,将arch/arm/boot中的uImage复制到17M分区覆盖原文件。

    查看SD卡第二分区挂载点名称

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/SD卡第二分区挂载点名称 modules_install

!!

启动平板,发现USB OTG不工作了,无法使用USB鼠标和键盘。

=========================================================

对armhf的编译仍没解决,试了几个linaro的4.7版的armhf编译器,USB OTG不能工作。网上搜,安装g++-arm-linux-gnueabihf试一试。在Ubuntu 10.04里不能安装,需要Ubuntu12.04。下载,在VMware里安装失败,浏览帖子建议升级VMware到8.0。再下载VMWare8,安装Ubunt12.04可以了。

=========================================================

 armhf编译器搞定!

确实需要安装Ubuntu12.04。详细过程:

1)安装VMWare8

2)安装Ubuntu12.04.1LTS

3)安装ubuntu gcc开发工具: sudo apt-get install build-essential

4)安装armhf交叉编译工具: sudo apt-get install g++-4.6-arm-linux-gnueabihf

5)安装gcc-arm-linux-gnueabihf工具(好像是命令shell)sudo apt-get install gcc-arm-linux-gnueabihf

6)安装uboot工具: sudo apt-get install uboot-mkimage
7)编译内核

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-mrproper

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

    挂载SD卡,将arch/arm/boot中的uImage复制到17M分区覆盖原文件。

    查看SD卡第二分区挂载点名称

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/SD卡第二分区挂载点名称 modules_install

可以在平板电脑上启动了。

加载触摸屏驱动:

modprobe ft5x_ts

点击LCD屏幕,触摸屏可以使用了,但是位置和方向不对。

使用下面的操作校正:

xinput set-prop ft5x_ts "Evdev Axis Inversion" 1 1

xinput set-prop ft5x_ts "Evdev Axis Calibration" 0 1024 0 768

xinput set-prop ft5x_ts "Evdev Axes Swap" 0

就可以了,点击跟踪位置比较准确。

启动时加载ft5x_ts模块:

    编辑 etc/modules 文件

    最后面添加一行

    ft5x_ts

启动时修正触摸指针点:

    在/etc/X11/Xsession.d新建一个文件,例如90x11-xinput,将操作

xinput set-prop ft5x_ts "Evdev Axis Inversion" 1 1

xinput set-prop ft5x_ts "Evdev Axis Calibration" 0 1024 0 768

xinput set-prop ft5x_ts "Evdev Axes Swap" 0

复制到文件中,保存。重启就可以了。

为了使触摸屏易于使用,打开鼠标单击操作:File Manager中,菜单Edit->Preference->Behavior:勾上Open files with sigle click。

----------------------------------------------------------------

使用感觉比linaro的armhf映像文件慢了很多,打开文件夹浏览文件、拖动都慢。难道还有编译选项?

=========================================

系统操作迟钝问题解决。

    使用了新的.config文件,而不是sun4i_defconfig:

http://dryft.net/tmp/config_3036-t2plus.gz

操作:

进入 linux-allwinner目录,编译内核及模块 

    make clean

    make mrproper

下载config_3036-t2plus.gz,解压到linux-allwinner目录,重命名为.config。

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

    挂载SD卡,将arch/arm/boot中的uImage复制到17M分区覆盖原文件。

    查看SD卡第二分区挂载点名称

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/SD卡第二分区挂载点名称 modules_install

    可以在平板电脑上启动了。

    使用感觉操作流畅、窗口显示平滑了,感觉跟linaro的armhf映像文件速度相当了。

    看来还是编译配置问题。

    用float.c验证浮点编译器,选项-mfloat-abi=hard、=softfp、和缺省编译结果相同,=soft则区别很大,完全不用硬浮点运算。说明kernel的缺省编译已经是使用硬浮点了。

    网上还有http://dryft.net/mk802/config_3.0.36-t3.gz配置设置。对比config_3036-t2plus.gz,改动不少,增加了USB 网卡等驱动,(插上9700网卡,果真没有)这个很需要。和sun4i_defconfig对比了一下,t3的配置去掉了IPv6和cpu频率设置等。

    用这个config_3.0.36-t3.gz重新编译内核、模块,安装到SD卡上启动,哈哈,我搞定了哦,哦都有了哦---。流畅、平滑就不用说了,网络也有了,触摸屏也能用了。最关键是具有了系统的内核源码和编译设置,可以自由加载新驱动了,前景不可限量,呵呵,这个前景不可限量。!!!

=================================================

使用平板本机编译内核:(安装编译器、编译时间都很长,不过毕竟平板自己就可以搞定了,不用借助PC了)

    启动平板的终端窗口。

    安装ubuntu gcc开发工具: sudo apt-get install build-essential。自动安装armhf编译器。

    安装uboot工具: sudo apt-get install uboot-mkimage。

    将内核源码装入U盘挂载到平板电脑。打开终端窗口,目录转到内核源码。

    编译内核

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-mrproper

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

    复制uImage

    需要编辑/etc/fstab文件,修改17M分区挂载方式为default。重启平板,复制uImage到17M分区。

    安装模块 。打开终端窗口,目录转到内核源码。

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install。

    重启平板,就好了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值