Tiny6410 + QT5 + tslib移植(Tiny6410一线触摸屏tslib移植)

时间:2021-04-13 12:40:33

    一、概述:

       最近使用友善之臂Tiny6410开发板进行Qt应用程序的开发,由于友善之臂为开发板移植的是Qt4的库,用着略有不爽,而且友善之臂官方提供的文件系统也比较乱。

    所以--作者本着处女座对脏乱差的零容忍态度,做了以下3件事:

    ① 使用Busybox1.26.0重新制作根文件系统,革了友善之臂Tiny6410脏乱差官方旧文件系统的命

    ② 移植了tslib1.4,以支持Tiny6410的一线触摸屏

    ② 对Tiny6410进行了Qt-Embedded-5.6库的移植

    做这3件事的过程中,历经各种艰难险阻,其坎坷不亚于当年大唐圣僧西天取经;故写下这篇博客,希望对后继者有所帮助!

  

    二、准备工作:  

    ① 下载busybox-1.26.0.tar.bz2                                                                    Busybox源码下载地址

    ② 下载qt-everywhren-opensource-src-5.6.0.tar.gz                                    QT-5.6.0源码下载地址

    ③ 下载tslib-1.4.tar.gz                                                                                  tslib-1.4源码下载地址

    ④ 下载友善之臂提供的一线触摸屏的tslib补丁                                               Tiny6410-tslib补丁下载地址

    ⑤ 下载交叉编译器arm-2009q3.tar.bz2 -- ( gcc-v4.4.1版本的交叉链 )          arm交叉工具链下载地址

    ⑥ 准备好友善之臂移植好的内核源码linux-2.6.38-mini6410.tar.gz -- (在 友善A盘/Linux)

    ⑦ 准备好友善之臂移植好的bootloader源码u-boot-mini6410.tar.gz -- (在 友善A盘/Linux)

    ⑧ 准备好友善之臂提供的mktools-20120518.tar.gz -- (在 友善A盘/Linux)

    

    三、移植环境声明:

   ① 宿主机:ubuntu-14.04虚拟机,内核版本为-Linux ubuntu 4.13.0-38-generic,系统自带编译器为-gcc v5.4.0

   ② 交叉编译器:arm-none-linux-gnueabi-gcc v4.4.1

   ③ 硬件:Tiny6410-mlc-256M、友善之臂S70屏

    

    四、开始:

    1. 首先安装交叉编译链arm-none-linux-gnueabi-gcc,这个废话不多说,不会的请自行百度。

    2. 重新编译uboot、kernel,生成uboot.bin 和 zImage,不会的请参考友善之臂《Tiny6410 Linux开发指南》。

    3. 重新制作根文件系统:

        ① 编译busybox,不会的请参考 :    《如何配置及编译busybox》

           (补充-这篇博客最后少了make install,执行完这条命令后则会在当前目录生成 _install目录)

        ② 创建根文件目录,比如我的 : 

                mkdir /home/share/rootfs


        ③ 拷贝生成的busybox生成的_install :    

                cp /xxxx/busybox-1.26.0/_install/*    /home/share/rootfs    -rd

        

        ④ 在rootfs目录下创建根文件系统标准目录:    

                mkdir dev etc home mnt opt proc root sys var

        

        ⑤ 拷贝busybox的示例启动脚本: 

                cp /xxxx/busybox-1.26.0/example/bootfloppy/etc  /home/share/rootfs -rf

       

         ⑥ 修改etc/inittab的内容如下 :    

                ::sysinit:/etc/init.d/rcS

                console::askfirst:-/bin/sh

                ::ctrlaltdel:/bin/umount -a -r

        

         ⑦  修改etc/fstab的内容如下:

                proc     /proc   proc    defaults        0       0

                sysfs     /sys     sysfs    defaults        0       0

                tmpfs   /dev    tmpfs   defaults        0       0

         

         ⑧ 修改etc/init.d/rcS的内容如下:

                #! /bin/sh
                #Mount the filesystem pointed by /etc/fstab.  By Eaon -- 2018-4-17
                /bin/mount -a

                #MK Dev_node autoly.    By Eaon -- 2018-4-17
                mkdir /dev/pts
                mount -t devpts devpts /dev/pts
                echo  /sbin/mdev > /proc/sys/kernel/hotplug

                mdev -s

                #Init the net.  By Eaon -- 2018-4-20
                /sbin/ifconfig lo 127.0.0.1

                source /etc/init.d/eth0-setting

                DEV_ADDR=`cat /sys/class/net/eth0/address`
                if [ "$DEV_ADDR" = "00:00:00:00:00:00" ]; then
                ifconfig eth0 down
                ifconfig eth0 hw ether $MAC
                fi
                ifconfig eth0 $IP netmask $Mask up

                route add default gw $Gateway

                #load machine name.
                /bin/hostname -F /etc/hostname

            

        ⑨ 修改profile的内容如下:

                #explain platform name.      By Eaon -- 2018-4-20
                PS1='[\u@\h \W]\#'
                HOSTNAME=`/bin/hostname`

                export HOSTNAME PS1

       

        ⑩ 在rootfs/etc/下创建hostname文件(  vim etc/hostname ),增加你想要显示的主机名,比如我的EaonSYS:

                vim etc/hostname

                EaonSYS


        ⑪ 在rootfs/etc/下创建passwd文件(  vim etc/passwd ),增加内容如下:

                root:x:0:0:root:/root:/bin/sh

        

        ⑫  解压安装最开始准备的mktools-20120518.tar.gz,不会的请参考友善之臂《Tiny6410 Linux开发指南》。

        

        ⑫ mkubimage-mlc2    ./rootfs    ./EaonRootFS.ubi:

                自己的根文件系统制作完成!

                将uboot、zImage、EaonRootFS.ubi烧进开发板,验证根文件系统是否正确。