. 软件包管理 — 增删功能
Buildroot 的 defconfig[luckfox_pico_defconfig]控制哪些软件包编译进 rootfs。
常用类别:
| 类别 | 示例包 | 配置项 |
|---|---|---|
| 脚本语言 | python3, lua, perl | BR2_PACKAGE_PYTHON3=y |
| 网络服务 | openssh, dhcpcd, nginx, vsftpd | BR2_PACKAGE_OPENSSH=y |
| 调试工具 | strace, gdb, valgrind, tcpdump | 需要自己加 |
| 系统工具 | htop, nano, iperf3, iptables | BR2_PACKAGE_HTOP=y |
| USB gadget | 串口/网卡/摄像头/U盘 模拟 | 内核配置,rootfs 配启动脚本 |
| 数据库 | sqlite, influxdb | 需要自己加 |
| 媒体库 | ffmpeg, gstreamer | Rockchip 有自己的 media 库,也可加通用库 |
添加方法:编辑 defconfig,加上 BR2_PACKAGE_xxx=y,然后重新编译 rootfs。
# 也可用 menuconfig 交互式选择
./build.sh buildrootconfig
2. 文件系统类型 — 可换其他的
当前用的是 ubifs,可以改 RK_PARTITION_FS_TYPE_CFG 切换:
| 类型 | 特点 | 适用场景 |
|---|---|---|
ubifs | 可读写、压缩、坏块管理 | 需要写 rootfs(当前配置) |
squashfs | 只读、高压缩率、挂载快 | 稳定版固件,不可变系统 |
erofs | 只读、比 squashfs 更高效 | 只读 rootfs(改进版) |
jffs2 | 可读写 | SPI NOR Flash 专用 |
例如切换为 squashfs 只读(更省空间,更稳定):
RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@squashfs,oem@/oem@ubifs,userdata@/userdata@ubifs
同时 sys_bootargs 会自动从 root=ubi0:rootfs 变为 root=/dev/ubiblock0_0 rootfstype=squashfs。
3. 初始化和启动行为
现有的 init 脚本在 overlay 中,可以:
- 添加新的开机服务:创建
S<数字><名称>脚本 - 修改开机启动顺序:调整数字大小
- 自定义
/etc/inittab:修改串口登录行为、自动登录 - 自定义
/etc/profile:改环境变量、PATH、别名 - 自动登录 root:修改
/etc/inittab或/etc/securetty
现有 init 脚本位置:overlay-luckfox-buildroot-init/etc/init.d/
4. 摄像头/ISP 配置
通过 BoardConfig 中的 RK_CAMERA_SENSOR_IQFILES 和 RK_CAMERA_SENSOR_CAC_BIN:
export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json"
IQ 文件会被打包到 OEM 分区,系统启动时 ISP 加载。
- 换摄像头传感器:改 IQ 文件列表
- 加多个摄像头:增加列表中的文件
- 调图像质量:修改 IQ JSON 文件中的参数(AE、AWB、AF 等)
5. USB 功能模拟 (USB Gadget)
RV1106 的 USB 可以模拟多种设备。参考 S99usb0config:
- USB 串口:模拟 USB 转串口,通过 USB 登录板子
- USB 网卡(RNDIS/ECM/NCM):板子虚拟成 USB 网卡
- USB 摄像头(UVC):板子采集摄像头通过 USB 输出视频流
- USB 声卡(UAC):模拟 USB 音频设备
- USB 大容量存储:模拟 U 盘
内核配置中这些功能已启用(CONFIG_USB_GADGET=y),rootfs 配启动脚本即可切换。
6. 网络功能增强
| 功能 | 修改方式 |
|---|---|
| WiFi 连接 | BoardConfig 中 LF_WIFI_SSID / LF_WIFI_PSK |
| 4G/5G 模块 | 内核有 rv1106-wwan-ndis-ppp.config 配置片段 |
| 有线网络 | 设备树中启用 GMAC(当前 Pro Max 禁用) |
| 蓝牙 | 内核有 rv1106-bt.config 配置片段 |
| 热点模式 | 用 hostapd + dhcpd |
| WireGuard VPN | 内核已支持(CONFIG_WIREGUARD=y) |
| Docker 容器 | 内核有 luckfox_rv1106-docker.config 片段 |
7. 显示/屏幕
Pro Max 板子带 RGB 显示屏(640x480),可以:
- 换显示分辨率:改设备树的
display-timings - 换屏幕型号:改 SPI 初始化命令序列
- LVDS/MIPI DSI:如果硬件支持
- framebuffer 应用:直接写
/dev/fb0 - Qt/LVGL 等 GUI 框架:需要 Buildroot 中添加
8. NPU 推理
RV1106 内置 NPU(0.5TOPS),支持:
- RKNN 模型推理:在 rootfs 中放 RKNN 模型文件和推理程序
- TensorFlow Lite / ONNX:转成 RKNN 格式后运行
- NPU 驱动已经在内核中启用
- runtime 库在 media 编译中生成
9. 文件系统扩容与分区自定义
除了改分区大小,还可以:
- 增加新分区:比如加一个
config分区单独存配置 - 修改分区文件系统:比如
userdata用 ext4 而非 ubifs - OEM 分区存 app:
RK_BUILD_APP_TO_OEM_PARTITION=y把 app 和资源分开
10. 调试与开发
| 功能 | 配置 |
|---|---|
| 串口调试 | 默认 1500000 波特率 |
| 网络文件系统(NFS) | 内核支持,rootfs 挂载网络目录 |
| 交叉编译工具链 | SDK 自带 |
| FIQ 调试器 | 内核已启用,可通过串口中断 |
11. OTA 远程升级
Buildroot + rootfs 支持 OTA:
- recovery 模式:独立分区做系统还原
- 双备份启动(AB 系统):两个 rootfs 分区切换
update.img可网络推送烧录
动手建议路线
简单 ──────────────────────────────────────────→ 复杂
改密码 → 加 init 脚本 → 加自己的 app
↓
加软件包 (python/nano/htop)
↓
换 squashfs 只读系统
↓
摄像头调优 / 换传感器
↓
USB Gadget 模式
↓
加 NPU 推理 + OTA 升级
你想先做哪个方向?我可以给具体步骤和配置细节。