当前位置: 首页 > news >正文

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地址配置错误。建议修改分区表前先备份原始文件。

http://www.jsqmd.com/news/351799/

相关文章:

  • 还在忍受龟速下载?3个技术方案让你带宽跑满:文件下载加速工具全解析
  • 突破NCM格式限制:让音乐自由掌控的无损转换全指南
  • STM32F407+WM8978嵌入式WAV播放器设计与实现
  • XUnity.AutoTranslator:Unity游戏实时翻译工具完全配置指南
  • 3分钟搞定GitHub界面本地化:这款浏览器插件让操作效率提升50%
  • 插图指南
  • R低代码配置效能跃迁(2024最新实践白皮书):实测配置效率提升63%,仅限前500名开发者获取
  • AnimateDiff文生视频效果评测:与SVD对比——无底图生成的流畅度与画质优势
  • 跨平台Android控制工具完全指南:3步提升设备管理效率
  • STM32F407+WM8978 I2S录音系统设计与WAV实时生成
  • 3个秘诀彻底解决百度网盘限速难题:让你下载速度提升10倍的终极指南
  • ARM Cortex-M系列深度剖析:中断系统与NVIC机制
  • ST MCSDK FOC串口通信协议深度解析
  • 2026年网络推广方案厂家推荐:企业信息推广/企业做推广/企业做推广代运营/企业推广平台/企业推广方法/企业网络推广/选择指南 - 优质品牌商家
  • GitHub中文界面插件安装教程:5分钟让GitHub全界面中文化
  • HY-Motion 1.0GPU部署:CUDA 12.4 + cuDNN 8.9 兼容性实测
  • 操作指南:精简与扩展Batocera系统镜像方法
  • 如何突破语言壁垒畅玩全球Unity游戏?XUnity.AutoTranslator带来无缝翻译体验
  • 3个核心价值的数字资源管理全流程解决方案
  • beamer幻灯片
  • RePKG工具全攻略:从资源提取到高效处理的完整路径
  • 阿里达摩院GTE中文大模型:nlp_gte_sentence-embedding_chinese-large多行业落地实践
  • i.MX6ULL裸机开发通用Makefile设计与实战
  • Tikz绘图
  • YOLO X Layout多模态协同:与LayoutParser对比,YOLOX架构在小样本场景优势
  • 探索NVIDIA显卡性能调校:解锁GPU参数优化的隐藏潜力
  • 5个高效解决方案:解决游戏控制器模拟驱动核心问题
  • CANN生态实践指南:基于custom-op的算子融合技术
  • Chord视频分析工具效果实测:300+真实视频样本定位准确率统计
  • Qwen3-ASR-1.7B从零开始:Web界面操作+GPU显存优化全解析