JZ2440(V3)移植QT5.6
更新于2018.10.06 21:10
本文严禁转载
文章信息
撰写日期 | 2018.10.06 |
---|---|
完稿日期 | 暂未完成 |
最近维护 | 2018.10.07 |
本文作者 | multimicro |
开发环境
环境说明 | 详细信息 | 备注信息 |
---|---|---|
操作系统 | Ubuntu 18.04.1 LTS | 官网地址 | 清华镜像 |
操作系统内核版本 | 4.15.0-36-generic | |
编译器 | arm-linux-gcc-4.4.3 | 下载地址 |
编译器路径 | /usr/local/arm/gcc-4.4.3/bin | |
u-boot版本 | u-boot-2014.04.01 | 官网地址 | 百度网盘 |
kernel版本 | linux-3.4.2 | 官网地址 |
busybox版本 | busybox-1.22.1 | 官网地址 |
tslib版本 | tslib-1.4 | 官网地址 |
Qt版本 | qt-everywhere-opensource-src-5.6.0 | 官网地址 |
友情提示
本文所用的编译器全部为指定路径下的绝对路径,并没有把编译器配入环境变量中去
1.编译u-boot
cd u-boot-2012.04.01/
patch -p1 <../u-boot-2012.04.01_100ask.patch
我修改了内核分区大小,将默认的2m改为了4m(打完补丁在进行以以下操作)
vim include/configs/smdk2440.h
这是我改后的文件
保存退出后执行以下命令
make CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- smdk2440_config
make CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- -j8
编译完成后通过ls
命令就可以看到u-boot.bin
文件了
若提示arm-linux-gcc command not found:
- 指定的编译器绝对路径错误
- 你的Linux系统为64位的,编译器为32位的,参考这里:https://blog.****.net/multimicro/article/details/82665972
- 未完待定
2.编译内核
cd linux-3.4.2/
patch -p1 <../linux-3.4.2_100ask.patch
cp config_ok .config
接下来把内核所在分区修改为4m
vim arch/arm/mach-s3c24xx/common-smdk.c
下图是我修过后的文件
然后在执行以下命令
make menuconfig CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- ARCH=arm -j8
make uImage CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- ARCH=arm -j8
内核完成
3. 烧写u-boot
在windows下通过openJTAG下载吧,或者进Nor-Flash中用老版本的u-boot下载,这个就需要借助DNW工具了
启动新加载的u-boot
通过mtdparts
命令可以看出经过u-boot划分后的flash分区,其中kernel已经为修改后的4M大小
4. 烧写kernel
4.1 tftp和nand flash命令简介
- //通过tftp协议将tftp共享文件夹里面的uImage文件下载到板内地址为0x30000000的SDRAM内存中
tftp 0x30000000 uImage - //nand erase [clean] [off size] 其下命令表示擦除nand flash内存中偏移0x60000(off)地址后的大小为0x00400000(size)的flash位置空间 。[clean] 中[ ] 表示其中的命令是可选的
nand erase 0x60000 0x00400000
//下面这种方法不用考虑偏移量offset和擦除大小size,当然,kernel这个名字是要在u-boot中通过mtdparts命令获取的,见上图
nand erase.part kernel - //其下命令表示将SDRAM中存放在地址为0x30000000地方的文件下载到flash偏移地址为0x60000的大小为$filesize中去
//偏移量0x60000也是通过mtdparts命令获取得知的,见上图
nand write.jffs2 0x30000000 0x60000 $filesize
4.2 用tftp命令烧写kernel
tftp准备工作参考这篇文章:https://blog.****.net/multimicro/article/details/82288535 ,烧写工作看这个就行了
tftp 0x30000000 uImage
nand erase.part kernel
nand write.jffs2 0x30000000 0x60000 $filesize
下面第一个蓝色框框里面的数据和上图红色框框里的数据是一样的哦
然后输入boot
启动内核
若内核启动乱码,则重启开发板,在u-boot命令行中输入
set bootargs console=ttySAC0,115200
save
然后输入boot
启动即可
启动内核后的打印信息:
没有修改前的2M分区内核
修改后的4M分区内核
5.制作busybox
cd busybox-1.22.1/
make menuconfig CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- ARCH=arm -j8
make CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- ARCH=arm -j8
make CROSS_COMPILE=/usr/local/arm/gcc-4.4.3/bin/arm-linux- ARCH=arm -j8 install COFIG_PREFIX=/home/china/work/nfsroot/busybox
其余暂时参考:https://blog.****.net/lizuobin2/article/details/52673494
6.制作tslib(touch screen lib)
首先安装
sudo apt-get install autoconf automake libtool
然后(里面的 CC= 和 CXX= 我指定的是编译器的指定路径,所以make的时候就不需要指定了)
cd tslib/
./autogen.sh
./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/usr/local/arm/gcc-4.4.3/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm/gcc-4.4.3/bin/arm-none-linux-gnueabi-g++ -prefix=/home/china/work/jz2440/qt/tslib_root
make
make install -j8
其余配置步骤暂时参考:https://blog.****.net/lizuobin2/article/details/52673494
7. 制作并烧写yaffs2文件系统
7.1 制作yaffs2文件系统
7.1.2 准备mkyaffs2image工具
- 首先需要yaffs2制作工具
mkyaffs2image
此文件在韦东山提供的JZ2440配套光盘A盘里面的tools文件夹下有 - 或者来到B盘这里
在此文件夹路径下终端make
一下,也能出来这个工具
Tips: 执行make clean
生成的文件就消失了
把这个mkyaffs2image工具复制到/usr/local/bin/
目录下,这样就可以直接在终端中使用此工具了
sudo cp mkyaffs2image /usr/local/bin/
7.1.2 用mkyaffs2image 制作后缀为.yaffs2的文件系统
找到制作好的busybox文件夹,这个文件夹是本文第5步下的busybox安装位置
7.2 烧写文件系统yaffs2
tftp 0x30000000 busybox.yaffs2
nand erase.part rootfs
nand write.yaffs 0x30000000 0x460000 $filesize
通过u-boot中的mtdparts
命令打印出的信息,设置offset信息哦
烧写yaffs2文件系统
此时直接输入boot
启动会出现以下信息“root=”下没有挂载文件系统,看下图可知文件系统分区在mtdblock3
地方
重启开发板,在u-boot中执行以下命令挂载文件系统所在分区:
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
save
boot
可以看出挂载后的系统了
至此,文件系统烧写并挂载成功!