1. RV1126 SDK编译环境搭建指南
第一次接触RV1126开发板时,面对庞大的SDK代码库可能会感到无从下手。这里我把自己在Ubuntu 18.04环境下搭建编译环境的完整过程记录下来,希望能帮到刚入门的开发者。
SDK主要分为完整版和BSP版两种类型。完整版SDK包含Buildroot系统编译支持,文件体积较大(约15GB),适合需要深度定制的场景。BSP版则更为精简,适合只需要更新uboot和kernel的快速开发。我建议新手从完整版开始,可以全面了解整个系统构建流程。
环境准备阶段需要特别注意权限问题——全程使用普通用户操作即可,不要用root权限。安装基础工具链时,这几个包必不可少:
sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect 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下载SDK源码时,国内用户可能会遇到网速慢的问题。有个小技巧:先下载基础压缩包(约2GB),再通过repo同步更新剩余代码。解压后执行.repo/repo/repo sync -c --no-tags时,如果中断可以多次重试,它会自动续传。
2. 内核定制与编译实战
内核定制是开发过程中最关键的环节之一。RV1126的kernel目录结构遵循标准Linux风格,但加入了Rockchip特有的驱动支持。我习惯先查看默认配置:
cd kernel make ARCH=arm rv1126_defconfig menuconfig这里有几个容易踩的坑:
- 摄像头驱动需要同时启用VIP和ISP模块
- NPU加速器驱动位于Device Drivers -> Rockchip Misc drivers
- 内存管理建议使用CMA配置
保存配置后,记得更新defconfig文件:
make ARCH=arm savedefconfig cp defconfig arch/arm/configs/rv1126_defconfig编译内核镜像时,推荐使用以下命令组合,可以显著提升编译速度:
make ARCH=arm -j$(nproc) rv1126_defconfig make ARCH=arm -j$(nproc) pro-rv1126.img编译完成后,在arch/arm/boot目录下会生成zImage和dtb文件。通过./build.sh kernel命令会自动打包成boot.img,存放在rockdev目录下。
3. Buildroot文件系统深度定制
Buildroot是构建嵌入式系统的利器,但它的配置选项多达上千项,新手很容易迷失。我总结出几个关键配置区域:
- 基础配置:在System configuration中设置主机名、root密码等
- 软件包选择:Target packages里可以添加busybox、openssh等常用工具
- 内核模块:在Kernel菜单中配置需要编译到文件系统的驱动模块
修改配置后,建议先清理旧编译结果:
make clean然后重新编译并打包:
./build.sh buildroot && ./build.sh firmware如果遇到文件系统体积过大的问题,可以通过以下方式优化:
- 在Filesystem images中启用压缩选项
- 移除不必要的locale文件
- 使用musl libc替代glibc
4. 固件打包与分区调整技巧
固件打包是最后也是最重要的一步。RV1126使用Rockchip特有的打包格式,关键文件包括:
- parameter.txt:定义分区布局
- package-file:指定镜像组成
- update.img:最终生成的升级包
调整分区大小时,需要同时修改parameter.txt和package-file。例如要将rootfs分区从1GB扩大到2GB:
# 修改前 0x00200000@0x00038000(rootfs) # 修改后 0x00400000@0x00038000(rootfs)计算分区大小时记住这个公式:MB = (块数 * 512) / (1024 * 1024)。比如0x200000块等于2097152块,换算后就是1024MB。
打包完整固件的命令序列如下:
./build.sh firmware # 生成各分区镜像 ./build.sh updateimg # 打包成update.img5. 常见问题排查手册
在实际开发中,这些问题我遇到的最多:
Q1:编译时提示Python找不到
sudo ln -s /usr/bin/python3 /usr/bin/pythonQ2:文件系统体积超出分区限制
- 检查parameter.txt中的分区设置
- 在Buildroot中启用squashfs压缩
- 删除不必要的软件包
Q3:内核启动卡住
- 检查串口日志,通常会在出错位置停止
- 确认dtb文件是否匹配硬件版本
- 尝试关闭部分驱动模块
Q4:RKMedia示例程序无法运行
- 确保已安装相关动态库
- 检查用户组权限(video组)
- 验证内核驱动是否加载成功
6. 高级开发技巧
对于需要深度定制的开发者,这些技巧可能会帮到你:
添加自定义内核模块:
- 在kernel/drivers目录下新建模块代码
- 修改Kconfig和Makefile添加编译选项
- 通过menuconfig启用模块
集成第三方应用: 在Buildroot的package目录下新建.mk文件,示例模板:
HELLOWORLD_VERSION = 1.0.0 HELLOWORLD_SITE = /path/to/source HELLOWORLD_SITE_METHOD = local define HELLOWORLD_BUILD_CMDS $(MAKE) CC="$(TARGET_CC)" -C $(@D) endef define HELLOWORLD_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/helloworld $(TARGET_DIR)/usr/bin endef $(eval $(generic-package))性能优化建议:
- 启用内核的CONFIG_PREEMPT选项
- 调整CPU频率调节策略
- 使用RT补丁提升实时性
7. 开发板实测经验
在实际项目中,我发现RV1126的这些特性特别实用:
- 双摄像头支持:通过VIP接口可以同时接入两个MIPI摄像头
- NPU加速:1.2TOPS算力足够运行YOLOv5等常见模型
- 低功耗设计:待机功耗可控制在0.5W以下
一个典型的视频处理流水线配置如下:
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=NV12 v4l2-ctl --stream-mmap --stream-count=100 --stream-to=test.nv12调试时建议常备这些工具:
- rkmedia_venc_test:视频编码测试
- rknpu_test:NPU功能验证
- memtester:内存稳定性测试
记得定期更新SDK版本,Rockchip会持续修复已知问题。通过.repo/repo/repo sync命令可以获取最新代码,但要注意备份本地修改。