RK3229开发指南:从SDK编译到Android系统调试全解析

发布时间:2026/11/2 4:07:25
RK3229开发指南:从SDK编译到Android系统调试全解析 简介《Rockchip RK3229 软件开发指南 V1.03》是瑞芯微面向软件开发工程师与技术支持工程师编写的芯片开发调试参考文档聚焦 RK3229 在 Linux3.10 内核下搭配 Android 6.0.1 与 7.1.2 的完整开发流程适合嵌入式底层开发与方案移植人员查阅。资源包共 1 个文件为 1.61MB 的 PDF 文档单册即涵盖全部章节便于离线检索与随查随用。目前已有 627 人学习下载。内容从 DDR、NAND、EMMC、WiFi/BT 及多媒体编解码支持列表切入明确硬件选型边界随后讲解 SDK 获取、编译与固件烧写并给出 system 分区大小配置、odex 预编译、禁用 SELinux、jack-server 配置、USB 默认开启 ADB、开机视频与低内存优化、DRM WIDEVINE level 1 等实操说明另附 Box 产测工具、序列号/Mac 烧写工具与开机 logo 限制描述可帮助读者快速定位配置项、少走调试弯路。1. 一份 2017 年的 RK3229 开发指南为什么现在还有人翻出来用手里攥着一块 RK3229 的电视盒子板子串口接上上电U-Boot 跑完就卡住或者 Android 起来了但 ADB 死活连不上——这种场景在二手盒子、定制机顶盒、广告机主板上太常见了。RK3229 是四核 Cortex-A7 的 32 位 SoC定位就是低成本多媒体盒子2017 年前后出货量很大如今大量板子流入开发者手里配套的 SDK 和文档却散落在各处。这份《Rockchip RK3229 软件开发指南 V1.03》就是当年随 SDK 发布的官方开发手册覆盖 Linux3.10 内核 Android 6.0.1/7.1.2 两套系统从 DDR/NAND/eMMC 选型、SDK 编译烧写、U-Boot 配置、内核 DTS 修改一直到 Android 分区、OTA、低内存优化、Widevine DRM 配置和量产工具链基本把从点亮板子到小批量产的全流程串了一遍。它适合两类人手里有 RK3229 硬件、想自己编译固件或改系统的嵌入式工程师以及需要理解这套老平台启动链路和分区结构、做维护或二次开发的技术支持。不适合想找“最新最全”资料的人——这是 2017 年的文档很多工具版本和路径已经和现在的环境对不上但平台本身的硬件约束和启动逻辑没变这才是它仍然值钱的地方。2. 先看清平台边界DDR、eMMC、WiFi 选型与 SDK 适用硬件拿到一份老 SDK最忌讳上来就make。RK3229 这套东西对物料是有硬性白名单的选错颗粒编译再顺也起不来。这一章把文档里最影响“能不能跑”的硬件约束和 SDK 适用范围拆开讲先立住选型逻辑再谈动手。2.1 DDR 与存储颗粒只认 √ 和 T/A 标记RK3229 的 DRAM 支持 DDR3、LPDDR2、LPDDR3 三类但“支持这个类型”和“支持你手上这颗具体型号”是两回事。文档里明确指向RKDocs\Platform support lists目录下的《RK DDR Support List Ver2.24》颗粒支持程度用符号标注符号含义是否建议选用√完整测试且已量产建议T/A完整测试且适用建议N/A不适用禁止NAND 和 eMMC 是同一套逻辑分别对应《RKNandFlashSupportList》和《RKeMMCSupportList》。这里有个血泪经验很多人从旧盒子上拆一颗 eMMC 焊到新板子上觉得“都是 eMMC 4.51应该能跑”结果卡在 U-Boot 的存储初始化阶段串口只打印几行就没了。原因就是那颗颗粒不在支持列表里时序参数对不上。RK3229 支持 eMMC 4.51、SDIO3.0、HS200 模式文档还专门提了高性能颗粒的筛选标准——顺序读 200MB/s、顺序写 40MB/s这个门槛在当年算中上现在看依然是个合理的性能基线。选型时直接翻厂商 Datasheet 的 performance 章节对一遍比事后调时序省事得多。WiFi/BT 更严格。RK3229 跑的是 Linux3.10 内核WiFi 驱动必须匹配这个内核版本。文档指向《Rockchip_WiFi_Situation_20170214》列表里是大量实测过的芯片。如果你手上是一颗列表外的 WiFi 模组唯一的路是让模组原厂提供 Linux3.10 版本的内核驱动源码自己往 SDK 里移植。这一步的坑在于很多模组厂只维护 Android 高版本内核的驱动3.10 的代码早就归档了拿不到就只能换料。2.2 SDK 适用硬件与内核配置入口这份 SDK 是基于 Android 6.0.1 及之后的 32 位系统适配 RK3229 Box EVB 开发板和 Box 样机板。内核配置的改动入口是RK3229-box.dts这是整份文档里出现频率最高的文件名之一。硬件设计参考文档在RKDocs\Platform support lists\RK322X 硬件设计指南EVB 和样机板共用同一份。实际动手时我一般先做三件事确认平台边界再碰编译# 1. 确认 SDK 目录结构里 RKDocs 和 kernel 都在 ls -d RKDocs kernel u-boot device 2/dev/null # 2. 查当前 dts 用的是哪个板级配置 ls kernel/arch/arm/boot/dts/ | grep -i rk3229 # 3. 确认交叉编译工具链版本文档对应的是 2017 年前后的 gcc 4.6/4.9 系列 arm-linux-gnueabihf-gcc --version | head -1第一行是确认 SDK 完整性缺RKDocs说明拿到的包被裁剪过支持列表查不了第二行定位板级 dtsRK3229 常见的有rk3229-box.dts、rk3229-sdk.dts等变体改错文件等于白改第三行是工具链核对用太新的 gcc 编 3.10 内核大概率报一堆 warning 甚至 error文档时代的工具链是 gcc 4.6/4.9这个版本约束后面编译章节还会踩到。提示支持列表文档的版本号如 DDR Ver2.24、eMMC Ver1.33是判断 SDK 新旧的一个侧面依据如果手上的列表版本比文档里写的还老说明这个 SDK 包可能被替换过编译前先跟硬件实际物料对一遍。3. SDK 编译与烧写从 source 到 update.img 的完整链路平台边界清楚了进入真正的动手环节。这一章按“取 SDK → 编译 → 烧写 → 量产”的顺序走每一步给出可抄的命令和参数含义重点放在编译配置和烧写模式选择上因为这两处是新手翻车最集中的地方。3.1 SDK 编译环境变量、lunch 选择与 jack-serverRK3229 SDK 的编译流程是 Rockchip 那套经典结构先source环境脚本再lunch选目标最后make。文档 3.2 节覆盖了编译配置3.2.6 补了 system 分区大小、odex 预编译、禁用 selinux 三项3.2.7 专门讲 jack-server 配置——这个不是可选项Android 7.1 编译必须过 jack。# 进入 SDK 根目录后先加载编译环境 source build/envsetup.sh # 列出可选目标RK3229 通常对应 rk3229_box-userdebug 之类 lunch # 选定目标后开始编译-j 按 CPU 核数给一般 核数2 make -j8 # 如果编译报 jack-server 相关错误先看配置 cat ~/.jack-settingssource build/envsetup.sh把lunch、m、mm这些函数注入当前 shell不执行这步后面所有命令都找不到lunch不带参数会打印可选目标列表RK3229 的 Box 配置一般带rk3229和box字样选错目标会导致 dts 和分区表不匹配make -j8的并行度不是越大越好老机器上-j16反而因为内存不足触发 OOM编译中途被杀日志里只留一句Killed很容易误判成代码问题。jack-server 的坑值得单独说。Android 7.1 用 jack 编译 Java 部分它默认起一个本地服务端口和 TLS 配置写在~/.jack-settings和~/.jack-server/config.properties里。常见现象是编译到一半报Failed to contact Jack server原因多半是之前编译残留的 jack 进程占着端口或者jack.server.service.port和jack.server.admin.port被别的程序占了。解决办法是先jack-admin kill-server再检查两个端口是否空闲必要时改配置里的端口号。文档 3.2.7 给的就是这套配置说明照着改比盲目重装环境靠谱。system 分区大小和 odex 预编译也在这一节。system 分区在parameter文件里定义改小了刷机后空间不足改大了浪费 eMMCodex 预编译影响首次开机速度和 system 占用量产固件一般开调试固件可以关掉省编译时间。禁用 selinux 的方法文档也放在 3.2.6调试阶段关掉能少一堆权限报错但量产前必须恢复这个后面避坑章节会再提。3.2 固件烧写与量产Maskrom 模式与工具选择编译产物最终要落到板子上。文档 3.3 讲固件烧写3.4 讲量产烧写工具侧在 8.5 到 8.9 有 update.img 打包、固件签名、WNpctool 烧序列号/MAC、OemTool 打包、量产工具。烧写的第一道坎是让板子进对模式。RK3229 常见的烧写模式有两种Loader 模式和 Maskrom 模式。Loader 模式要求板子上已有可用的 U-Boot工具通过它来写 flashMaskrom 模式是芯片级的板子完全没系统或者 U-Boot 坏了也能进通常靠按住 recovery 键上电或者短接 flash 的特定引脚触发。新手最容易卡在“工具识别不到设备”八成是模式没进对。# 板子进 Maskrom 后Linux 主机上确认 USB 设备是否枚举 lsusb | grep -i rockchip # 用 upgrade_tool 查询设备状态工具在 RKTools 目录下 sudo ./upgrade_tool ld # 烧写完整 update.img sudo ./upgrade_tool uf update.imglsusb能看到 Rockchip 的 USB 设备说明 Maskrom 进成功了看不到就回去检查按键时序和 USB 线劣质线只供电不传数据是经典坑upgrade_tool ld列出当前连接的设备返回Maskrom或Loader字样uf是烧写完整固件如果只想烧单个分区比如只更新 boot 或 kernel用di -p partition_name image_file更省时间。量产阶段则走 8.9 的量产工具配合 8.7 的 WNpctool 烧序列号和 MAC——这一步在产线上是独立工位因为序列号和 MAC 必须一机一码不能打进公共 update.img 里。注意固件签名8.6在开启安全启动的板子上是必须的签名工具和密钥管理要提前规划临时补签会导致已烧写的板子无法升级。4. U-Boot 与内核配置logo、DTS、GPIO 与频率调整系统能起来之后接下来就是“按产品需求改”。这一层的工作集中在 U-Boot 和内核 dts改动看似零散但每一处都直接对应一个可见的产品行为开机画面、WiFi 能不能用、GPIO 电平对不对、跑多快、热不热。4.1 U-Boot logo 与固件生成文档第 4 章讲 U-Boot 开发4.1 是简介4.2 平台配置4.3 固件生成4.4 编译4.5 是 logo 相关配置其中 4.5.2 在 V1.03 里新增了开机 logo 限制描述。U-Boot 阶段的 logo 和 Android 开机动画是两回事前者是内核起来之前显示的那张图后者是bootanimation.zip。U-Boot logo 的限制主要在分辨率和格式超出范围要么不显示要么花屏。# U-Boot 编译在 u-boot 目录下 make rk3229_defconfig make -j8 # 固件生成依赖 rkbin 里的 loader 和 trust确认路径 ls ../rkbin/RK3229* 2/dev/nullmake rk3229_defconfig载入平台默认配置如果 SDK 里 defconfig 名字不同用ls configs/ | grep 3229找make -j8产出u-boot.bin等文件第三行确认rkbin目录下有对应的 loader 和 trust 二进制缺了会在打包阶段报错而不是编译阶段容易误判。logo 替换一般改u-boot里的 logo 源文件后重新编译具体格式和尺寸限制看 4.5.2文档明确写了限制条件照着卡就不会花屏。4.2 内核 DTSWiFi/BT、GPIO 映射与频率温控第 5 章是内核常见配置5.1 DTS 介绍5.2 WiFiBT 配置5.3 GPIO 对应关系5.4 ARM/GPU 频率修改5.5 温控配置5.6 PWM IR5.7 USB 默认打开 adb。这一章信息密度很高几乎每条都是实际项目必改项。DTS 是设备树RK3229 的板级差异全在这里。WiFi/BT 配置涉及供电 GPIO、使能引脚、SDIO 总线参数改错一个 GPIO 编号WiFi 就扫不到热点。GPIO 对应关系5.3是重灾区芯片手册的 GPIO 编号、dts 里的编号、sysfs 里看到的编号三者换算关系不统一文档专门列了注意点。我一般改完 dts 后先在 sysfs 里验证# 查看某个 GPIO 的当前方向和电平编号需按平台换算 cat /sys/kernel/debug/gpio # 确认 WiFi 模组供电脚状态 cat /sys/class/gpio/gpioXX/value/sys/kernel/debug/gpio列出所有已申请 GPIO 的归属和状态能快速看出 dts 里配的引脚有没有被别的驱动占用第二行读具体引脚电平验证供电和使能时序。频率修改5.4和温控5.5要一起看把 ARM/GPU 频率拉高性能上去了但温控阈值没同步调机器跑一会儿就降频甚至关机。5.7 的 USB 默认打开 adb 调试是 V1.02 新增的对调试阶段很实用改的是 dts 或 defconfig 里的 adb 属性量产前记得评估是否保留。5. Android 层配置与系统调试分区、OTA、低内存与 DRM内核和 U-Boot 搞定产品差异化的重头戏在 Android 层。第 6 章覆盖了预置 APK、开关机动画、parameter 分区、新增分区、OTA、预制 Demo、灾难恢复、禁用 selinux以及 Android 7.1 专属的开机视频、低内存优化、Widevine Level 1 配置。第 7 章是调试工具ADB、Logcat、Procrank、Dumpsys、音视频调试。这两章合起来基本就是“把公版系统改成你的产品”的全部动作。5.1 分区、OTA 与灾难恢复parameter 文件定义分区表6.5 专门讲它6.6 讲新增分区。改分区表是高风险操作改错起始地址或大小轻则某个分区挂载失败重则整机起不来。新增分区的典型场景是给客户预置一块数据区做法是在 parameter 里加一行再在 fstab 和 recovery 里同步三处缺一不可。OTA 升级6.7依赖分区布局和签名改过分区表之后旧的 OTA 包直接失效必须重新出包。系统灾难恢复6.9是救砖手段配合 Maskrom 模式使用板子刷坏后能通过特定组合键或短接进入恢复流程。这两块建议在改分区之前就把恢复路径验证一遍别等刷坏了才找后悔药。5.2 低内存优化与 Widevine Level 16.12 的低内存优化是 V1.03 新增的 Android 7.1 配置。RK3229 定位低成本盒子很多板子只有 512MB 或 1GB 内存Android 7.1 默认的内存策略在这种配置上会频繁杀后台。文档给的优化项包括调整 lowmemorykiller 阈值、裁剪系统服务、控制缓存进程数。这些参数不是照抄就完事要结合具体内存大小调内存配置调整方向注意点512MB激进裁剪后台、降低缓存上限别把 launcher 相关进程杀掉否则回桌面重载1GB适度放宽、保留常用服务重点压系统常驻进程不是压用户应用6.13 的 Widevine Level 1 配置是流媒体产品绕不开的。Level 1 要求内容解密和视频解码都在可信执行环境里完成配置涉及 trust 固件、keybox 和 OMX 组件文档给的是配置步骤但 keybox 本身需要走认证流程不是改几个文件就能拿到。这一点要提前跟项目方对齐预期别做到一半才发现认证周期比开发周期还长。5.3 调试工具链Procrank 与 Dumpsys 看什么第 7 章的工具里ADB 和 Logcat 大家都熟真正拉开排查效率的是 Procrank 和 Dumpsys。Procrank7.3按内存占用排序进程配合文档里的进程内存跟踪图能快速定位是谁把内存吃光了Dumpsys7.4能导出各系统服务的内部状态比如dumpsys meminfo看整体内存分布、dumpsys activity看 Activity 栈。# 按 PSS 排序看进程内存占用 procrank | head -20 # 看系统整体内存分布 dumpsys meminfo # 抓某个应用的详细内存 dumpsys meminfo com.example.appprocrank输出里重点看 PSS 列USS 更能反映进程独占内存dumpsys meminfo顶部的 Total PSS 和 Free RAM 是判断是否触发低内存回收的直接依据第三条针对具体包名能看到 Java Heap、Native Heap、Code 各段占用定位是代码泄漏还是 native 库吃内存。音视频问题7.5文档指向专门的工具和文档这类问题靠 log 很难定位一般要配合码流分析和 OMX 组件日志。6. 避坑与排查五个真实翻车点文档读得再细实操还是会踩坑。这一章列五个高频问题按“现象 → 原因 → 解决”写都是这套平台上反复出现的。6.1 编译报错找不到工具链现象make一开始就报arm-linux-gnueabihf-gcc: command not found或版本不匹配。原因环境里装了新版工具链PATH 优先命中或者根本没装文档对应版本。解决显式指定工具链路径在device/rockchip相关配置里改TARGET_TOOLCHAIN或者临时export PATH/opt/gcc-arm-4.9/bin:$PATH前置。别用系统自带的 gcc 编 3.10 内核warning 会淹没有效信息。6.2 烧写工具识别不到设备现象upgrade_tool ld返回空或 lsusb 看不到 Rockchip 设备。原因板子没进 Maskrom/Loader 模式或者 USB 线只供电。解决先换一根确认能传数据的线再按文档时序重新进 Maskrom按住 recovery 上电保持几秒再松。如果板子之前刷过半截固件可能停在异常状态断电冷却后重试。6.3 改完 dts 后 WiFi 不工作现象系统起来WiFi 开关打不开或扫不到热点。原因dts 里 WiFi 供电 GPIO 或使能引脚配错或者 SDIO 总线参数和模组不匹配。解决用/sys/kernel/debug/gpio核对引脚归属用示波器或万用表量供电脚时序再对照模组 Datasheet 检查 SDIO 时钟和总线宽度。改一处验证一处别一次改五个参数。6.4 低内存优化后桌面反复重载现象按 6.12 调完参数切回桌面时 launcher 重新加载体验很差。原因lowmemorykiller 阈值调得太激进把 launcher 的缓存进程也杀了。解决把 launcher 相关进程加入白名单oom_adj调低或者适度放宽阈值用procrank观察调整前后的 PSS 变化找到平衡点。6.5 禁用 selinux 后量产固件出问题现象调试阶段关了 selinux功能都正常量产固件恢复 selinux 后大量权限拒绝。原因调试期依赖了宽松策略没补对应的 sepolicy 规则。解决调试阶段就用permissive而不是完全关闭把 avc denied 日志收集起来补规则量产前切回enforcing做一轮完整回归。这个坑的代价很高量产后才发现要重新出固件。7. 进阶验证用 Kodi 与多媒体规格反推平台能力边界文档第 1 章的支持列表里有两块内容经常被忽略但对判断“这块板子到底能干什么”特别有用1.6 的多媒体编解码支持列表和 1.7 的 Kodi 支持程度。RK3229 的多媒体规格是 4K VP9 和 4K 10bit H265/H264 解码到 60fps1080P 多格式解码VC-1、MPEG-1/2/4、VP8JPEG 解码编码侧是 1080P H.264 和 JPEG。这些数字不是拿来背的是拿来验证的。我一般用 Kodi 做一轮平台能力压测因为它同时压解码、音频透传和渲染。文档说 RK3229 的 OMX 框架支持官方 Kodi 16.1 Jarvis 和 17.0 Krypton最高 4K 10bit 60fps 播放17.0 还支持 AudioTrack 音频透传同时推荐基于官方 16.1 深度定制的 RKMC 版本默认集成在 SDK 里额外支持 H265/H264/VP9 10bit60fps 输出、ISO/MKV Framepacking MVC3D、AC3/EAC3/TrueHD/DTS/DTSHD 最高 7.1 声道透传、硬件去噪和去交错。验证时按这个顺序走验证项测试素材观察点4K 10bit H265 解码60fps 测试片是否掉帧、CPU 占用是否异常高VP9 4K 解码VP9 编码片源软解还是硬解log 里看 OMX 组件音频透传AC3/DTS 多声道片源功放是否收到原始码流3D FramepackingMVC 3D 片源是否识别为 3D 模式如果 4K 片源播放时 CPU 占用飙到很高说明走的是软解OMX 硬解没生效回去查 dts 里的 VPU 节点和 OMX 组件配置音频透传失败先确认 Kodi 音频输出设成了 passthrough再查 HDMI 的 EDID 是否上报了对应格式。这套验证做完平台的能力边界就清楚了客户提“能不能播 4K”时你能给出有依据的答复而不是拍脑袋。从那以后我每次拿到一块 RK3229 的板子都强制先跑一遍支持列表核对加 Kodi 压测再动编译和改配置——先知道它能干什么再决定让它干什么比反过来省太多时间。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询