第1章 Rockchip平台概述

做嵌入式Linux驱动开发,绕不开Rockchip这个平台。我最早接触RK芯片是在2014年,那时候RK3288刚出来,做平板和电视盒子的方案商几乎人手一块。这么多年下来,RK从消费电子一路杀到工业、AI边缘计算,生态越来越成熟。

这一章,我们先从整体上认识Rockchip家族。说白了,就是搞清楚三件事:有哪些芯片能用、怎么选、上电后它是怎么跑起来的。

1.1 RK芯片家族介绍

Rockchip的产品线,我习惯按应用场景分成三大类:

系列 典型型号 应用场景 核心特点
消费/平板 RK3288、RK3399 平板、电视盒子、广告机 性能均衡,多媒体能力强
AIoT/边缘计算 RK3568、RK3588 智能NVR、边缘服务器、工控 内置NPU,支持多路视频
轻量/低功耗 RK3308、RK2108 智能音箱、IoT网关 功耗低,成本敏感

这里面,RK3399 和 RK3568 是我项目里用得最多的。RK3399 是双核Cortex-A72加四核Cortex-A53的big.LITTLE架构,性能在当年很能打。RK3568 则是四核A55加1TOPS NPU,功耗控制得特别好,做Linux工控板非常稳。

个人经验:如果你做的是消费类产品,RK3399 的社区资源最丰富,遇到问题基本都能搜到答案。但如果是工业项目,我建议优先考虑 RK3568 或 RK3588,它们的长期供货和温度范围更有保障。

1.2 RK芯片选型指南

选型这件事,很多新手容易只看主频和核心数。其实在嵌入式Linux驱动开发里,有几个关键点比CPU频率更重要。

我列了一个选型检查清单,每次做方案我都会过一遍:

  1. 内存接口:支持DDR3还是DDR4/LPDDR4?最大容量多少?这直接决定你的软件复杂度。
  2. 存储接口:eMMC版本、SD卡、SATA、NVMe——你的系统需要多大带宽?
  3. 显示输出:HDMI、MIPI DSI、eDP、LVDS——多屏同显还是异显?
  4. 视频编解码:H.264/H.265的编解码路数,4K还是1080p?
  5. 外设接口:USB3.0、PCIe、GMAC、CAN、SPI、I2C——够不够用?
  6. NPU算力:0.5TOPS还是6TOPS?你的AI模型跑得动吗?
  7. 温度范围:商业级0~70°C还是工业级-40~85°C?

避坑提醒:我曾经在一个项目中选了RK3399做户外设备,结果夏天高温时频繁死机。后来查资料才发现RK3399的结温上限是85°C,而实际壳温在阳光下轻松到75°C,内部结温早就超了。从那以后,工业项目我必看温度等级。

另外,BSP支持也是选型的关键。Rockchip官方对每个芯片的Linux BSP维护力度不一样。RK3568和RK3588的BSP更新最频繁,内核版本也新。而一些老芯片如RK3288,官方已经停止更新,只能用社区维护的老内核。

1.3 RK芯片启动流程

搞驱动开发,不理解启动流程,你连log从哪里打印的都搞不清楚。RK芯片的启动流程,我画了一张图,你看完就明白了:

RK芯片启动流程 BootROM 存储介质检测 SPL (DDR初始化) U-Boot Linux Kernel 说明 BootROM固化在芯片内部 不可修改,负责加载SPL 支持eMMC/SD/NAND/SPI SPL初始化DDR控制器 加载U-Boot到DRAM 这是驱动调试第一关

整个流程分五步走:

  • BootROM:芯片上电后,CPU从内部ROM开始执行。这段代码是固化的,厂家写好,你改不了。它负责检测启动介质——先看eMMC有没有镜像,没有就试SD卡,再不行就进USB下载模式。
  • 存储介质检测:BootROM按照预设的优先级扫描启动设备。RK芯片默认顺序是:eMMC → SD卡 → USB下载。这个顺序可以通过烧写工具或OTP配置修改。
  • SPL(Secondary Program Loader):这是你第一个能接触到的代码。SPL非常小,主要干两件事:初始化DDR控制器、把U-Boot从存储介质加载到DDR里。嗯,这里要注意,如果DDR初始化失败,你连串口log都看不到。
  • U-Boot:完整的bootloader,负责加载设备树、初始化外设(比如网卡、存储)、最后启动内核。RK平台用U-Boot 2017.09或2020.04版本比较多。
  • Linux Kernel:U-Boot把控制权交给内核,内核解压、初始化各子系统、挂载根文件系统,最终启动用户空间。

调试技巧:如果你遇到板子完全没反应,先别急着怀疑硬件。把串口接上,波特率设成1500000(RK默认),看有没有BootROM的打印。如果连BootROM的log都没有,那才是硬件问题。我遇到过好几次,其实是串口线接反了。

这里有个关键点:SPL和U-Boot的代码是开源的,你可以在Rockchip的官方GitHub仓库找到。驱动开发中,很多底层调试(比如DDR频率、时钟配置)都需要修改SPL代码。我个人习惯在SPL阶段就加上串口打印,这样能尽早确认硬件是否正常。

1.4 小结

这一章我们快速过了一遍Rockchip的芯片家族、选型要点和启动流程。说白了,选型看需求,启动看流程。下一章我们会深入RK平台的开发环境搭建,包括交叉编译工具链、BSP下载和第一次编译。到时候我会手把手带你跑通第一个镜像。

记住一句话:搞RK驱动,先把启动流程刻在脑子里。log从哪里来、卡在哪一步、怎么加调试——全依赖这个基础。