嵌入式Linux--V3s编译主线Linux、Uboot

一、前言

总结:玩了这么久,还是主线Linux好玩一点。

在这里插入图片描述

1.1 编译方法:

方法一:Makefile文件配置编译器和架构

内核根目录下的Makefile文件364行修改默认编译器,可以直接用make编译

# ARCH		?= $(SUBARCH)
ARCH		?= arm
CROSS_COMPILE	?= arm-linux-gnueabihf-
cd linux
make licheepi_zero_defconfig
make menuconfig   #add bluethooth, etc.
make -j16
make -j16 INSTALL_MOD_PATH=out modules
make -j16 INSTALL_MOD_PATH=out modules_install
# 修改了设备树文件后编译
make dtbs

方法二:编译命令行中指定编译器和架构

  • 清除:make clean

  • make ARCH=arm licheepi_zero_defconfig

  • time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

  • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

1.2 Boot分区文件

二、编译

2.1 制作SD卡

  • Windows系统下使用软件SDFormatter进行快速格式化卡
  • Ubuntu系统下使用软件GParted进行分区
    • 卸载所有的现有分区
    • 删除所有分区,使其整张卡都是raw区域
    • 创建第一个区域boot,格式为fat16,大小一般预留个10MiB ~ 16MiB用来存放Kernel镜像和dtb,这个分区前需要预留一个1MiB~10MiB的无文件格式的区域(RAW区域)用来存放uboot
    • 创建第二个分区rootfs,格式ext4,大小就是剩余的所有空间,该分区前无需预留空间。

2.2 编译U-Boot

  • 清除:make clean
  • 配置编译文件(我的屏幕是5寸):make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
  • 编译:time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log

加了time可以统计编译的时间

2.2.1 烧录U-Boot

 在制作SD卡的时候,BOOT分区前面需要空出一部分空间来存放Uboot(这部分没有文件系统格式是raw区域)。

  • 使用dd命令将bin文件烧录到SD卡的开始位置(多运行几次!):sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdx bs=1024 seek=8

  • sync && eject /dev/sdx

  • /dev/sdx请替换为实际的TF卡设备文件名。

sync命令可以确保数据成功写到TF卡中,eject命令用于弹出TF卡。
注意:因为这个u-boot-sunxi-with-spl.bin文件比较大,所以在设置SD文件分区时需要在boot分区前预留至少3MiB的空间用来存放U-Boot文件。

2.3 编译Kernel

  • 清除:make clean

  • make ARCH=arm licheepi_zero_defconfig

  • time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

  • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

加了time可以统计编译的时间

2.3.1 拷贝kernel和dtb文件到boot分区

  • 拷贝kernel镜像文件到boot分区:sudo cp arch/arm/boot/zImage /media/liefyuan/BOOT/
  • 拷贝dtb文件到boot分区:sudo cp arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb /media/liefyuan/BOOT/

2.4 编译文件系统

我有一个编译好的–祖传的纯净的文件系统,一直在用这个。

2.4.1 拷贝文件系统到rootfs分区

备份原有的SD卡里面的文件系统

  • 进入SD卡文件系统分区的目录下(/media/liefyuan/rootfs)在目录下进行打包操作命令打包:sudo tar -zcvf rootfs.tar.gz *

解压现有的文件系统压缩包到rootfs分区

  • 将这个压缩包解压到指定的目录(解压到SD卡的文件系统分区):sudo tar -zxvf rootfs.tar.gz -C /media/liefyuan/rootfs/

2.4.2 文件系统中添加Qt(图形化界面)

 简单的介绍一下:图形化接口是一门大学问,要想使用Qt就得使用tslib。

三、运行

3.1 Uboot上电后配置env

设置bootarg和bootcmd
在U-Boot命令行中设置:

  • 配置串口打印信息:setenv bootargs 'console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'

  • 配置屏幕显示和串口同时打印信息:setenv bootargs 'console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'

  • 配置启动相关的一些信息:setenv bootcmd 'setenv bootm_boot_mode sec; load mmc 0:1 0x41000000 zImage; load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; bootz 0x41000000 - 0x41800000;'

  • 最后保护好参数:saveenv

四、测试相关的

测试屏幕

cat /dev/fb0 > sreensnap
ls -l sreensnap -rw-r--r-- 1    wsw wsw 6291456 Jan 27 21:30 sreensnap

我们得到了一个恰好6M的文件,再做下面的操作:
代码:

clear /*清楚屏幕的输出*/ 
cat sreensnap > /dev/fb0 
cat /dev/urandom > /dev/fb0
cat /dev/zero > /dev/fb0

使用第一条命令可以让屏幕出现雪花

使用第二条命令可以让屏幕变黑

说明屏幕移植成功

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值