SDK 环境部署(ubuntu22.04 X86_64平台)
Luckfox-Nova-SDK 主要在 Ubuntu 22.04 LTS 系统上进行开发和测试。为减少开发过程中可能出现的编译错误等问题,建议用户使用与我们相同版本的操作系统,以确保开发环境的一致性和稳定性。
- 目前仅在 Ubuntu 22.04 x86_64 环境下提供支持,其他平台架构暂不兼容。
- 严格按照文档的步骤配置就能成功编译镜像,如果出现错误请优先检查自己的环境。
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 工程。
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 开发的根文件系统镜像存放目录。
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 配置文件说明
Nova 系列 SDK 配置文件存放在
device/rockchip/rk3308目录下。-rwxrwxr-x 1 xt xt 333 5月 8 10:07 luckfox_rk3308b_64bit_defconfig
-rw-rw-r-- 1 xt xt 541 5月 8 10:07 parameter-64bit-luckfox.txt
-rw-rw-r-- 1 xt xt 599 5月 8 10:07 parameter-64bit.txt
-rw-rw-r-- 1 xt xt 347 5月 8 10:07 rockchip_defconfig
2. Ubuntu22.04 环境下编译镜像
1.1 搭建编译环境和完整编译镜像
安装依赖环境:
sudo apt updatesudo 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设置 Python 环境设置。
#默认情况下链接的是python3
$ python --version
Python 3.10.12
which python2
sudo ln -sf /usr/bin/python2 /usr/bin/python从网盘链接下载最新的 SDK,并解压缩文件(请勿直接复制解压命令,因 SDK 名称可能会随着更新而变化)。
mkdir Nova-sdk && cd Nova--sdk
tar -xzvf Luckfox_Nova_SDK_250430.tar.gz将解压后的文件进行解包。
.repo/repo/repo sync -l编译镜像。
$ ./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,然后单独烧录该镜像或将其重新打包进固件中即可。
单独编译U-Boot
./build.sh uboot- 生成镜像文件: rockdev/MiniLoaderAll.bin rockdev/uboot.img
单独编译kernel
./build.sh kernel- 生成镜像文件: rockdev/boot.img
固件打包
./build.sh firmware