Licheepi zero plus sd启动指南


title : Licheepi zero plus sd启动指南


手动制作Licheepi zero plus sd的启动镜像分五步:
第一步:安装交叉编译工具链。
第二步:配置编译u-boot
第三步:配置编译linux
第四步:配置编译buildroot
第五步:制作sd启动盘

安装交叉编译器

网盘地址:http://pan.baidu.com/s/1hsf22fq
国外用户:https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz

wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/
vim /etc/bash.bashrc
# add: PATH="$PATH:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin"
source /etc/bash.bashrc
arm-linux-gnueabihf-gcc -v
sudo apt-get install device-tree-compiler

下载编译Uboot

git clone https://github.com/Lichee-Pi/u-boot.git
#git clone https://github.com/Lichee-Pi/u-boot.git -b s3-l0p-exp
cd u-boot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Lichee_Zero_Plus_defconfig
make ARCH=arm menuconfig
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log

在执行time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log命令前也就是在编译之前,我们需要添加u-boot命令和传递内核命令, 使u-boot可以直接从tf卡启动,并传递命令给linux内核:
在make ARCH=arm menuconfig界面选中第一项:

[*]Enable boot arguments
() Boot arguments

Boot arguments选项中填入如下命令:

console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw rootfstype=ext4 vt.global_cursor_default=0

在make ARCH=arm menuconfig界面选中第二项:

[*]Enable a default value for bootcmd
()bootcmd value

bootcmd value选项中填入以下命令:

setenv bootm_boot_mode sec;load mmc 0:1 0x41000000 zImage;load mmc 0:1 0x41800000 sun8i-s3-lichee-zero-plus.dtb;bootz 0x41000000 - 0x41800000;

    环境命令解析:
    :   -   setenv bootm_boot_mode sec; //初始化boot模式
        -   load mmc 0:1 0x41000000 zImage
            //从SD卡的boot分区内拉取zImage linux镜像到内存0x41000000处
        -   load mmc 0:1 0x41800000 sun8i-s3-lichee-zero-plus.dtb;
            //从SD卡的boot分区内拉取sun8i-s3-lichee-zero-plus.dtb到内存0x41000000处
        -   bootz 0x41000000 (内核地址)- 0x41800000(dtb地址) 启动内核

    启动参数解析
    :   -   console=ttyS0,115200 earlyprintk panic=5 rootwait
            //在串口0上输出信息
        -   root=/dev/mmcblk0p2 earlyprintk rw  vt.global_cursor_default=0
            //mmcblk0p2是设备名,后面是分区大小,名字,读写属性。
        -   //上述命令是指从SD卡启动,根文件系统是ext4

输入指令:

time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log

开始编译。

编译完成后,在当前目录下生成了u-boot-sunxi-with-spl.bin,可以烧录到sd卡8K偏移处启动。

Kernel编译

下载编译linux源码

(默认是zero-4.10.y分支),全部拉区可能比较大,可以选用单分支拉取:

git clone https://github.com/Lichee-Pi/linux.git  

#git clone https://github.com/Lichee-Pi/linux.git -b s3-5.3-rc2  

cd linux  

make ARCH=arm licheepi_zero_plus_defconfig  

make ARCH=arm menuconfig   #add bluethooth, etc.  

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

#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules  

#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules_install  

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

编译完成后,zImage在arch/arm/boot/下,驱动模块在out/下

rootfs编译

buildroot可用于构建小型的linux根文件系统。

大小最小可低至2M,与内核一起可以放入最小8M的spi flash中。

buildroot中可以方便地加入第三方软件包(其实已经内置了很多),省去了手工交叉编译的烦恼。

美中不足的是不支持包管理系统,没有gcc等。

下载安装

首先安装一些依赖,比如linux头文件:

apt-get install linux-headers-$(uname -r)

然后下载安装:

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

配置

首先配置工具链,因为之前开发uboot和内核都用到了自己下载的工具链,所以这里也配置成外部工具链。

  • 1 在本机上外部工具链配置为: /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/
  • 2 工具链前缀是: arm-linux-gnueabihf
  • 3 外部工具链gcc版本:我们使用的是最新的6.3版本
  • 4 外部工具链内核头文件:是在 arm-linux-gnueabi/libc/usr/include/linux/version.h 里读取内核版本信息。本机的版本是4.6
  • 5 C库还是选择传统的glibc。需要小体积可以选uclibc(需要自行编译安装)。
  • 6 再在system 设置下主机名,root密码等。
  • 7 最后就是配置自己需要的软件包,在menuconfig中选中即可。
  • 8 有时候下载速度慢,可以复制下载链接,使用迅雷等下载好后,拷贝到dl目录下,会自动识别。

编译

make menuconfig


make

$ 有时候构建会出现莫名其妙的错误,make clean下会ok?

编译完成后,会生成 output/images/rootfs.tar,此即所需的根文件系统

默认失能串口登录,需要修改 /etc/inittab :

ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL

烧录

插上SD卡

用分区软件进行分区

将uboot引导文件写入SD相应位置

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

将linux镜像和设备树文件复制进boot分区

将我们生成的根文件包解压到主分区

弹出SD卡,系统盘启动完成。

插卡起飞!

串口登陆

这里要留意下,板子用的是串口0,不是串口I1,板子上串口1和串口2放在一起,之前一直忽略了串口0,导致一直以为设备没启动

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值