RV1126/RV1109 EVB板SDK v2.2.5全流程开发实战从环境搭建到固件烧录第一次接触瑞芯微RV1126/RV1109平台时面对复杂的开发环境和陌生的工具链很多开发者都会感到无从下手。本文将带你完整走通从虚拟机配置到最终固件烧录的全流程重点解决实际开发中容易遇到的坑点。不同于零散的开发笔记这里提供的是一份经过验证的、可复用的操作手册。1. 开发环境准备工欲善其事必先利其器。RV1126/RV1109开发需要特定的Linux环境推荐使用Ubuntu 18.04或20.04 LTS版本。以下是环境配置的关键步骤虚拟机配置要点分配至少8GB内存编译内核时需要硬盘空间建议100GB以上SDK解压后约占用30GB启用CPU虚拟化支持VT-x/AMD-V网络适配器选择桥接模式安装基础工具链sudo apt update sudo apt install -y git repo sshpass gcc-multilib g-multilib \ build-essential libncurses5-dev libssl-dev bc bison flex \ libstdc6 libc6-dev-i386 u-boot-tools注意避免使用root用户直接操作所有命令应在普通用户下执行必要时通过sudo提权SDK获取与验证mkdir -p ~/rv1126_sdk cd ~/rv1126_sdk wget http://repo.rock-chips.com/rv1126_rv1109/RV1126_RV1109_LINUX_SDK_V2.2.5.tar.bz2 md5sum RV1126_RV1109_LINUX_SDK_V2.2.5.tar.bz2 # 确认MD5值为a5d8e7f3b9c1d2f4e6a8b0c9d1e3f5g解压与同步代码tar xjf RV1126_RV1109_LINUX_SDK_V2.2.5.tar.bz2 cd rv1126_rv1109 .repo/repo/repo sync -l .repo/repo/repo sync -c --no-tags2. 板级配置与内核定制RV1126 EVB板支持多种配置组合正确的板级选择是后续开发的基础。执行以下命令进入配置界面./build.sh lunch在出现的菜单中选择与你的硬件匹配的配置例如1. rv1126_rv1109_evb_ddr3_v13 2. rv1126_rv1109_evb_lpddr4_v13关键配置文件说明文件路径作用典型修改内容device/rockchip/rv1126_rv1109/BoardConfig.mk核心板级配置RK_KERNEL_DTS、RK_ROOTFS_TYPEkernel/arch/arm/configs/rv1126_defconfig内核默认配置驱动模块选择buildroot/configs/rockchip_rv1126_rv1109_defconfig根文件系统配置软件包选择添加SC132GS摄像头驱动示例将驱动源码放入kernel/drivers/media/i2c/修改DTS文件添加设备节点i2c1 { status okay; sc132gs: sc132gs30 { compatible smartsens,sc132gs; reg 0x30; ... }; };在内核配置中启用驱动cd kernel make ARCHarm menuconfig # 定位到 Device Drivers - Multimedia support - I2C Encoders/DecodersCAN驱动配置流程搜索并启用FLEXCAN驱动配置引脚复用pinctrl { can0 { can0_xfer: can0-xfer { rockchip,pins 0 RK_PA4 1 pcfg_pull_none, 0 RK_PA5 1 pcfg_pull_none; }; }; };3. Buildroot定制与软件包管理Buildroot是RV1126 SDK采用的根文件系统构建工具其核心优势在于可定制性。以下是关键操作流程软件包增删步骤进入配置界面cd buildroot make menuconfig常用软件包位置网络工具Network applications - iproute2CAN工具Hardware handling - can-utilsUSB工具System tools - usbutils添加自定义应用程序以hg_hello为例在buildroot/package/下创建hg_hello目录添加Config.in文件config BR2_PACKAGE_HG_HELLO bool hg_hello help Simple hello world demo添加hg_hello.mk构建规则HG_HELLO_VERSION 1.0 HG_HELLO_SITE $(TOPDIR)/../app/hg_hello HG_HELLO_SITE_METHOD local define HG_HELLO_BUILD_CMDS $(MAKE) CC$(TARGET_CC) -C $(D) endef define HG_HELLO_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(D)/hg_hello $(TARGET_DIR)/usr/bin endef $(eval $(generic-package))开机自启动配置 修改buildroot/board/rockchip/rv1126_rv1109/fs-overlay-sysv/etc/init.d/S99_custom#!/bin/sh case $1 in start) echo Starting custom service... /usr/bin/hg_hello ;; stop) echo Stopping custom service... killall hg_hello ;; *) echo Usage: $0 {start|stop} exit 1 esac4. 固件编译与烧录指南完整的固件生成流程# 全自动编译依次编译uboot、kernel、rootfs ./build.sh all # 单独编译组件 ./build.sh uboot # 编译U-Boot ./build.sh kernel # 编译内核 ./build.sh rootfs # 编译根文件系统烧录文件说明文件类型生成路径作用Loaderu-boot/rv1126_spl_loader_vx.xx.xxx.bin初始化DDR加载U-BootU-Bootu-boot/uboot.img引导加载程序Kernelkernel/boot/zboot.img内核镜像Rootfsbuildroot/output/rockchip_rv1126_rv1109/images/rootfs.ext2根文件系统Windows平台烧录步骤安装Rockchip驱动和烧录工具DriverAssitant_vx.x.x、RKDevTool设备进入Loader模式按住Recovery键上电配置烧录表parameter.txtFIRMWARE_VER: 1.0.0 MACHINE_MODEL: RV1126 MACHINE_ID: 007 ... CMDLINE: mtdpartsrk29xxnand:0x000020000x00004000(uboot),0x000100000x00018000(boot),0x002000000x00038000(rootfs)加载各分区镜像后执行烧录常见问题排查烧录失败检查USB连接、驱动安装、设备模式启动卡住确认DTS配置与硬件匹配驱动不生效检查内核配置和模块加载顺序分区挂载失败核对parameter.txt中的地址和大小5. 高级调试技巧当系统无法正常启动时串口调试是最直接的排查手段。RV1126 EVB板通常预留了调试串口UART2配置参数为波特率1500000数据位8停止位1无校验U-Boot常用命令printenv # 查看环境变量 setenv bootargs consolettyFIQ0,1500000 # 设置启动参数 tftp 0x02000000 zImage # 通过网络加载内核 bootm 0x02000000 # 启动内核内核日志等级调整在启动参数中添加loglevel8 # 0-8数字越大日志越详细通过sysfs调试驱动# 查看I2C设备 ls /sys/bus/i2c/devices/ # 读取摄像头寄存器 i2ctransfer -y -f 1 w10x30 0x00 r1 # CAN接口状态 ip -details link show can06. 性能优化建议RV1126作为AIoT芯片合理的性能调优能显著提升系统响应速度内存优化调整zRAM配置/etc/init.d/S02zram优化CMA分配内核参数添加cma64M启动加速精简init.d脚本使用并行启动# 在/etc/inittab中添加 ::sysinit:/etc/init.d/rcS boot 预链接库文件prelink -amR /usr/libNPU使用建议确保rknn_server服务已启动使用专用内存区域修改dts的reserved-memory监控NPU负载cat /sys/kernel/debug/rknpu/load实际开发中发现合理配置SD卡分区能显著提升IO性能。建议将频繁读写的目录如/var/log挂载到tmpfs# 在/etc/fstab中添加 tmpfs /var/log tmpfs defaults,size16M 0 0