Day01 Uboot编译

一. 安装环境

  1. 安装依赖

sudo apt-get install gcc make cmake rsync wget unzip build-essential git bc swig libncurses5-dev libpython3-dev libssl-dev python3-distutils android-tools-mkbootimg -y

   2. 安装编译器

wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
sudo cp -r ./gcc-linaro-7.2.1-201711-x86_64_arm-linux-gnueabi /opt/
sudo vim /etc/bash.bashrc
// 添加路径
PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"
// 路径生效
source /etc/bash.bashrc

二、 编译uboot

  1. 获取uboot

sudo apt-get install git
git clone https://gitee.com/LicheePiNano/u-boot.git
cd u-boot

# 查看分支
git branch -a
# 切换到 Nano 分支
git checkout nano-lcd800480

  2. 配置uboot

# 此处告知make采用arm-linux-gnueabi下的所有交叉编译工具,目标架构为Arm,设定各项默认配置为 nano 的spiflash支持版
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig

# 若不带spi-flash的板子,请换成 licheepi_nano_defconfig

# 进行可视化配置
make ARCH=arm menuconfig

# 配置Boot arguments(NEW)
console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw

# 配置bootcmd value
load mmc 0:1 0x80C00000 suniv-f1c100s-licheepi-nano.dtb;load mmc 0:1 0x80008000 zImage;bootz 0x80008000 - 0x80C00000;

  3. 解决重定义

# 注释掉 BOOTCOMMAND
vim include/configs/suniv.h 

  4. 编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

  5. 最后得到u-boot-sunxi-with-spl.bin

三、编译Linux

  1. 获取linux

git clone --depth=1 -b master https://gitee.com/LicheePiNano/Linux.git

make ARCH=arm f1c100s_nano_linux_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

  2. 编译完成后得到目标文件

内核img文件:./arch/arm/boot/zImage
设备树dtb文件:./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb

四、编译rootfs

  1. 获取rootfs

# 安装依赖
apt-get install linux-headers-$(uname -r)
wget https://buildroot.org/downloads/buildroot-2021.02.4.tar.gz
tar xvf buildroot-2021.02.4.tar.gz
cd buildroot-2021.02.4/
make menuconfig

 

五、制作SD启动

  1. SD分区

# 安装gparted分区工具
sudo apt-get install gparted

  2.  创建分区

# 如果有分区先卸载--》删除--》然后确认
# 创建第一分区BOOT
之前空余空间:1M
新大小:32M
文件系统:fat16(一定要是fat16)
卷标:BOOT

# 创建第二分区rootfs
之前空余空间:0
新大小:200M
文件系统:ext4
卷标:rootfs

  3. 写入固件:

    1. 写入u-boot

# uboot起始地址从SDCard的8K偏移地址开始写
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8
#写完以后一定要sync
sync

    2. 写入linux和dtb

# 将linux和设备写入到SDCard的第一分区BOOT分区
sudo mount /dev/sdb1 /mnt/
sudo cp zImage /mnt/
sync
sudo cp suniv-f1c100s-licheepi-nano.dtb  /mnt/ 
sync
sudo umount /dev/sdb1

  3.至此应该可以正常启动,将SDCard插入licheepi

   从面可以看到uboot正常启动,linux也可以启动了,但是找不到文件系统,因此这里挂载失败;

六、编译rootfs

  1. 获取buildroot

# 安装依赖
apt-get install linux-headers-$(uname -r)

wget https://buildroot.org/downloads/buildroot-2021.02.4.tar.gz
tar xvf buildroot-2021.02.4.tar.gz
cd buildroot-2021.02.4/
make menuconfig

  2. 配置buildroot

 

 

 

参考:

  初见 - Sipeed Wiki

  

 

  

posted @ 2024-08-23 00:38  笑不出花的旦旦  阅读(3)  评论(0编辑  收藏  举报