一.Uboot制作
1.安装交叉编译器
获取交叉编译工具:
wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz sudo tar -xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt
将交叉编译器加入到系统的环境变量中,编辑文件bashrc,将export PATH=/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:$PATH
添加到文件末尾:
nano ~/.bashrc # 用自己喜欢的编辑器编辑
保存退出,执行下面命令更新环境变量:
source ~/.bashrc
测试交叉编译环境是否安装成功:
arm-linux-gnueabihf-gcc -v
上述用来查看 arm-linux-gcc 的版本,输出信息如下说明交叉编译环境安装成功:
2.下载Uboot
git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current #or git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental cd u-boot make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig #or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig #or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig
若需要自己配置,执行:
make ARCH=arm menuconfig
3.配置环境变量
修改u-boot/include/configs/sun8i.h文件,添加以下内容,注意添加的位置在“#include <configs/sunxi-common.h>”的前边。
#define CONFIG_BOOTCOMMAND "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;" #define CONFIG_BOOTARGS "console=ttyS0,115200 panic=5 mtdparts=tf:1M(uboot),64k(dtb),4M(kernel),-(rootfs) rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0"
4.编译
切到u-boot目录下执行:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
编译完成后,在当前目录下生成了u-boot-sunxi-with-spl.bin,需要烧录到8K偏移处启动。
二.Linux内核编译
1.下载Linux源码
推荐用4.13分支的:
git clone -b zero-4.13.y https://github.com/Lichee-Pi/linux.git
2.配置编译
cd linux make ARCH=arm licheepi_zero_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
根据实际需要配置Linux内核。
编译完成后,zImage在arch/arm/boot/下,驱动模块在out/下,sun8i-v3s-licheepi-zero-dock.dtb在arch/arm/boot/dts/下。
三.buildroot根文件系统制作
1.下载buildroot
首先安装下Linux的头文件:
sudo apt-get install linux-headers-$(uname -r)
获取buildroot:
wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz tar -xvf buildroot-2017.08.tar.gz
2.配置buildroot
执行:
cd buildroot-2017.08/ make menuconfig
首先配置工具链,因为之前开发uboot和内核都用到了自己下载的工具链,所以这里也配置成外部工具链。
- 在本机上外部工具链配置为: /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/
- 工具链前缀是: arm-linux-gnueabihf
- 外部工具链gcc版本:我们使用的是最新的6.3版本
- 外部工具链内核头文件:是在 arm-linux-gnueabi/libc/usr/include/linux/version.h 里读取内核版本信息。本机的版本是4.6
- C库还是选择传统的glibc。需要小体积可以选uclibc(需要自行编译安装)。
- 再在system 设置下主机名,root密码等。
- 最后就是配置自己需要的软件包,在menuconfig中选中即可。
- 有时候下载速度慢,可以复制下载链接,使用迅雷等下载好后,拷贝到dl目录下,会自动识别。
配置图(点击看大图):
基础配置完,可以自己添加需要的包,推荐添加lrzsz、motion、bluez(若不需要蓝牙功能,尽量不要添加这个包,占空间大)。
lrzsz可以方便的在xshell中传输文件,文件直接拖拽到xshell中就可以传到板子上。
3.编译
执行:
make
buildroot编译时间较长,与添加包的有关系还有网络,耐心等待。
编译过程中若报错,一个是少库文件,这个可以直接把错误扔到百度,就会有解决办法,告诉你需要装哪些包;还有一种报错的可能是,内存超限了,可以把虚拟机重启下试试,编译过程会占用很大内存。
编译完生成的rootfs.tar压缩文件在output/images/下。
四.烧写
1.准备TF卡
- 准备一张8G及以上的TF卡,在Ubuntu的软件商店里搜索Gparted软件,下载安装。
- 插入TF卡,用Gparted软件删除TF卡的所有分区,并新建两个分区;
- 建立第一个分区,大小32M,格式为FAT16;
- 建立第二个分区,用尽剩余空间(默认即可),格式为ext4。
查看分区,及分配的名字,执行:
df -h
2.烧录
将u-boot-sunxi-with-spl.bin、zImage、sun8i-v3s-licheepi-zero-dock.dtb拷到同一级文件夹下。
在同一级文件夹下新建rootfs文件夹,将rootfs.tar解压到这个文件夹下。
mkdir rootfs tar -xvf buildroot-2017.08/output/images/rootfs.tar -C rootfs/
先烧写uboot:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 #如果盘符是sdb,则可直接实用这条指令,不是的话将/dev/sdb 改为实际的即可。
把zImage, sun8i-v3s-licheepi-zero-dock.dtb拷贝到第一个分区:
cp zImage /media/zhi/B783-EFB8/ cp sun8i-v3s-licheepi-zero-dock.dtb /media/zhi/B783-EFB8/
将文件系统拷贝到第二分区:
sudo cp -rf rootfs/* /media/zhi/d501f7a6-7e88-4f6a-9991-90484f477642/
全部拷贝完成后,将TF卡弹出,插到开发板上上电运行。
There is significantly a package to learn about this. I think you ensured great factors in features also. Lil Svend Clova
bursa araba
doktorlarimiza burdan ulaşabilirsiniz.
bursanın gülleri
aysegul naber canim?
kapzumalci geldi abiler.
sinek furyasi basladi
harika bu ya
thank you.
kovaci baba geldi
esc mi oda ne bana gelen giden olmadi…
dolandirici thank you.
dolandirici thank you.
bunlar anti seo yapiyor
emremisin nesin paramı geri ver
armutcunun armut sitesini ziyaret edin.
thank you bro.