一、概述:
最近使用友善之臂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烧进开发板,验证根文件系统是否正确。