1. 从原理图信号到DTS节点:一条清晰的追踪路径
很多刚接触RK平台的朋友,拿到一块新的开发板或者自己设计的硬件,第一件事就是想让它“动”起来。而USB功能,作为最基础、最常用的外设接口,往往是调试的起点。但有时候你会发现,照着官方SDK的默认配置编译出来的系统,USB口就是没反应,插上U盘或者鼠标,一点动静都没有。这时候,一股无力感就会涌上来——硬件明明焊好了,软件也编译了,问题到底出在哪?
我刚开始做嵌入式开发的时候,也在这个问题上卡了很久。后来才明白,问题的核心往往在于设备树(DTS)的配置没有和实际的硬件原理图对齐。DTS不是凭空写出来的魔法文件,它是软件对硬件的一份“描述书”。如果你的描述和实际的硬件对不上号,那系统自然就“不认识”这个硬件,功能也就无从谈起。
所以,今天我想和你分享的,就是一套我从无数次踩坑中总结出来的、非常实用的方法论:如何从硬件原理图出发,一步步定位并配置DTS节点,最终让RK平台的USB功能正常工作。这个过程就像侦探破案,原理图是你的线索,DTS节点是你的目标,而中间的追踪逻辑就是你的推理过程。我们以最常见的RK3399平台上的一个USB Host口为例,把这个过程彻底拆解明白。别担心,即使你是新手,跟着这个思路走,也能很快上手。
2. 第一步:在原理图上找到你的USB“身份证”
配置DTS的第一步,绝对不是打开DTS文件就开始改。第一步必须是:拿出你的硬件原理图,找到你要配置的那个USB接口。这是所有工作的基石,方向错了,后面全白费。
2.1 理解USB在RK平台上的硬件架构
在RK的芯片里,一个完整的USB功能通常由三部分组成,你可以把它想象成一个快递收发系统:
- USB PHY:这是最前端的“收发员”和“翻译官”。物理线缆上传的是差分电信号(可以理解为一种特殊的摩尔斯电码),PHY负责把这些模拟电信号转换成数字世界能理解的0和1,同时也把芯片发出的数字信号转换成电信号发出去。它干的是最底层的脏活累活。
- USB控制器:这是“分拣中心”。它接收来自PHY翻译好的数据包,按照USB协议进行解析、打包、调度,并和芯片内部的总线(比如AHB)对接。常见的控制器有支持USB 2.0的EHCI和支持USB 1.1/1.0的OHCI。
- 供电电路:这是整个系统的“能源站”。不仅PHY本身需要精确的电压(如0.9V,1.8V,3.3V)才能稳定工作,USB接口上给外设供电的VBUS(通常是5V)也需要被正确控制。
我们的配置工作,就是要在DTS里准确地描述出这三部分,并确保它们之间的连接关系正确。
2.2 实战:在原理图上定位关键信息
现在,我们打开RK3399的原理图(这里以公开的参考设计为例)。假设我们要配置的是一个标准的USB Type-A Host接口。
首先,我们在原理图上搜索这个USB接口的插座(比如“USB_HOST0”)。找到后,我们需要追踪两条线索:
- 数据线通向哪里? 你会发现,USB的D+和D-这两根数据线,并没有直接连接到主控芯片RK3399,而是先连接到了一个叫USB2PHY0 的模块。这印证了我们刚才说的,数据先经过PHY。同时,你可能会看到PHY0还连着另一个Type-C接口,这说明一个PHY可以管理多个物理端口。
- 供电是谁控制的? 查看USB插座的VBUS引脚,看它连接到哪里。在参考设计中,它很可能连接到一个电源管理芯片(PMIC)的某个开关输出,比如叫
VCC5V0_USB。同时,你还需要留意PHY模块周围的几路模拟电源,比如USB_AVDD_0V9,它们通常也由PMIC提供。
通过这一步,我们得到了几个关键“身份证”信息:我们要用的是USB2PHY0下面的Host端口,它的VBUS电源来自VCC5V0_USB。记下这些名字,它们就是我们在DTS文件中要寻找的“嫌疑人”。

2万+

被折叠的 条评论
为什么被折叠?



