首页 > 产品 > 微控制器 (MCU) 和处理器 > 使用 Linux 的 Sitara™ 设备中的 USB 系统设计 >

基于 Arm 的处理器

最新课程

热门课程

3 在 Linux 内核中配置 DWC3

在本视频中, 我们将介绍如何 将 Linux 内核的 DWC3 USB 模块 移植到客户电路板上。 要移植 Linux 内核, 需执行两个主要任务。 第一个任务 是配置内核, 以启用我们 需要的内核功能, 禁用不需要的内核功能。 第二个任务是修改 电路板设备树绑定, 让器件以我们 所需的方式工作。 在本视频中, 我们将介绍如何 配置内核 DWC3 配置选项和设备树 绑定。 在展开深入讨论之前, 我们先简要了解一下 内核 USB 以及 DWC3 驱动程序栈。 这有助于您了解 DWC3 内核配置选项。 该图显示了内核 USB 驱动程序栈。 位于顶部的是 内核功能驱动程序, 例如 SCSI 或网络。 在 USB 主机模式下, 它们将会由 USB 类 驱动程序调用; 在 USB 外设模式下, 它们将由 USB 小工具驱动程序调用。 在本视频的后面部分, 我会说明什么是 USB 类。 由类驱动程序或小工具 驱动程序调用的所有这些功能 都将传递给下一层, 即 USB 内核驱动程序。 该层会将 USB 规范中 定义的 USB 功能和协议 抽象出来。 该层与平台相关, 不会直接访问任何硬件。 下一层和 USB 内核是 USB 控制器驱动程序。 它直接操控 USB 控制器 以发送和接收 USB 数据包。 该层下面是其他 与平台相关的驱动程序, 例如 USB PHY 驱动程序、 USB 控制器平台胶合驱动程序 以及可选的 DMA 或 Extcon 驱动程序。 该图显示了 DMC3 主机模式驱动程序栈。 它与上一张幻灯片中的栈 类似,不过包含 DWC3 控制器的 更多详细信息。 该图显示控制器驱动程序层 有 DWC3 内核、DWC3 主机 以及 xHCI 控制器驱动程序。 适用于 AM467x 和 AM57x 的 DWC3 胶合驱动程序称为 DWC3-OMAP。 此外,AM57x 器件 还需要 Extcon 驱动程序 来处理 VBUS 和 ID 事件。 这是 DWC3 器件模式驱动 程序栈。 它与主机模式 驱动程序栈类似, 但在 DWC3 控制器 层中改用 DWC3 小工具 驱动程序。 从前面的 USB 栈概述中, 我们了解到 USB 驱动 程序栈具有多个组件。 每个组件都有一个 或多个内核配置选项 用于内核调优。 接下来将展示 这些 USB 组件的 内核配置选项。 如果您不熟悉内核 配置选项或内核 菜单配置,请尝试 在互联网上学习相关内容。 互联网上有 很多这方面的信息。 什么是 USB 类? 它用于识别 USB 器件的功能。 例如,UAC 类可 识别 USB 音频设备。 而 MSC 类可识别 USB 海量存储设备。 每个类都具有 由 USB-IF 定义的 ID。 遗憾的是,USB 类的 内核配置选项并不位于 一个集中的位置。 它们要么 位于 USB 部分, 要么在每个 内核功能模块下。 因此,建议将 Processor SDK Linux 内核中的内核 defconfig 作为 停止点,以便启用 全部或至少是大多数 USB 类选项。 USB 小工具驱动 程序的内核配置选项 都位于“USB Gadget Support”下。 右侧的屏幕截图 显示了对应的位置。 对于 USB 内核驱动程序, 我们需要启用此屏幕截图中 突出显示的内核配置选项。 对于 DWC3 主机模式,需要 启用 xHCI 控制器驱动程序, 以及此屏幕截图中 突出显示的内核配置选项。 对于 DWC3 控制器 驱动程序,我们需要 启用此屏幕截图中 突出显示的内核配置选项。 对于 AM467x 和 AM57x 器件, 我们需要启用 DWC3 的 DWC3-OMAP 胶合驱动程序, 以及此屏幕截图中 突出显示的内核配置选项。 对于 AM467x 或 AM57x 器件, 我们还需要启用此屏幕截图中 突出显示的 USB PHY 驱动程序 内核配置选项。 请注意,AM467x USB 不支持超高速传输, 因此不需要超高速 USB PHY 驱动程序。 我们不需要启用 TI_PIPE3 配置选项。 AM57x 器件没有 专用的 USB VBUS 和 ID 引脚, GPIO 引脚应该 用于相应的用途。 我们需要启用 Extcon 驱动程序, 以及此屏幕截图中 突出显示的内核配置选项。 大家可以看到, 许多内核配置选项 可用来启用 USB。 为避免出现 任何错误配置, 建议您从内核源代码中 提供的内核 defconfig 着手, 它可以启用所有这些 配置选项。 然后您可以对其进行 微调,使其适合您的工程。 我们已经介绍了 DWC3 内核配置选项。 现在,我们来了解 DWC3 设备树绑定。 对于 AM437x 器件,所有 与 USB 相关的 DT 节点都在 名为 am4372.dtsi 的 SoC DT 文件中定义。 USB 的 DT 属性有很多, 但在将 Linux 移植 到客户电路板上时, 您只需要关注 其中的两个属性-- status 和 dr_mode。 默认情况下, status 属性在 文件 AM4372.dtsi 中 已经设置为“disabled”。 因此,您必须在电路板 DT 文件中将该属性设置为“OK” 才能启用 USB。 请注意,您必须为 每个 USB 组件执行此操作, 如右侧示例中所示。 另一个 USB 属性是 dr_mode, 它定义 USB 模块 应采用的工作模式。 您需要为自己的 USB 用例正确设置该属性。 这张幻灯片介绍了 AM57x 器件的 DWC3 DT 绑定。 它与上一张幻灯片中 针对 AM467x 器件的 绑定类似, 但有一些不同之处 值得一提。 AM57x 的 SoC DT 文件 命名为 dra7.dtsi, 它定义 AM57x 器件的 所有与 USB 相关的 DT 节点。 status 属性在 SoC DT 文件中并未被禁用。 如果您想要禁用 USB, 则必须专门在 电路板 DT 文件中 将其设置为“disabled”。 如前面所述, Extcon 驱动程序 是 AM57x USB 的必需组件。 因此,USB VBUS 或 ID 事件的 GPIO 引脚 应在电路板 DT 文件中定义。 请参阅下一张 幻灯片中的示例。 这是 AM57x 电路板的 两个 DWC3 DT 示例。 您可以看到 extcon 节点是如何定义的 以及用于 VBUS 和 ID 事件的参考。 在器件模式下, DWC3 默认以 USB 超高速 或高速工作。 但在某些用例中, 我们希望将其 限制为仅以全速工作。 这可以通过在 DWC3 DT 节点中设置 DT 属性的最高速度 来完成。 以上就是本视频的全部内容。 如需更多信息, 请访问此处的这些链接。 如果您有任何问题, 请在 TI E2E 论坛上发布。 谢谢观看。

在本视频中, 我们将介绍如何

将 Linux 内核的 DWC3 USB 模块

移植到客户电路板上。

要移植 Linux 内核, 需执行两个主要任务。

第一个任务 是配置内核,

以启用我们 需要的内核功能,

禁用不需要的内核功能。

第二个任务是修改 电路板设备树绑定,

让器件以我们 所需的方式工作。

在本视频中, 我们将介绍如何

配置内核 DWC3 配置选项和设备树

绑定。

在展开深入讨论之前, 我们先简要了解一下

内核 USB 以及 DWC3 驱动程序栈。

这有助于您了解 DWC3 内核配置选项。

该图显示了内核 USB 驱动程序栈。

位于顶部的是 内核功能驱动程序,

例如 SCSI 或网络。

在 USB 主机模式下, 它们将会由 USB 类

驱动程序调用; 在 USB 外设模式下,

它们将由 USB 小工具驱动程序调用。

在本视频的后面部分, 我会说明什么是 USB 类。

由类驱动程序或小工具 驱动程序调用的所有这些功能

都将传递给下一层, 即 USB 内核驱动程序。

该层会将 USB 规范中 定义的 USB 功能和协议

抽象出来。

该层与平台相关,

不会直接访问任何硬件。

下一层和 USB 内核是 USB 控制器驱动程序。

它直接操控 USB 控制器

以发送和接收 USB 数据包。

该层下面是其他 与平台相关的驱动程序,

例如 USB PHY 驱动程序、 USB 控制器平台胶合驱动程序

以及可选的 DMA 或 Extcon 驱动程序。

该图显示了 DMC3 主机模式驱动程序栈。

它与上一张幻灯片中的栈 类似,不过包含 DWC3 控制器的

更多详细信息。

该图显示控制器驱动程序层 有 DWC3 内核、DWC3 主机

以及 xHCI 控制器驱动程序。

适用于 AM467x 和 AM57x 的 DWC3 胶合驱动程序称为 DWC3-OMAP。

此外,AM57x 器件 还需要 Extcon 驱动程序

来处理 VBUS 和 ID 事件。 这是 DWC3 器件模式驱动

程序栈。

它与主机模式 驱动程序栈类似,

但在 DWC3 控制器 层中改用 DWC3 小工具

驱动程序。

从前面的 USB 栈概述中,

我们了解到 USB 驱动 程序栈具有多个组件。

每个组件都有一个 或多个内核配置选项

用于内核调优。

接下来将展示 这些 USB 组件的

内核配置选项。

如果您不熟悉内核 配置选项或内核

菜单配置,请尝试 在互联网上学习相关内容。

互联网上有 很多这方面的信息。

什么是 USB 类?

它用于识别 USB 器件的功能。

例如,UAC 类可 识别 USB 音频设备。

而 MSC 类可识别 USB 海量存储设备。

每个类都具有 由 USB-IF 定义的 ID。

遗憾的是,USB 类的 内核配置选项并不位于

一个集中的位置。

它们要么 位于 USB 部分,

要么在每个 内核功能模块下。

因此,建议将 Processor SDK Linux

内核中的内核 defconfig 作为

停止点,以便启用 全部或至少是大多数

USB 类选项。

USB 小工具驱动 程序的内核配置选项

都位于“USB Gadget Support”下。

右侧的屏幕截图 显示了对应的位置。

对于 USB 内核驱动程序, 我们需要启用此屏幕截图中

突出显示的内核配置选项。

对于 DWC3 主机模式,需要 启用 xHCI 控制器驱动程序,

以及此屏幕截图中

突出显示的内核配置选项。

对于 DWC3 控制器 驱动程序,我们需要

启用此屏幕截图中

突出显示的内核配置选项。

对于 AM467x 和 AM57x 器件,

我们需要启用 DWC3 的 DWC3-OMAP 胶合驱动程序,

以及此屏幕截图中 突出显示的内核配置选项。

对于 AM467x 或 AM57x 器件,

我们还需要启用此屏幕截图中 突出显示的 USB PHY 驱动程序

内核配置选项。

请注意,AM467x USB 不支持超高速传输,

因此不需要超高速 USB PHY 驱动程序。

我们不需要启用 TI_PIPE3 配置选项。

AM57x 器件没有 专用的 USB VBUS

和 ID 引脚, GPIO 引脚应该

用于相应的用途。

我们需要启用 Extcon 驱动程序,

以及此屏幕截图中 突出显示的内核配置选项。

大家可以看到, 许多内核配置选项

可用来启用 USB。

为避免出现 任何错误配置,

建议您从内核源代码中 提供的内核 defconfig 着手,

它可以启用所有这些

配置选项。

然后您可以对其进行 微调,使其适合您的工程。

我们已经介绍了 DWC3 内核配置选项。

现在,我们来了解 DWC3 设备树绑定。

对于 AM437x 器件,所有 与 USB 相关的 DT 节点都在

名为 am4372.dtsi 的 SoC DT 文件中定义。

USB 的 DT 属性有很多,

但在将 Linux 移植 到客户电路板上时,

您只需要关注 其中的两个属性--

status 和 dr_mode。

默认情况下, status 属性在

文件 AM4372.dtsi 中 已经设置为“disabled”。

因此,您必须在电路板 DT 文件中将该属性设置为“OK”

才能启用 USB。

请注意,您必须为 每个 USB 组件执行此操作,

如右侧示例中所示。

另一个 USB 属性是 dr_mode,

它定义 USB 模块 应采用的工作模式。

您需要为自己的 USB 用例正确设置该属性。

这张幻灯片介绍了 AM57x 器件的 DWC3 DT 绑定。

它与上一张幻灯片中 针对 AM467x 器件的

绑定类似, 但有一些不同之处

值得一提。

AM57x 的 SoC DT 文件

命名为 dra7.dtsi, 它定义 AM57x 器件的

所有与 USB 相关的 DT 节点。

status 属性在 SoC DT 文件中并未被禁用。

如果您想要禁用 USB,

则必须专门在 电路板 DT 文件中

将其设置为“disabled”。

如前面所述, Extcon 驱动程序

是 AM57x USB 的必需组件。

因此,USB VBUS 或 ID 事件的 GPIO 引脚

应在电路板 DT 文件中定义。

请参阅下一张 幻灯片中的示例。

这是 AM57x 电路板的 两个 DWC3 DT 示例。

您可以看到 extcon 节点是如何定义的

以及用于 VBUS 和 ID 事件的参考。

在器件模式下, DWC3 默认以 USB 超高速

或高速工作。 但在某些用例中,

我们希望将其 限制为仅以全速工作。

这可以通过在 DWC3 DT 节点中设置 DT 属性的最高速度

来完成。

以上就是本视频的全部内容。

如需更多信息, 请访问此处的这些链接。

如果您有任何问题, 请在 TI E2E 论坛上发布。

谢谢观看。

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

3 在 Linux 内核中配置 DWC3

所属课程:使用 Linux 的 Sitara™ 设备中的 USB 系统设计 发布时间:2022.04.12 视频集数:7 本节视频时长:00:09:19

本培训概述了 Sitara 嵌入式处理器(AM335x、AM437x 和 AM57x)中的 USB 子系统。它还介绍了仅以数字为重点的 USB 硬件设计。包括参考设计、硬件设计清单和常见的设计错误。

TI培训小程序