news 2026/4/18 7:14:37

RK1126 SDK编译实战:从环境配置到模块化编译指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK1126 SDK编译实战:从环境配置到模块化编译指南

1. RK1126 SDK开发环境搭建全攻略

刚拿到RK1126开发板时,我最头疼的就是环境搭建。折腾了整整两天才把编译环境配好,这里把踩过的坑都总结出来,让你少走弯路。

Ubuntu系统选择:官方推荐18.04版本,但我实测20.04和22.04也能用。不过要注意,22.04需要额外处理一些依赖包冲突。建议新手直接用18.04最省心。安装系统时记得勾选"安装开发者工具"选项,能自动装好基础编译环境。

依赖包安装是第一个拦路虎。有次我漏装了device-tree-compiler,编译到一半报错,不得不从头开始。完整的依赖清单如下:

sudo apt-get install -y repo git-core gitk git-gui gcc-arm-linux-gnueabihf \ u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted \ libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools \ autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make \ binutils build-essential gcc g++ bash patch gzip gawk bzip2 perl tar \ cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev \ libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client \ subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 \ libssl-dev expect lib32gcc-7-dev g++-7 libstdc++-7-dev flex bison

SDK目录结构解析

  • buildroot:定制根文件系统的核心目录
  • kernel:内核源码,修改驱动主要在这里
  • u-boot:bootloader相关代码
  • device/rockchip:平台特定的编译脚本和配置文件
  • external:多媒体、AI等扩展库
  • prebuilts:交叉编译工具链
  • rockdev:编译输出目录

环境变量配置有个小技巧:在~/.bashrc最后添加以下内容,避免每次开终端都要重新设置:

export PATH=$PATH:/path/to/sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin export RK_PROJECT_PATH=/path/to/your/project

2. 首次编译实战指南

第一次编译RK1126 SDK就像拆盲盒,永远不知道下一个报错是什么。我记录下最完整的流程,帮你一次通关。

初始化配置

source envsetup.sh # 选择对应板型,比如rockchip_rv1126_rv1109_spi_nand ./build.sh lunch # 选择对应的BoardConfig,比如BoardConfig-38x38-spinand.mk

全自动编译(适合首次):

./build.sh all

这个过程会持续1-3小时,取决于你的机器性能。建议用nohup ./build.sh all &放到后台运行,避免网络中断导致失败。

模块化编译(后续开发推荐):

# 单独编译U-Boot ./build.sh uboot # 单独编译Kernel ./build.sh kernel # 单独编译Buildroot ./build.sh buildroot # 生成完整固件 ./build.sh firmware

常见报错处理

  1. Python版本问题:确保系统有python2.7或python3,可通过ln -s创建软链接
  2. 工具链缺失:检查prebuilts目录权限,确保可执行
  3. 内存不足:在swap分区,建议至少16GB物理内存+8GB swap
  4. 网络超时:修改repo的镜像源,或者用proxychains加速

编译成功后,固件会生成在rockdev目录下,update.img就是完整的升级镜像。我习惯用ls -lh rockdev/查看生成的文件大小,正常应该在100MB左右。

3. U-Boot深度配置与编译

U-Boot相当于嵌入式设备的BIOS,掌握它的配置能解决很多启动问题。有次我的板子无法从TF卡启动,就是通过修改U-Boot配置解决的。

进入配置界面

cd u-boot make rv1126_defconfig make menuconfig

关键配置项

  • Boot options -> Boot media:选择SPI NAND/eMMC/SD卡
  • Device Tree Control -> Device Tree Source:确认是rv1126对应的dts
  • Rockchip options -> DDR初始化配置

保存配置时要用这个命令序列:

make savedefconfig cp defconfig configs/rv1126_defconfig

编译与烧写

# 在SDK根目录执行 ./build.sh uboot # 生成的uboot.img在u-boot目录下

调试技巧

  1. 通过串口查看启动日志,注意DDR初始化信息
  2. 修改include/configs/rv1126.h可以调整启动参数
  3. 使用mdmw命令可以查看和修改内存内容

遇到过最坑的问题是uboot无法保存环境变量,后来发现是存储介质配置错误。建议新手先用默认配置,等跑通后再逐步定制。

4. Linux内核定制化编译

RK1126的Linux内核经过Rockchip深度定制,包含很多专用驱动。我遇到摄像头无法识别的问题,就是通过重新配置内核解决的。

内核配置步骤

cd kernel make ARCH=arm rv1126_defconfig make ARCH=arm menuconfig

重点配置区域

  • Device Drivers -> Multimedia support -> Rockchip ISP驱动
  • Device Drivers -> Graphics support -> RGA2加速器
  • Device Drivers -> Staging drivers -> Rockchip NPU驱动

保存配置

make ARCH=arm savedefconfig cp defconfig arch/arm/configs/rv1126_defconfig

编译命令

# 返回SDK根目录 cd .. ./build.sh kernel

内核调试经验

  1. 使用dmesg | grep error快速定位启动错误
  2. 修改设备树文件arch/arm/boot/dts/rv1126.dtsi调整硬件配置
  3. 通过make ARCH=arm dtbs单独编译设备树

记得上次调试MIPI摄像头,发现时钟配置不对,通过修改dts里的camera0节点就解决了。内核编译一般需要10-30分钟,可以用-j$(nproc)加速。

5. Buildroot文件系统定制

Buildroot可以生成超轻量级的根文件系统,我做过最小化配置只有8MB大小。但实际项目可能需要添加各种软件包。

基础配置

make menuconfig

关键配置路径

  • Target packages -> Audio/Video:添加ffmpeg、gstreamer等
  • Target packages -> Graphic:支持Qt/LVGL等GUI框架
  • Target packages -> Hardware handling:添加GPIO工具

添加自定义软件包

  1. 在package目录创建新目录,比如myapp
  2. 编写Config.in和myapp.mk文件
  3. 在menuconfig中选择该软件包

保存配置

make savedefconfig cp defconfig configs/rv1126_defconfig

编译命令

./build.sh buildroot

实用技巧

  1. 通过output/rockchip_rv1126/build/buildroot-fs/查看生成的文件系统内容
  2. 使用make busybox-menuconfig定制busybox
  3. board/rockchip/common/overlay添加自定义文件

我曾经需要添加一个Python脚本到文件系统,直接在overlay目录创建对应路径就行,比修改Buildroot配置更简单。

6. 应用程序开发实战

RK1126的SDK提供了丰富的多媒体开发框架,比如rkmedia。我开发过一个视频监控应用,分享下具体步骤。

编译官方示例

./build.sh external/rkmedia

示例代码在external/rkmedia/examples目录,编译好的可执行文件会输出到buildroot/output/rockchip_rv1126/build/rkmedia/examples

添加自定义应用

  1. 在external/rkmedia/examples下新建your_app.c
  2. 修改CMakeLists.txt,添加:
add_executable(your_app your_app.c ${COMMON_SRC}) target_link_libraries(your_app easymedia)
  1. 重新编译:./build.sh external/rkmedia

交叉编译技巧

# 设置工具链路径 export PATH=$PATH:$(pwd)/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin # 编译单个文件 arm-linux-gnueabihf-gcc test.c -o test

调试方法

  1. 使用gdbserver远程调试
  2. 通过strace查看系统调用
  3. 在buildroot中启用core dump功能

记得第一次调试rkmedia时,发现视频无法显示,原来是忘记配置环境变量export DISPLAY=:0。建议新手先从官方示例入手,再逐步修改。

7. 固件打包与烧录技巧

当所有组件编译完成后,需要打包成完整固件。我遇到过多次烧录后无法启动的情况,总结出这些经验。

生成完整固件

./build.sh firmware

生成的update.img位于rockdev目录,这个文件可以直接用工具烧录。

分区表解析: parameter.txt定义了分区布局,例如:

0x00002000@0x00004000(uboot) 0x00010000@0x0000e800(boot) 0x00030000@0x0001e800(recovery) 0x002d0000@0x000e8800(system)
  • @前是分区大小
  • @后是起始位置
  • 单位是sector(512字节)

烧录方法

  1. 使用RKDevTool工具(Windows)
  2. 使用upgrade_tool(Linux):
upgrade_tool ul update.img
  1. 通过maskrom模式强制烧录

调试经验

  1. 烧录前务必核对parameter.txt与实际硬件匹配
  2. 使用upgrade_tool ef命令可以擦除flash
  3. 串口日志是诊断启动问题的关键

有次烧录后无法启动,发现是parameter.txt里的uboot地址配置错误。建议修改分区表前先备份原始文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:30:56

如何用Qwen3-ForcedAligner制作精准字幕?详细教程

如何用Qwen3-ForcedAligner制作精准字幕?详细教程 1. 为什么你需要一个真正“听得懂话”的对齐工具? 你有没有遇到过这样的情况:花一小时剪辑好一段采访视频,却卡在字幕环节——手动敲字耗时、语音转文字错漏多、时间轴拖来拖去…

作者头像 李华
网站建设 2026/4/18 2:28:57

yz-女生-角色扮演-造相Z-Turbo入门:从零开始生成角色图片

yz-女生-角色扮演-造相Z-Turbo入门:从零开始生成角色图片 你是否想过,只需输入几句话,就能生成一位栩栩如生的二次元角色?不需要绘画功底,不用安装复杂软件,更不必等待数小时渲染——现在,这一…

作者头像 李华
网站建设 2026/4/18 0:06:16

解锁音乐自由:NCMconverter的5大核心功能解析

解锁音乐自由:NCMconverter的5大核心功能解析 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 为什么付费音乐无法真正属于你?当你在音乐平台购买了喜爱的…

作者头像 李华
网站建设 2026/4/18 2:30:55

2025抢红包神器揭秘:自动抢红包工具让你红包拿到手软

2025抢红包神器揭秘:自动抢红包工具让你红包拿到手软 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址: ht…

作者头像 李华
网站建设 2026/4/18 2:31:17

SMBus协议PEC校验在STM32上的实现:详细说明

SMBus PEC校验在STM32上的落地实践:从协议陷阱到工业级鲁棒通信你有没有遇到过这样的场景?一台部署在变频器旁的边缘网关,连续三天凌晨两点准时上报“CPU温度170℃”,继而触发误关机;工程师现场用万用表一测&#xff0…

作者头像 李华
网站建设 2026/4/18 2:29:43

采用MOSFET的理想二极管应用实战案例

MOSFET理想二极管:从原理陷阱到工业级落地的实战手记你有没有遇到过这样的现场问题?——一台48 V服务器双电源冗余系统,在主电源突然掉电的瞬间,母线电压跌落超过200 mV,触发了下游FPGA的复位;或者一块锂…

作者头像 李华