这颗芯片在国产板卡里出现得太频繁了:RK3399 六核、双通道、带 Mali-T860,做瘦客户机、工控一体机、广告机、自助终端、边缘盒子的产品经理都绕不开它。但真正让人卡住的往往不是硬件选型,而是 Android 10 这一代的分层变化——HAL 拆得细、Device Tree 绑得紧、SELinux 不再是可选项、VNDK 把厂商实现和框架隔开。写惯 Android 5/6 那一代的驱动代码,搬到 Android 10 上会被编译链和权限策略反复打回。

先弄清楚自己要补哪一块

这不是一门从头讲 C 语言和 Linux 基本命令的课,前提是你已经能看懂 platform driver 的基本骨架,知道 probe、resource、中断注册这些概念,也能在 Linux 下敲通编译脚本。它的价值集中在三处常见缺口:一是从裸机/单片机转过来的工程师,习惯直接操作寄存器,到了内核态不知道怎么用子系统框架表达同一个动作;二是做应用或 Framework 出身、被要求兼一下底层,面对 dts 和 sysfs 不知道从哪下手;三是维护老 BSP 的人,要把 4.x 内核时代的驱动思路更新到 Android 10 的 GKI 前夜。

如果你连设备树语法、GPIO 子系统、pinctrl 的基本用法都还没建立概念,这门课会让你跟得很吃力,建议先把基础补上再回来。

它真正会讲到的主题

  • Android 10 驱动分层与加载流程:从内核启动到 init 拉起、再到 HAL 服务注册,一条链路走通,看清楚自己写的代码处在哪一层。
  • 设备树在 RK3399 上的组织方式:节点怎么描述、资源怎么被解析、pinctrl 与 GPIO 怎么绑到具体外设,以及改错了会出现什么症状。
  • 字符设备与 misc 设备的取舍,file_operations 的实现路径,以及用户态通过设备节点读写时的常见坑。
  • 中断处理分上下半部、工作队列与 tasklet 的选择依据,配合 RK3399 的 GIC 中断控制器理解优先级和共享中断。
  • Android 特有的约束:SELinux 策略怎么放行设备节点、属性权限如何配置、HAL 接口与 VNDK 边界对驱动暴露方式的影响。

这些内容不是孤立的知识点,它们串起来回答的是同一个问题:一个外设在 Android 10 的板子上从上电到被 App 用到,中间到底经过了什么。

怎么练才不作废

视频看完就忘,是驱动学习里最普遍的结果。可行的做法是每看完一个外设模块,立刻在那块板子上找一个对应的现成节点,把 dts 片段、驱动源码、sysfs 入口三样东西对上号,然后尝试改动其中一个参数,观察行为变化。比如改一个 GPIO 的极性、把一个中断触发方式从上升沿改成双边沿、把打印等级调高,看内核日志里哪些信息变了。这种「改一个变量、看一处现象」的循环,比把整章抄一遍有用得多。

每两三个模块之后,自己做一次小结:这个外设属于哪类子系统、注册时向内核提交了什么、卸载时释放了什么资源。如果能不看资料把这三问答清楚,说明这一块是真的记住了。

学完应该能回答的问题

  • 在 RK3399 上新增一个 I2C 从设备,需要动哪几个文件,各自负责什么?
  • 驱动加载了但设备节点没出现,你会按什么顺序排查?
  • App 访问设备返回权限错误,是 SELinux 还是文件权限的问题,怎么区分?
  • Android 10 的 HAL 拆分对你写驱动的方式带来了哪些实际约束?
  • 同一个外设在旧内核上能跑,迁到 Android 10 上挂了,最可能卡在哪一步?

能答上这五个问题,说明你已经有能力接手一块 RK3399 板子的外设适配工作,而不是只会跟着视频敲。答不上来的,回头补对应章节,比从头再看一遍省时间。


RK3399 Android 10.0 驱 动开发视频教程

课程推荐

《价值3000元 RK3399 Android 10.0 驱动开发视频教程》RK3399 Android 10.0 驱 动开发视频教程【技能收获】学完可掌握:Linux 运维、网络工程 / CCNP。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。

视频目录(57 节)

*   1 RK3399Android10.0课程介绍-开发环境开发.mp4

*   2 gpioAPK控制及相关权限添加详细介绍.mp4

*   3 第3节RK3399Android10课程之EDP屏理论篇.mp4

*   4 字符设备简单驱动入门.mp4

*   5 字符设备驱动传统写法(1)---驱动编写.mp4

*   6 字符设备驱动传统写法(1)---linux.mp4

*   7 字符设备驱动传统写法(1)--Androidndkjni.mp4

*   8 字符设备驱动传统写法(2)---驱动编写.mp4

*   9 驱动传统写法(2)linux及Androidndkjni.mp4

*   10 字符设备驱动传统写法(3)---驱动编写.mp4

*   11 字符设备驱动传统写法(3)---linux.mp4

*   12 字符设备驱动传统写法(3)--Androidndkjni.mp4

*   13 platform设备驱动及LED操作---驱动编写(1).mp4

*   14 platform设备驱动及LED操作---驱动编写(2).mp4

*   15 platformlinux及Androidndkjni.mp4

*   16 NDKJNIAPK放进Android系统中编译--手工签名.mp4

*   17 JNIAPK放进Android系统中编译--系统编译签名方式.mp4

*   18 直接生成系统权限NDKapk并放进Android系统中编译.mp4

*   19 NDKJNI源码如何放进Android系统中编译并做系统应用.mp4

*   20 EDP屏理论篇.mp4

*   21 EDP屏实操篇.mp4

*   22 EDP屏提高篇.mp4

*   23 MIPI屏理论篇.mp4

*   24 MIPI屏实操篇(1).mp4

*   25 MIPI屏实操篇(2).mp4

*   26 MIPI屏提高篇(1).mp4

*   27 MIPI屏提高篇(2)-时序讲解.mp4

*   28 HDMI屏理论与实操篇.mp4

*   29 HDMI屏提高篇(1)-解析EDID信息并设置默认分辨率.mp4

*   30 HDMI屏提高篇(2)-解析EDID添加新的默认分辨率实操.mp4

*   31 LVDS屏理论概述.mp4

*   32 Backlight背光.mp4

*   33 TP基本篇.mp4

*   34 TP提高篇(1).mp4

*   35 TP提高篇(2).mp4

*   36 Audio基本篇simple-card.mp4

*   37 Audio提高篇(1)-配置讲解.mp4

*   38 Audio提高篇(2)-Audio-route.mp4

*   39 Audio提高篇(3)-声卡调试.mp4

*   40 WIFI实操篇.mp4

*   41 WIFI提高篇.mp4

*   42 Bluetooth实操及总结篇.mp4

*   43 较新版本LTE5GDriverUserGuide讲解.mp4

*   44 老WCDMALTEDriverUserGuide讲解.mp4

*   45 AndroidRILDriverUserGuide讲解.mp4

*   46 4G提高篇(1)-kernel详细驱动添加过程及分析.mp4

*   47 4G提高篇(2)-ril详细添加过程及分析.mp4

*   48 4G提高篇(3)-调试方法.mp4

*   49 ethernet以太网理论与实操篇.mp4

*   50 ethernet以太网提高篇.mp4

*   51 gpio驱动编写及设备节点创建.mp4

*   52 gpio工作队列创建.mp4

*   53 gpioAPK控制及相关权限添加详细介绍-1672152813.mp4

*   54 mipicamera驱动详解.mp4

*   55 mipicamera提高篇-实操与调试详解.mp4

*   56 串口uart调试.mp4

*   57 TFSD卡SDIOEMMC.mp4