手把手教你为全志V3s荔枝派Zero编译主线Uboot和Linux内核(附常见错误解决)

张开发
2026/4/20 21:31:28 15 分钟阅读

分享文章

手把手教你为全志V3s荔枝派Zero编译主线Uboot和Linux内核(附常见错误解决)
全志V3s荔枝派Zero主线开发实战从Uboot到Linux内核的深度编译指南荔枝派Zero作为一款基于全志V3s芯片的嵌入式开发板凭借其丰富的接口和适中的性能在创客和嵌入式开发者中广受欢迎。然而官方提供的开发环境往往版本陈旧限制了开发者使用最新内核特性和社区支持。本文将带你从零开始构建一个基于主线Uboot和Linux内核的开发环境彻底摆脱官方SDK的限制。1. 开发环境准备与工具链配置在开始编译之前我们需要搭建一个稳定高效的交叉编译环境。推荐使用Ubuntu 20.04 LTS作为开发主机系统它不仅提供了良好的软件兼容性还能获得长期支持更新。首先安装基础依赖包sudo apt update sudo apt install -y build-essential bison flex libssl-dev libncurses5-dev \ u-boot-tools device-tree-compiler gcc-arm-linux-gnueabihf bc接下来配置交叉编译工具链。对于全志V3s这款Cortex-A7架构的芯片我们需要arm-linux-gnueabihf工具链wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz export CROSS_COMPILE$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-提示将工具链路径添加到.bashrc中可避免每次重新设置echo export PATH$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin:$PATH ~/.bashrc验证工具链是否安装成功${CROSS_COMPILE}gcc --version正常输出应显示gcc版本为7.5.0。2. 获取与编译主线Uboot主线Uboot为荔枝派Zero提供了更好的兼容性和更新支持。我们首先从官方仓库获取源码git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current cd u-boot配置Uboot前需要确定荔枝派Zero的具体硬件配置。常见的有两种版本硬件特性SPI Flash版本SD卡版本存储介质8-32MB SPI Nor FlashMicro SD卡启动方式SPI启动SD卡启动设备树文件sun8i-v3s-lichee-zero-spiflash.dtssun8i-v3s-lichee-zero.dts对于大多数开发者SD卡版本更为方便调试我们以此为例进行配置make ARCHarm licheepi_zero_defconfig make ARCHarm menuconfig在menuconfig界面中有几个关键配置需要检查Boot options→Boot arguments确保包含consolettyS0,115200ARM architecture→Enable L2 cache必须启用Device Tree Control→Device Tree for board确认是sun8i-v3s-lichee-zero开始编译make ARCHarm -j$(nproc)编译完成后生成的u-boot-sunxi-with-spl.bin文件就是我们需要的镜像。将其写入SD卡sudo dd ifu-boot-sunxi-with-spl.bin of/dev/sdX bs1024 seek8注意/dev/sdX应替换为实际的SD卡设备名使用lsblk命令确认3. Linux主线内核编译与定制主线Linux内核为荔枝派Zero带来了更新的驱动支持和安全补丁。获取内核源码git clone https://github.com/Lichee-Pi/linux.git -b zero-5.2.y cd linux配置内核前我们需要准备适合V3s的默认配置make ARCHarm licheepi_zero_defconfig make ARCHarm menuconfig在内核配置中以下几个选项需要特别注意System Type→Allwinner V3s family必须选中Device Drivers→Graphics support→DRM Support for Allwinner A10 Display Engine启用Device Drivers→USB support→DesignWare USB2 DRD Core Support启用File systems→DOS/FAT/NT Filesystems全部启用支持SD卡文件系统开始内核编译make ARCHarm -j$(nproc) zImage dtbs modules编译完成后关键文件位于arch/arm/boot/zImage压缩内核镜像arch/arm/boot/dts/sun8i-v3s-lichee-zero.dtb设备树二进制文件4. 构建根文件系统与系统部署有了内核和Uboot我们还需要一个可用的根文件系统。这里我们使用Debian作为基础wget https://rcn-ee.com/rootfs/eewiki/minfs/debian-10.3-minimal-armhf-2020-02-10.tar.xz mkdir rootfs sudo tar xf debian-10.3-minimal-armhf-2020-02-10.tar.xz -C rootfs准备SD卡分区建议布局如下分区大小文件系统用途/dev/sdX164MBFAT32Uboot和内核/dev/sdX2剩余空间EXT4根文件系统使用以下命令创建分区并格式化sudo fdisk /dev/sdX # 创建两个分区第一个64MB类型c (W95 FAT32 LBA) sudo mkfs.vfat /dev/sdX1 sudo mkfs.ext4 /dev/sdX2复制内核和设备树到启动分区sudo mount /dev/sdX1 /mnt sudo cp arch/arm/boot/zImage /mnt sudo cp arch/arm/boot/dts/sun8i-v3s-lichee-zero.dtb /mnt sudo umount /mnt安装根文件系统和内核模块sudo mount /dev/sdX2 /mnt sudo cp -r rootfs/* /mnt sudo make ARCHarm INSTALL_MOD_PATH/mnt modules_install sudo umount /mnt5. 常见问题与解决方案在实际操作中开发者常会遇到各种问题。以下是几个典型问题及其解决方法问题1Uboot启动后无法加载内核现象停在Starting kernel...后无输出可能原因设备树不匹配内核配置错误内存参数不正确解决方案确认使用的设备树文件与硬件版本匹配检查内核配置中的内存大小设置尝试在Uboot中手动加载setenv bootargs consolettyS0,115200 fatload mmc 0:1 0x41000000 zImage fatload mmc 0:1 0x41800000 sun8i-v3s-lichee-zero.dtb bootz 0x41000000 - 0x41800000问题2内核panic无法挂载根文件系统现象内核启动后提示VFS: Unable to mount root fs可能原因根文件系统路径错误文件系统驱动未编译进内核解决方案检查Uboot的bootargs参数确认root指向正确的分区确保内核配置中启用了对应的文件系统支持EXT4/FAT等问题3USB设备无法识别现象插入USB设备后无反应可能原因内核未启用USB驱动硬件供电不足解决方案重新配置内核确保启用CONFIG_USByCONFIG_USB_DWC2yCONFIG_USB_STORAGEy检查硬件供电必要时使用外部供电问题4屏幕显示异常现象LCD显示花屏或无法点亮可能原因设备树中屏幕参数配置错误内核未启用正确的显示驱动解决方案修改设备树中的display-timings节点匹配实际屏幕参数确保内核配置中启用了CONFIG_DRMyCONFIG_DRM_SUN4Iy6. 系统优化与进阶配置系统成功启动后我们可以进行一些优化配置提升使用体验启用硬件加速 修改/boot/config.txt添加disp.screen0_output_mode480x272p60 hdmi_force_hotplug1配置网络 编辑/etc/network/interfaces添加auto eth0 iface eth0 inet dhcp优化存储性能 在/etc/fstab中添加noatime选项/dev/mmcblk0p2 / ext4 defaults,noatime 0 1启用SPI Flash支持适用于SPI版本 重新配置内核启用CONFIG_MTDy CONFIG_MTD_SPI_NORy CONFIG_SPI_SUN6Iy配置WiFi模块适用于使用SDIO WiFi的情况 安装必要驱动和工具apt install firmware-realtek wireless-tools wpasupplicant通过以上步骤你应该已经成功在荔枝派Zero上运行了主线Uboot和Linux内核。这套环境不仅提供了更新的内核特性还能让你更好地参与到开源社区的发展中。

更多文章