RV1126_RV1109开发环境搭建与SDK编译全攻略

张开发
2026/4/3 20:25:56 15 分钟阅读
RV1126_RV1109开发环境搭建与SDK编译全攻略
1. 开发环境准备从零搭建基础工具链第一次接触RV1126/RV1109开发板时最头疼的就是环境搭建。记得去年给团队新人培训时光是安装依赖包就花了整整一下午。现在我把这些经验整理成标准化流程帮你避开我踩过的那些坑。操作系统选择官方推荐Ubuntu 16.04/18.04 LTS版本实测20.04也能用但需要额外处理兼容性问题。我强烈建议使用18.04既稳定又能避免老版本的工具链缺失问题。最近有个客户在Ubuntu 22.04上折腾了两天都没搞定交叉编译最后换了18.04一次成功。基础工具三件套安装顺序有讲究# 先装Python3.6千万别用Python2 sudo apt-get install python3 python3-pip # 再装Git版本建议2.25 sudo apt-get install git git-lfs # 最后装Repo工具注意存放路径 mkdir -p ~/.bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/.bin/repo chmod arx ~/.bin/repo这里有个细节容易出错把~/.bin加入PATH环境变量。我见过至少三个开发者因为漏了这步导致repo命令找不到。修改~/.bashrc文件追加export PATH${PATH}:${HOME}/.bin保存后执行source ~/.bashrc立即生效。2. SDK获取与同步实战技巧拿到SDK就像拿到乐高积木箱但首先你得把积木块都收集全。Rockchip的SDK通过repo管理这里分享几个加速下载的秘诀首次同步建议用这个组合命令比官方文档更稳定repo init -u ssh://gitwww.rockchip.com.cn/linux/rockchip/platform/manifests \ -b linux \ -m rv1126_rv1109_linux_release.xml \ --repo-urlssh://gitwww.rockchip.com.cn/repo/rk/tools/repo \ --no-repo-verify # 关键技巧使用-c参数只同步当前分支-j4根据CPU核心数调整 .repo/repo/repo sync -c -j$(nproc)遇到同步失败时特别是github相关域名可以尝试修改hosts文件# 临时解决方案重启失效 sudo tee -a /etc/hosts EOF 185.199.108.154 kgithub.com 185.199.109.154 raw.kgithubusercontent.com EOF版本确认很重要去年有个项目因为SDK版本不对导致摄像头驱动异常realpath .repo/manifests/rv1126_rv1109_linux_release.xml # 输出示例/path/to/rv1126_rv1109_linux_v1.3.1_20200921.xml建议记录这个版本号不同版本间可能存在API差异。3. 交叉编译工具链深度解析RV1126/RV1109 SDK里预置了两套工具链新手经常搞混它们的用途。我在调试智能门锁项目时就曾用错工具链导致内核无法启动。应用层工具链用户空间程序# 路径prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf # 特点GLIBC版本较高2.28支持C17 export APP_TOOLCHAINprebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf内核层工具链U-Boot/内核编译# 路径prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf # 特点支持旧版内核头文件但GCC版本较低6.3.1 export KERNEL_TOOLCHAINprebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf环境变量配置示例建议写入~/.bashrcexport PATH${APP_TOOLCHAIN}/bin:${KERNEL_TOOLCHAIN}/bin:${PATH} export CROSS_COMPILEarm-linux-gnueabihf- export ARCHarm有个坑要注意工具链里的as命令可能和系统自带冲突。遇到汇编错误时可以指定完整路径# 错误用法 arm-linux-gnueabihf-as -o test.o test.s # 正确用法 ${APP_TOOLCHAIN}/bin/arm-linux-gnueabihf-as -o test.o test.s4. 依赖包安装的避坑指南官方文档的依赖列表有些过时根据最新实践需要调整。上周有个客户在Ubuntu 20.04上编译失败就是因为缺了这些包基础依赖所有系统都需要sudo apt-get install -y \ build-essential cmake ninja-build \ libssl-dev libncurses5-dev \ python3-dev swig flex bison \ liblz4-tool zlib1g-dev \ device-tree-compiler u-boot-tools \ parted mtools针对Ubuntu 18.04的额外依赖# 解决GLIBC兼容性问题 sudo apt-get install -y \ gcc-8 g-8 gcc-8-multilib g-8-multilib \ lib32stdc6 lib32z1 # 设置GCC8为默认版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 \ --slave /usr/bin/g g /usr/bin/g-8Python环境特别说明必须使用Python3.6但不要删除系统Python2某些工具链脚本仍依赖建议用virtualenv创建隔离环境python3 -m venv rkvenv source rkvenv/bin/activate pip install --upgrade pip setuptools遇到#include_next错误时常见于stdlib.h缺失解决方案是# 在编译命令中添加sysroot路径 CFLAGS--sysroot${APP_TOOLCHAIN}/arm-linux-gnueabihf/libc5. 板级配置与编译实战RV1126/RV1109的板级配置比普通开发板复杂得多不同产品形态需要不同配置。去年做智能猫眼项目时就因选错配置浪费了两天时间。配置选择方法# 交互式选择推荐新手 ./build.sh lunch # 直接指定配置适合批量编译 ./build.sh device/rockchip/rv1126_rv1109/rockchip_defconfig典型配置说明rockchip_defconfig通用IPC配置rockchip_tb_v13_defconfig带电池设备门锁/猫眼rockchip_uvc_defconfigUSB视频类设备完整编译流程# 清理旧编译产物重要 ./build.sh clean # 分步编译调试推荐 ./build.sh uboot # 编译引导程序 ./build.sh kernel # 编译内核 ./build.sh rootfs # 构建根文件系统 # 一键全编译生产环境 ./build.sh all # 编译所有组件 ./mkfirmware.sh # 生成固件包输出文件说明rockdev/原始镜像文件output/最终烧录包update.imgOTA升级专用包编译时内存不足的话至少需要16GB可以调整并行度# 默认-j84核机器建议改为-j4 make -j46. 常见问题排查手册问题1repo sync卡住现象同步到90%后长时间无响应解决方案# 先尝试断点续传 repo sync -c -j1 --fail-fast # 仍失败时清理重试 rm -rf .repo/projects repo sync -c -j4问题2Python版本冲突报错SyntaxError: invalid syntax解决# 检查默认Python版本 python --version # 临时切换Python3 alias pythonpython3问题3USB设备权限不足现象烧录时找不到设备永久解决方案sudo tee /etc/udev/rules.d/70-rockchip.rules EOF SUBSYSTEMusb, ATTR{idVendor}2207, MODE0666 EOF sudo udevadm control --reload问题4内核编译报错典型错误undefined reference to__aeabi_uldivmod原因工具链混用解决make ARCHarm CROSS_COMPILE${KERNEL_TOOLCHAIN}/bin/arm-linux-gnueabihf- clean make ARCHarm CROSS_COMPILE${KERNEL_TOOLCHAIN}/bin/arm-linux-gnueabihf-7. 高级调试技巧串口调试配置# 查看串口设备 ls /dev/ttyUSB* # 推荐使用picocom比minicom更稳定 sudo apt-get install picocom picocom -b 1500000 /dev/ttyUSB0内核日志等级调整# 编译前修改配置文件 vi kernel/arch/arm/configs/rockchip_defconfig # 添加或修改 CONFIG_LOGLEVEL7 # 0-7数字越大日志越详细文件系统大小调整# 修改parameter.txt vi device/rockchip/rv1126_rv1109/parameter.txt # 修改CMDLINE中的rootfs大小 0x000020000x00004000(rootfs) # 前四位表示大小单位512B块后四位表示偏移固件打包自定义# 示例只打包内核和dtb ./mkfirmware.sh --kernel-only # 添加自定义文件到rootfs cp myapp output/rootfs/usr/bin/ ./mkfirmware.sh --rootfs-only

更多文章