SDK
Luckfox Pico-SDK 主要在 Ubuntu LTS 系统上进行开发和测试,主要支持 Ubuntu 22.04 版本。如果您的系统是 Ubuntu 22.04,只需安装相应的依赖编译即可。为了确保与不同版本的 Ubuntu兼容,我们还为用户提供了一个方便使用的 Docker 环境。
- 目前仅在 Ubuntu 22.04 x86_64 环境下提供支持,其他平台架构暂不兼容。
- 严格按照文档的步骤配置就能成功编译镜像,如果出现错误请优先检查自己的环境。
1. SDK 目录介绍
- 获取最新的 SDK:(可任选以下两种方式,推荐国内用户使用 Gitee)
git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git
git clone https://github.com/LuckfoxTECH/luckfox-pico.git - SDK 目录结构介绍。
├── build.sh -> project/build.sh ---- SDK编译脚本
├── media --------------------------- 多媒体编解码、ISP等算法相关(可独立SDK编译)
├── sysdrv -------------------------- U-Boot、kernel、rootfs目录(可独立SDK编译)
├── project ------------------------- 参考应用、编译配置以及脚本目录
├── output -------------------------- SDK编译后镜像文件存放目录
└── tools --------------------------- 烧录镜像打包工具以及烧录工具 - 镜像存放目录介绍。
output/
├── image
│ ├── download.bin ---------------- 烧录工具升级通讯的设备端程序,只会下载到板子内存
│ ├── env.img --------------------- 包含分区表和启动参数
│ ├── uboot.img ------------------- uboot镜像
│ ├── idblock.img ----------------- loader镜像
│ ├── boot.img -------------------- kernel镜像
│ ├── rootfs.img ------------------ 根文件系统
│ └── userdata.img ---------------- userdata镜像
└── out
├── app_out --------------------- 参考应用编译后的文件
├── media_out ------------------- media相关编译后的文件
├── rootfs_xxx ------------------ 文件系统打包目录
├── S20linkmount ---------------- 分区挂载脚本
├── sysdrv_out ------------------ sysdrv编译后的文件
└── userdata -------------------- userdata - SDK配置文件说明
luckfox-pico/project/cfg/BoardConfig_IPC。BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk
BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk
BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi-IPC.mk
BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi_W-IPC.mk
BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk
BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk
BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk
BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk
BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk
BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk
BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk
BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk
BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk
BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk
BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk
luckfox-buildroot-nocsi-oem-pre.sh
luckfox-buildroot-oem-pre.sh
luckfox-glibc-oem-pre.sh
luckfox-rv1106-tb-emmc-post.sh
luckfox-rv1106-tb-spi_nand-post.sh
luckfox-systemd-off-modem-post.sh
luckfox-userdata-pre.sh
overlay - 以
BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk为例,详细介绍其中关键的文件配置。# Config CMA size in environment
export RK_BOOTARGS_CMA_SIZE="66M"
# Kernel dts
export RK_KERNEL_DTS=rv1106g-luckfox-pico-pro-max.dts
# Target boot medium
export RK_BOOT_MEDIUM=sd_card
export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs),-(media)"
# Target rootfs
export LF_TARGET_ROOTFS=buildroot
# Buildroot defconfig
export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig
# declare overlay directory
export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow"RK_BOOTARGS_CMA_SIZE:给摄像头分配的内存,如果不使用摄像头可以将其修改为 1MRK_KERNEL_DTS:指定设备树文件RK_BOOT_MEDIUM:指定目标启动介质,可以是 sd_card(指的是SD卡)、spi_nand(SPI NAND Flash)和 eMMCRK_PARTITION_CMD_IN_ENV:这是用于配置分区表的信息,如果需要与 SD 卡的存储空间匹配,您可以修改 rootfs 分区LF_TARGET_ROOTFS:指定目标的根文件系统(Root File System)RK_BUILDROOT_DEFCONFIG:指定 Buildroot 的配置文件RK_POST_OVERLAY:在 overlay 文件夹下存放想要打包的文件
2. SDK 镜像编译
请勿在镜像编译过程中滥用 sudo 命令,否则可能造成文件权限变更,导致编译过程失败。
- 安装依赖环境:
sudo apt updatesudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync curl - 请根据开发板实际型号选择对应分支,型号信息可参考《产品介绍》。
luckfox@luckfox:~/luckfox-pico$ ./build.sh lunch
You're building on Linux
Lunch menu...pick the Luckfox Pico hardware version:
选择 Luckfox Pico 硬件版本:
[0] RV1103_Luckfox_Pico
[1] RV1103_Luckfox_Pico_Mini_A
[2] RV1103_Luckfox_Pico_Mini_B
[3] RV1103_Luckfox_Pico_Plus
[4] RV1103_Luckfox_Pico_WebBee
[5] RV1106_Luckfox_Pico_Pro
[6] RV1106_Luckfox_Pico_Max
[7] RV1106_Luckfox_Pico_Ultra
[8] RV1106_Luckfox_Pico_Ultra_W
[9] RV1106_Luckfox_Pico_Pi
[10] RV1106_Luckfox_Pico_Pi_W
[11] RV1106_Luckfox_Pico_86Panel
[12] RV1106_Luckfox_Pico_86Panel_W
[13] custom
Which would you like? [0~13][default:0]: 10
Lunch menu...pick the boot medium:
选择启动媒介:
[0] EMMC
Which would you like? [0][default:0]: 0
Lunch menu...pick the system version:
选择系统版本:
[0] Buildroot
Which would you like? [0][default:0]: 0
[build.sh:info] Lunching for Default BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi_W-IPC.mk boards...
[build.sh:info] switching to board: /home/ubuntu/Luckfox/rv1106/sdk-250510-panel/luckfox-pico/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi_W-IPC.mk
[build.sh:info] Running build_select_board succeeded.
luckfox@luckfox:~/luckfox-pico$ ./build.sh - 其它在开发中常用编译命令:
- 单独编译内核:
./build.sh clean kernel
./build.sh kernel - 单独编译 uboot:
./build.sh clean uboot
./build.sh uboot - 单独编译 rootfs:
./build.sh clean rootfs
./build.sh rootfs - 固件打包:(适用打包自定义文件)
./build.sh firmware
- 单独编译内核:
3. 将自定义文件打包至系统镜像
Luckfox Pico SDK 在打包前会通过 overlay 机制将指定文件添加到根文件系统中。
- 创建
overlay目录:在project/cfg/BoardConfig_IPC/overlay下新增自定义文件夹(例如custom-overlay)。 - 按根文件系统结构添加文件:
# 示例:overlay-luckfox-buildroot-shadow
project/cfg/BoardConfig_IPC/overlay/custom-overlay/
└── etc
├── samba
│ ├── smb.conf
│ └── smbpasswd
├── shadow
└── ssh
└── sshd_config - 配置板级支持文件。在
project/cfg/BoardConfig_IPC/BoardConfig.mk中添加:export RK_POST_OVERLAY="custom-overlay" # 替换为实际文件夹名称 - 编译打包::
./build.sh firmware # 生成包含 overlay 的 rootfs.img
4. 文件共享
虚拟机和 Windows 电脑之间文件传输可以使用 Samba 服务来实现文件共享,在 Windows 的网络邻居中,可以轻松访问虚拟机的文件系统,非常便捷。
4.1 Ubuntu 环境配置
下载和安装 Samba 。
sudo apt-get update
sudo apt-get install samba -y配置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为主机名,根据自己实际主机名填写。
设置分享账户密码。
sudo smbpasswd -a luckfox查看虚拟机或主机的 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 环境
- 在 Windows 地址栏输入(根据自己实际 IP 地址填写)。

- 输入虚拟机账户密码默认都是 luckfox 。

- 成功登录虚拟机或主机。

FAQ
使用 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')