荔枝派 Zero (LicheePi Zero) 编译记录

荔枝派 Zero (LicheePi Zero) 编译记录


依赖

1. 交叉编译器


u-boot

1. 获取并修改源码

git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current

修改以下文件

  • 删除发行版启动指令:u-boot/include/configs/sunxi-common.h搜索#include <config_distro_bootcmd.h>并注释

  • 修改u-boot/include/configs/sunxi-common.h

    #define CONFIG_EXTRA_ENV_SETTINGS \
        CONSOLE_ENV_SETTINGS \
        MEM_LAYOUT_ENV_SETTINGS \
        DFU_ALT_INFO_RAM \
        "fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
        "console=ttyS0,115200\0" \
        BOOTCMD_SUNXI_COMPAT \
        BOOTENV
    

    删除最后一行BOOTENV

  • 修改u-boot/include/configs/sun8i.h 添加启动参数

    #undef CONFIG_BOOTCOMMAND
    
    #define CONFIG_BOOTCOMMAND   \
        "load mmc 0:1 0x41000000 zImage; "  \
        "load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero.dtb; " \
        "bootz 0x41000000 - 0x41800000;"
    
    #define CONFIG_BOOTARGS      \
        "console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 " \
        "earlyprintk rw  vt.global_cursor_default=0"
    

2. 编译

cd u-boot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

完成后生成文件u-boot/u-boot-sunxi-with-spl.bin.


Kernel

参考:http://zero.lichee.pro/系统开发/kernel_build.html

1. 修改并编译

git clone https://github.com/Lichee-Pi/linux.git
cd linux
make ARCH=arm licheepi_zero_defconfig
make ARCH=arm menuconfig

# 修改 原本为 <M>   Lowlevel LCD controls
    Device Drivers  ---> 
        Graphics support  ---> 
            -*- Backlight & LCD device support  --->
                <*>   Lowlevel LCD controls

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

编译完成后,设备树位于linux/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb
内核位于linux/arch/arm/boot/zImage


rootfs

参考:http://zero.lichee.pro/系统开发/buildroot.html

1. 下载源码

wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz

2. 修改

cd buildroot-2017.08/
make menuconfig
  • Target options --->

    Target Architecture (ARM (little endian))  ---> 
    Target Binary Format (ELF)  ---> 
    Target Architecture Variant (cortex-A7)  --->
    Target ABI (EABIhf)  ---> 
    Floating point strategy (VFPv4-D16)  --->
    ARM instruction set (ARM)  --->  
    
  • Toolchain --->

    • 使用外部编译链 Toolchain type (External toolchain) --->
    • 自定义编译器 Toolchain (Custom toolchain) --->
    • 使用预安装好的编译器 Toolchain origin (Pre-installed toolchain) --->
    • 指定预安装编译器根目录 (/home/socbis/LicheePi/gcc) Toolchain path
    • 指定编译器前缀 (arm-linux-gnueabihf) Toolchain prefix
    • 指定编译器版本 External toolchain gcc version (6.x) --->
    • 没看懂,使用4.10.x时正确 External toolchain kernel headers series (4.10.x) --->
    • 指定C库 External toolchain C library (glibc/eglibc) --->

make后生成 output/images/rootfs.tar


制作镜像并启动

参考:https://blog.csdn.net/zhvngchvng/article/details/108042455

1. 格式化SD

准备空SD卡一张,做以下分区。< !!! 请使用 fdisk -l 确认设备的容量,盘符 >

root@socbis:/home/socbis/LicheePi/u-boot# fdisk /dev/sdb 

# 略...

命令(输入 m 获取帮助): n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (1-4, 默认  1): 
第一个扇区 (2048-31116287, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-31116287, 默认 31116287): +32M

创建了一个新分区 1,类型为“Linux”,大小为 32 MiB。
分区 #1 包含一个 vfat 签名。

您想移除该签名吗? 是[Y]/[N]: n

命令(输入 m 获取帮助): n
分区类型
   p   主分区 (1个主分区,0个扩展分区,3空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (2-4, 默认  2): 
第一个扇区 (67584-31116287, 默认 67584): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (67584-31116287, 默认 31116287): 

创建了一个新分区 2,类型为“Linux”,大小为 14.8 GiB。

命令(输入 m 获取帮助): w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

root@socbis:/home/socbis/LicheePi/u-boot# fdisk -l
...

设备       启动  起点     末尾     扇区  大小 Id 类型
/dev/sdb1        2048    67583    65536   32M 83 Linux
/dev/sdb2       67584 31116287 31048704 14.8G 83 Linux

格式化两个新分区:

root@socbis:/home/socbis/LicheePi/u-boot# mkfs.vfat /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
root@socbis:/home/socbis/LicheePi/u-boot# mkfs.ext4 /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)

2. 写入系统

  • u-boot
    sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

  • kernel

    sudo mount /dev/sdb1 /mnt/temp
    cd <linux_kernel__root_dir>
    sudo cp arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb /mnt/temp
    sudo cp arch/arm/boot/zImage /mnt/temp
    sudo umount /mnt/temp
    
  • rootfs

    sudo mount /dev/sdb2 /mnt/temp
    cd <buildroot_root_dir>
    cd output/images/
    tar xvf rootfs.tar
    rm rootfs.tar
    sudo cp * /mnt/temp/ -frd
    sudo umount /mnt/temp
    

    在我尝试将rootfs.tar复制到 /mnt/temp 后再进行 tar xvf rootfs.tar 时发现所以链接文件会在解压后失效,原因不知。

插入SD到LicheePi并启动,完成

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值