当前位置:首页 > 技术 > LINUX > 正文内容

制作荔枝派Zero开发板(全志V3s) TF/SD卡启动盘

Watrt7年前 (2019-07-04)LINUX90501

0. 前言

近几天买了一块荔枝派0开发板,以及官方配的480×272的屏幕。让我记录一下入坑与采坑过程。

1. u-boot的编译

git clone https://github.com/Lichee-Pi/u-boot -b v3s-current
cd u-boot
make ARCH=arm LicheePi_Zero_480x272LCD_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

基本来说,u-boot用官方的东西编译是没有什么坑的。编译完成的东西可以在u-boot的根目录找到,文件名是u-boot-sunxi-with-spl.bin

// todo:
// - 使用Mainline的U-Boot进行编译
// - 尝试SPI Flash的支持
// - 尝试其他屏幕的适配
// - 尝试SPI Nand的支持
// - 其他可调整参数的调整

2. Linux的编译

git clone https://github.com/Lichee-Pi/linux -b zero-4.14.y
cd linux
make ARCH=arm licheepi_zero_defconfig
make menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

官方的Linux其实坑就稍微有点点坑了。首先就是花屏的问题,如果你就按上面的代码直接编译的话,那么是铁定会花屏的。LicheePi官方文档的GPU/DRM驱动页面最下面有一行字,说明如果你要使用屏幕的话,那么需要把默认的framebuffer失能。打开arch/arm/boot/dts/sun8i-v3s-licheepi-zero-with-lcd.dtsi,在尾部加上
/delete-node/ &simplefb_lcd;
这么一行就可以失能Framebuffer了。对于4.14kernel,还有一个问题就是屏幕背光不会亮,这时需要打开上面那个文件,将pwm和backlight两节注释掉,同时注释掉panel/port@0/backlight一行。

编译完成的东西在arch/arm/boot/zImage和arch/arm/boot/dts/sun8i-v3s-licheepi-zero*.dtb。

// todo:
// - 升级到最新的Kernel
// - 其他屏幕的适配
// - 其他可调整参数的调整

3. Buildroot的编译

首先下载并解压Buildroot

cd buildroot
make menuconfig
make

menuconfig里面需要修改一些配置,其余选项看着办。

Target options -->
Target Arch = ARM(little endian)
Target Arch Variant = cortex-A7
Floating point strategy = VFPv4[存疑]
Toolchain -->
Toolchain type = (External toolchain)

输出文件在output/images/rootfs.tar。基本来说没有什么太大的坑。

// todo:
// - 其他软件包调整
// - 增加自定义软件包
// - 变更GCC Toolchain为自编译版本

// /etc/inittab  加上下面代码否则串口无法登陆 

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

4. 镜像的打包与其他

U-Boot 需要写在启动文件的8k offset处。
U-Boot 会在你的第一启动分区(fat32/exfat)中寻找boot.scr文件,作为启动参数选项。在这个文件中,可以定义一些给内核传递的参数,以及文件加载及启动的命令选项。通常来说,对于Zero,其启动命令可以为:

setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw
load mmc 0:1 0x41000000 zImage
load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-with-480x272-lcd.dtb
bootz 0x41000000 - 0x41800000

根据此文件,我们易知还需要将编译好的dtb和zImage放到第一分区中。至于rootfs.tar,可以放到第二分区中运行。

4. 打包详细操作

  1. 先编译出u-boot, Linux, dtb 文件, 用buildroot编译出根文件系统.

  2. 烧录TF卡,打开gparted

1) 删除TF卡所有分区
2) 将uboot写入到sd卡8k偏移处。
    sudo dd if=u-boot-sunxi-with-spl_480800.bin of=/dev/sdb bs=1024 seek=8
3) 建立第一个分区,大小32M(可以随意填写), 格式FAT16, 把zImage, sun8i-v3s-licheepi-zero-dock.dtb拷贝到 这个分区
4) 建立第二个分区,用尽剩余空间,格式ext4, 把buildroot产生的rootfs.tar解压到该分区根目录

3. TF卡插入荔枝派Zero开发板, 插入串口, 启动。


修改 include/configs/sun8i.h

#define CONFIG_BOOTARGS        "console=ttyS0,115200 panic=5 rootwait mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,6M(kernel)ro,-(rootfs) root=/dev/mmcblk0p2 earlyprintk rw"
#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; "


打赏 支付宝打赏 微信打赏

相关文章

使用buildroot构建根文件系统

使用buildroot构建根文件系统

使用buildroot构建根文件系统buildroot可用于构建小型的linux根文件系统。大小最小可低至2M,与内核一起可以放入最小8M的spi flash中。buildroot中可以方便地加入第三方软件包(其实已经内置了很多),省去了手工交叉编译的烦恼。下载安装首先安装一些依赖,比如linux头文件:apt-get install linux-headers-$(uname -r)然后下载安装:wget https://buildroot.org/do...

关于CentOS 下 httpd 修改默认的目录后 403 错误的 解决

关于CentOS 下 httpd 修改默认的目录后 403 错误的 解决

step 1 : 首先改你要设置的目录权限       chmod -R 755 /home/html          -------------->>  /home/html   是你存放你的页面的目录   这里我顺便记录下关于selinux 的命令吧    getenforce=>查看 selinux的状态&nbs...

LINUX 使用sendmail邮件备份

LINUX 使用sendmail邮件备份

首先安装:sudo apt-get install sendmail然后在终端可以使用mail来发邮件echo "ESP32固件"|mail -s "esp32" -A "./fw.bin" -r "bak@xxx.com" xb100@qq.com注意很有可能收到的邮件在垃圾箱里面。把发件地址加到白 名单中...

Linux没有最小只有更小----迷你Linux版本大集合

Linux没有最小只有更小----迷你Linux版本大集合

    自从去年到现在已经收集了上百种版本的Linux和Unix,至于Unix就不想说了,没有Linux的功底是很难驾驭Unix的,我在这里只把小于360M的Linux以及一些非Linux但是很像Linux的版本也发布一下,我本人喜欢安静,如果你想要这些迷你版本的Linux光盘的话,建议去官网下载就OK了。英语不行的话随时带个字典。有些没有桌面,想知道哪些没有桌面的话请自己网上查资料!下面就是绝大部分小于361M的Linux及其非Linux名单,参考时间为...

[转]《保姆级教程》全志F1C100S/F1C200S spi-flash 启动全流程适配烧录及踩坑指南

[转]《保姆级教程》全志F1C100S/F1C200S spi-flash 启动全流程适配烧录及踩坑指南

转自哇酷网=丨晋丨通过参考荔枝派nano官方和论坛大佬的帖子,总结了烧录 spi-flash 启动的方法。通过搜寻资料,把其中有错误或者做了多余的操作的步骤做了修正,以免大家再次踩坑,耗费青春。以下包括 uboot、kernel、buildroot 和 烧录的详细步骤和需要注意的问题,尽量精简方法,以期容易上手和理解。各种配置项也做了详细注释,要知其然,也知其所以然。最理想的状态应该是是:有的坑,踩的人多了,也便没有了坑。论坛不太好排版,有需要的也可以去我的博客看:P:全志F1C100S/F1C...

f1c100s编译启动所需的uboot,kernel,rootfs

f1c100s编译启动所需的uboot,kernel,rootfs

 https://github.com/Icenowy/linux.git 有f1c100s-480272lcd-test和f1c100s分支, 然后自己手动修复一个 USB 问题,驱动就比较全了https://github.com/Lichee-Pi/linux.git 有nano-4.14-exp和nano-5.2-flash分支,用哪个合适个人画了块没有连接任何其他模块的F1C100S开发板,没有链接任何外设,本文是编译所有启动所需的三大件。(只要编...

荔枝派Nano的linux5.2版本主线下载及编译(支持USB设备与主机模式)

荔枝派Nano的linux5.2版本主线下载及编译(支持USB设备与主机模式)

安装必须的库:sudo apt-get install gcc make cmake rsync wget unzip build-essential git bc swig libncurses-dev libpython3-dev libssl-dev python3-distutils android-tools-mkbo...

从Ubuntu-base构建ubuntu rootfs系统

从Ubuntu-base构建ubuntu rootfs系统

1.介绍ubuntu-base 是Ubuntu官方构建的ubuntu最小文件系统,包含debain软件包管理器,基础包大小通常只有几十兆,其背后有整个ubuntu软件源支持,ubuntu软件一般稳定性比较好,基于ubuntu-base按需安装Linux软件,深度可定制…,常用于嵌入式rootfs构建。嵌入式常见的几种文件系统构建方法:busybox、yocto、builroot,我觉得它们都不如Ubuntu方便,强大的包管系统,有强大的社区支持,可以直接apt-get install来安装新软件...