RV1126_RV1109开发环境搭建与SDK编译全流程解析

张开发
2026/4/15 10:03:33 15 分钟阅读

分享文章

RV1126_RV1109开发环境搭建与SDK编译全流程解析
1. 开发环境准备从零搭建基础工具链第一次接触RV1126/RV1109开发板时我花了整整两天时间才把环境搭好。现在回想起来其实只要搞清楚几个关键点就能少走弯路。首先需要明确的是Rockchip官方推荐使用Ubuntu 16.04/18.04 LTS版本进行开发但实际操作中我发现Ubuntu 20.04也能完美兼容。核心工具三件套必须提前装好Git代码版本管理的基础工具Python 3.6新版SDK已不再支持Python 2RepoGoogle开发的Git仓库管理工具安装过程其实很简单但有几个坑需要注意。比如在Ubuntu 20.04上默认的Python 3.8可能会与某些脚本不兼容。我建议用以下命令创建软链接sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1至于Repo工具很多教程会建议从Google官方下载但国内开发者更推荐使用Rockchip提供的镜像源。这是我验证过最稳定的安装方式mkdir ~/bin curl https://mirrors.rock-chips.com/repo ~/bin/repo chmod ax ~/bin/repo记得把~/bin加入PATH环境变量。我遇到过不少开发者因为漏了这步导致repo命令找不到所以建议在~/.bashrc里加上export PATH~/bin:$PATH2. SDK获取与同步避开网络问题的实战技巧拿到SDK源码是开发的第一步但同步过程经常遇到网络问题。Rockchip官方提供了两种下载方式SSH和HTTPS。对于国内开发者我更推荐使用HTTPS方式因为SSH经常会出现连接超时。完整同步命令应该这样写repo init -u https://www.rockchip.com.cn/linux/rockchip/platform/manifests \ -b linux -m rv1126_rv1109_linux_release.xml这里有个小技巧先执行repo init再修改.repo/manifests.git/config文件把rock-chips.com.cn替换为mirrors.rock-chips.com速度会快很多。同步时建议加上-c -j8参数.repo/repo/repo sync -c -j8-j后面的数字表示并行任务数一般设为CPU核心数的2倍。我在Ryzen 7 5800H上测试-j16比默认的-j4快了三倍不止。如果遇到同步中断千万别直接重新sync先用repo status查看哪些项目出了问题然后单独同步这些项目.repo/repo/repo sync platform/linux同步完成后务必检查版本号realpath .repo/manifests/rv1126_rv1109_linux_release.xml最新版的SDK通常修复了很多已知问题比如我遇到过v1.3.1的WiFi驱动bug在v1.5.0就被修复了。3. 系统依赖全攻略不同Ubuntu版本的避坑指南依赖包安装是最容易出问题的环节。官方文档虽然列出了所需软件包但有些细节需要注意。根据我的经验Ubuntu 16.04和18.04的依赖略有不同。基础依赖这套命令适用于所有版本sudo apt-get install -y build-essential crossbuild-essential-armhf \ libssl-dev libncurses5-dev bc flex bison cmake device-tree-compiler \ u-boot-tools python3-pip对于Ubuntu 18.04及以上还需要额外安装sudo apt-get install -y lib32gcc-7-dev g-7 libstdc-7-dev这里有个大坑新版Ubuntu默认的gcc版本可能过高。我建议强制使用gcc-7sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100Python环境也需要特别注意。虽然Ubuntu 20.04自带Python 3.8但有些脚本需要python3-distutilssudo apt-get install -y python3-distutils python3-dev安装完成后建议用pip安装这些Python包pip3 install --upgrade pip pip3 install pycrypto4. 交叉编译工具链选对版本事半功倍RV1126/RV1109 SDK里预置了两套工具链很多人不清楚它们的区别应用开发工具链prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf用于编译文件系统、应用程序等上层软件内核开发工具链prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf专门用于编译U-Boot和Linux内核实际使用时需要在环境变量中指定工具链路径。我通常在~/.bashrc里添加export RK_TOOLCHAIN_APPprebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf export RK_TOOLCHAIN_KERNELprebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf export PATH$PATH:${RK_TOOLCHAIN_APP}/bin:${RK_TOOLCHAIN_KERNEL}/bin验证工具链是否生效arm-linux-gnueabihf-gcc --version如果看到类似gcc version 8.3.1 20190312的输出就说明配置正确。5. 板级配置与编译从选择到打包的全流程编译前的板级配置是关键一步。RV1126/RV1109支持多种硬件配置选错会导致无法启动。SDK提供了两种配置方式方法一直接指定配置文件./build.sh device/rockchip/rv1126_rv1109/rockchip_defconfig方法二交互式选择./build.sh lunch我建议新手先用lunch命令它会列出所有可用配置。比如1. rockchip_defconfig - 通用IPC配置 2. rockchip_tb_v13_defconfig - 门铃/猫眼专用配置选择后就可以开始编译了。全自动编译命令最简单./build.sh all但实际开发中我更推荐分步编译./build.sh uboot # 单独编译uboot ./build.sh kernel # 单独编译内核 ./build.sh rootfs # 构建根文件系统编译完成后需要打包固件./mkfirmware.sh生成的固件在rockdev/目录下output/目录会有整理好的发布版本。我遇到过打包失败的情况通常是rootfs大小超出了分区限制这时需要调整parameter.txt中的分区表。6. 常见问题排查那些官方没告诉你的解决方案问题一stdlib.h找不到这是交叉编译时最常见的问题错误信息类似fatal error: stdlib.h: No such file or directory解决方法是指定正确的sysroot路径export CFLAGS--sysrootprebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/arm-linux-gnueabihf/libc问题二Python版本冲突虽然SDK要求Python 3.6但有些脚本仍需要python2。可以用virtualenv创建独立环境python3 -m venv venv source venv/bin/activate pip install future问题三网络同步失败除了修改/etc/hosts还可以尝试git config --global url.https://mirrors.rock-chips.com/.insteadOf ssh://gitwww.rockchip.com.cn问题四内存不足编译内核时至少需要16GB内存。如果物理内存不足可以增加swap空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile我在实际项目中发现RV1126的WiFi驱动编译特别耗内存32GB内存的机器才能流畅编译。如果遇到奇怪的编译错误不妨先检查内存使用情况。

更多文章