跳到主要内容

SDK

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

[提示]
  1. 目前仅在 Ubuntu 22.04 x86_64 环境下提供支持,其他平台架构暂不兼容。
  2. 严格按照文档的步骤配置就能成功编译镜像,如果出现错误请优先检查自己的环境。

1. Luckfox-Nova-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 --------------- 第一阶段引导程序(BootROM加载),用于初始化硬件并加载 u-boot,一般由芯片厂商提供
    ├── parameter.txt -------------------- 固件打包的参数配置文件,指定每个分区的大小、顺序、地址等
    ├── trust.img ------------------------ 包含 TrustZone 相关固件,如 Arm Trust Firmware(ATF)或 OP-TEE,用于安全启动、安全服务
    ├── uboot.img ------------------------ U-Boot二阶段引导程序,负责初始化设备、加载 kernel 并传递参数
    ├── boot.img ------------------------ 包含 Linux kernel(内核) 和初始启动脚本(如 initramfs 或 ramdisk)。它负责引导系统并加载根文件系统
    ├── rootfs.img ----------------------- 系统的 根文件系统,即 / 目录内容,包含应用、库、配置等。可能是 ext4、squashfs 等格式
    └── update.img ----------------------- 固件升级包(统一打包格式),是上述多个分区镜像合成的固件包,就是完整的镜像文件

1.2 SDK 配置文件说明

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

    -rwxrwxr-x 1 xt xt 333  58 10:07 luckfox_rk3308b_64bit_defconfig
    -rw-rw-r-- 1 xt xt 541 58 10:07 parameter-64bit-luckfox.txt
    -rw-rw-r-- 1 xt xt 599 58 10:07 parameter-64bit.txt
    -rw-rw-r-- 1 xt xt 347 58 10:07 rockchip_defconfig

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

1.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 curl
  2. 设置 Python 环境设置。

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

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

    mkdir Nova-sdk && cd Nova--sdk
    tar -xzvf Luckfox_Nova_SDK_250430.tar.gz
  4. 将解压后的文件进行解包。

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

    $ ./build.sh lunch

    ############### Rockchip Linux SDK ###############

    Manifest: luckfox-linux-5.10-rk3308_v1.0_20250407.xml

    Log colors: message notice warning error fatal

    Parsing supported commands...

    Log saved at /home/xt/Luckfox/rk3308/250508/output/sessions/2025-06-19_21-17-41
    Pick a defconfig:

    1. rockchip_defconfig
    2. luckfox_rk3308b_64bit_defconfig
    Which would you like? [1]: 2
    $ ./build.sh

1.2 部分编译

在嵌入式系统开发中,固件通常由多个分区镜像组成,如 boot、rootfs、uboot 等。为提升开发效率,常采用“部分编译”的方式,仅针对修改的部分生成对应的镜像文件,而无需重新构建完整系统,从而加快调试与部署流程。 例如,当你修改了内核驱动配置或设备树时,只需重新编译内核并生成 boot.img,然后单独烧录该镜像或将其重新打包进固件中即可。

  1. 单独编译U-Boot

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

    ./build.sh kernel
    • 生成镜像文件: rockdev/boot.img
  3. 固件打包

    ./build.sh firmware