跳到主要内容

SDK 镜像编译

Luckfox-Lyra-SDK 主要在 Ubuntu 22.04 LTS 系统上进行开发和测试。为减少开发过程中可能出现的编译错误等问题,建议用户使用与我们相同版本的操作系统,以确保开发环境的一致性和稳定性。

[注意]
SDK 运行环境应为 X86_64 架构的 Ubuntu 系统,其他架构可能会导致兼容性问题。

1. Luckfox-Lyra-SDK 介绍

SDK(Software Development Kit) 是 软件开发工具包,它是一组工具、库、示例代码、文档、和相关支持文件,用于帮助开发者构建针对特定平台、操作系统、硬件、或者其他软件的应用程序。开发板上的操作系统,通常是基于 SDK 进行定制和开发的。SDK 提供了开发板所需的基础软件(内核、驱动、Bootloader 等),开发者在此基础上进行定制,生成最终可以在开发板上运行的系统固件。

1.1 SDK 目录说明

SDK 工程目录包含有 buildroot、yocto、app、kernel、u-boot、device、docs、external、prebuilts 等目录。采用manifest来管理仓库,用repo工具来管理每个目录或其子目录会对应的 git 工程。

  1. SDK目录结构。

    ├── build.sh -> device/rockchip/common/scripts/build.sh ---- SDK编译脚本
    ├── app ----------------------------- 存放上层应用 APP,主要是一些应用 Demo
    ├── buildroot ----------------------- 基于 Buildroot(2024)开发的根文件系统
    ├── device/rockchip ----------------- 存放芯片板级配置以及 SDK 编译和打包固件的脚本和文件
    ├── docs ---------------------------- 存放通用开发指导文档、芯片平台相关文档、Linux 系统开发相关文档、其他参考文档等
    ├── external ------------------------ 存放第三方相关仓库,包括显示、音视频、摄像头、网络、安全等
    ├── kernel -------------------------- 存放 Kernel 开发的代码
    ├── output -------------------------- 存放每次生成的固件信息、编译信息、XML、主机环境等
    ├── prebuilts ----------------------- 存放交叉编译工具链
    ├── rkbin --------------------------- 存放 Rockchip 相关二进制和工具
    ├── rockdev ------------------------- 存放编译输出固件,实际软链接到 output/firmware
    ├── tools --------------------------- 存放 Linux 和 Window 操作系统下常用工具
    ├── u-boot -------------------------- 存放基于 v2017.09 版本进行开发的 U-Boot 代码
    └── yocto --------------------------- 存放基于 Yocto 5.0 开发的根文件系统
  2. 镜像存放目录。

    rockdev/
    ├── MiniLoaderAll.bin --------------- SPL 引导加载器,负责初始化最基本的硬件、后级固件加载
    ├── parameter.txt -------------------- 分区表信息
    ├── uboot.img ------------------------ uboot 镜像
    ├── boot.img ------------------------ kernel 镜像
    ├── rootfs.img ----------------------- 根文件系统镜像文件
    └── update.img ----------------------- 完整的镜像文件

1.2 SDK 配置文件说明

  1. Lyra 系列 SDK 配置文件存放在device/rockchip/rk3506目录下。

    -rw-rw-r-- 1 xt xt 1538 1210 19:58 amp_linux.its
    -rw-rw-r-- 1 xt xt 482 1210 20:00 luckfox_lyra_buildroot_sdmmc_defconfig
    -rw-rw-r-- 1 xt xt 527 1210 20:00 luckfox_lyra_buildroot_spinand_defconfig
    -rw-rw-r-- 1 xt xt 487 1210 20:00 luckfox_lyra_plus_buildroot_sdmmc_defconfig
    -rw-rw-r-- 1 xt xt 532 1210 20:00 luckfox_lyra_plus_buildroot_spinand_defconfig
    -rw-rw-r-- 1 xt xt 344 1210 20:00 parameter-lyra-sdmmc.txt
    -rw-rw-r-- 1 xt xt 333 1210 20:00 parameter-lyra-spinand.txt
    drwxrwxr-x 2 xt xt 4096 1210 19:58 rk3506_oem
    -rw-rw-r-- 1 xt xt 1053 1210 19:58 smp.its
    -rw-rw-r-- 1 xt xt 1738 1210 19:58 thunderboot4recovery.its
    -rw-rw-r-- 1 xt xt 1234 1210 19:58 thunderboot.its
    -rw-rw-r-- 1 xt xt 1665 1210 19:58 zboot4recovery.its
    -rw-rw-r-- 1 xt xt 1424 1210 19:58 zboot.its

2. Ubuntu22.04 环境下编译镜像

[提示]

请勿在镜像编译过程中滥用 sudo 命令,否则可能造成文件权限变更,导致编译过程失败。

2.1 搭建编译环境

  1. 安装依赖环境:

    sudo apt update
    sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
    liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
    diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
    cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
    libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
    libmpc-dev bc python-is-python3 python2
  2. 设置 Python 环境设置。

    #默认情况下链接的是python3
    $ python --version
    Python 3.10.12

    which python2
    sudo ln -sf /usr/bin/python2 /usr/bin/python
  3. 从网盘链接下载最新的 SDK,并解压缩文件(请勿直接复制解压命令,因 SDK 名称可能会随着更新而变化)。

    mkdir Lyra-sdk && cd Lyra-sdk
    tar -xzvf luckfox-lyra-241213.tar.gz
  4. 将解压后的文件进行解包。

    .repo/repo/repo sync -l
  5. 全部编译镜像。

    $ ./build.sh lunch

    ############### Rockchip Linux SDK ###############
    Manifest: luckfox_linux6.1_rk3506_release_v1.4_20250620.xml

    Log colors: message notice warning error fatal

    Log saved at /home/ubuntu/Luckfox/rk3506/250815/output/sessions/2025-10-28_14-54-29
    You're building on Linux
    Lunch menu...pick the Luckfox Lyra hardware version:
    选择 Luckfox Lyra 硬件版本:
    [0] RK3506G_Luckfox_Lyra
    [1] RK3506G_Luckfox_Lyra_Plus
    [2] RK3506B_Luckfox_Lyra_Ultra
    [3] RK3506B_Luckfox_Lyra_Ultra_W
    [4] RK3506B_Luckfox_Lyra_Zero_W
    [5] RK3506B_Luckfox_Lyra_Pi
    [6] RK3506B_Luckfox_Lyra_Pi_W
    [7] custom
    Which would you like? [0~7][default:0]: 4
    Lunch menu...pick the boot medium:
    选择启动媒介:
    [0] SD_CARD
    [1] SPI_NAND
    Which would you like? [0~1][default:0]: 1
    Lunch menu...pick the system version:
    选择系统版本:
    [0] Buildroot
    Which would you like? [0~1][default:0]: 0

    $ ./build.sh

2.2 部分编译

  1. 单独编译U-Boot

    ./build.sh uboot
    • 生成镜像文件: rockdev/MiniLoaderAll.bin rockdev/uboot.img
  2. 单独编译kernel

    ./build.sh kernel
    • 生成镜像文件: rockdev/boot.img
  3. 单独编译 rootfs

    ./build.sh rootfs
  4. 固件打包

    ./build.sh firmware

3. 将自定义文件打包至系统镜像

Luckfox Lyra SDK 在打包前会通过 overlay 机制将指定文件添加到根文件系统中。

  1. 创建overlay目录:在SDK/buildroot/board/rockchip/rk3506下新增自定义文件夹(例如luckfox-overlay)。
    Luckfox
  2. buildroot/configs/rockchip_rk3506_luckfox_defconfig加上文件路径。
    Luckfox
  3. 编译打包:
    ./build.sh firmware

4. 文件共享

虚拟机和 Windows 电脑之间文件传输可以使用 Samba 服务来实现文件共享,在 Windows 的网络邻居中,可以轻松访问虚拟机的文件系统,非常便捷。

4.1 Ubuntu 环境配置

  1. 下载和安装 Samba 。

    sudo apt-get update
    sudo apt-get install samba -y
  2. 配置Samba服务。

    sudo vim /etc/samba/smb.conf

    #在文件末尾填入以下内容

    [share]
    comment = share folder
    browseable = yes
    path = /home/luckfox
    create mask = 0700
    directory mask = 0700
    valid users = luckfox
    force user = luckfox
    force group = luckfox
    public = yes
    available = yes
    writable = yes
    • 其中luckfox为主机名,根据自己实际主机名填写。
  3. 设置分享账户密码。

    sudo smbpasswd -a luckfox
  4. 查看虚拟机或主机的 IP 地址。

    luckfox@luckfox:~/Luckfox-Pico/luckfox-pico$ ifconfig
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.10.61 netmask 255.255.252.0 broadcast 192.168.11.255
    inet6 fe80::814f:a51e:5f24:f0f7 prefixlen 64 scopeid 0x20<link>
    ether 08:00:27:d2:60:b9 txqueuelen 1000 (Ethernet)
    RX packets 699559 bytes 754875799 (754.8 MB)
    RX errors 0 dropped 4 overruns 0 frame 0
    TX packets 53024 bytes 3278048 (3.2 MB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 190 bytes 24144 (24.1 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 190 bytes 24144 (24.1 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

4.2 Windows 环境

  1. 在 Windows 地址栏输入(根据自己实际 IP 地址填写)。
    Luckfox
  2. 输入虚拟机账户密码默认都是 luckfox 。
    Luckfox
  3. 成功登录虚拟机或主机。
    Luckfox

FAQ

  1. 使用 WSL2 编译出现环境变量的错误Your PATH contains spaces, TABs, and/or newline (\n) characters This doesn't work. Fix yOu PATH,就需要过滤空格、制表符和换行符。

    export PATH=$(echo "$PATH" | tr -d ' \t\n')