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为自编译版本
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,可以放到第二分区中运行。
0 条评论