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

基于 Arm 的处理器

最新课程

热门课程

2 在 Linux 内核中配置 MUSB

我们在上一个视频中 了解了 Sitara 器件的 USB 硬件设计。 现在,我们要关注的是软件 -- Linux。 接下来的两个 视频将解释如何 将 Linux 内核 USB 移植到定制电路板上。 本视频着重 介绍 MUSB 模块, 而下一个视频 介绍 DWC3 模块。 该图显示了内核 USB 驱动程序栈。 位于顶部的是 内核功能驱动程序, 例如 SCSI 或网络。 在 USB 主机模式下, 它们将会由 USB 类 驱动程序调用; 在 USB 外设模式下, 它们将由 USB 小工具驱动程序调用。 在本视频的后面部分, 我会说明什么是 USB 类。 由类驱动程序或小工具 驱动程序调用的所有这些功能 都将传递给下一层, 即 USB 内核驱动程序。 该层会将 USB 规范中 定义的 USB 功能和协议 抽象出来。 该层与平台相关, 不会直接访问任何硬件。 下一层和 USB 内核是 USB 控制器驱动程序。 它直接操控 USB 控制器 以发送和接收 USB 数据包。 该层下面是其他 与平台相关的驱动程序, 例如 USB PHY 驱动程序、 USB 控制器平台胶合驱动程序 以及可选的 DMA 或 Extcon 驱动程序。 此图显示了 MUSB 主机模式驱动程序栈。 它与前一张幻灯片类似, 但提供了更多有关 MUSB 控制器的 详细信息。 该图显示,MUSB 控制器驱动程序具有 内核、主机和 DMA 驱动程序。 平台胶合层具有 针对 AM335x 和 OMAPL138 的 胶合驱动程序。 该层还具有 支持 DMA 传输的 CPPI 4.1 DMA 驱动程序。 这是 MUSB 设备 模式驱动程序栈。 它与主机模式 驱动程序栈类似, 但在 MUSB 控制器层中 使用的是 MUSB 小工具驱动 程序。 从前面的 USB 栈概述中, 我们了解到 USB 驱动程序栈有多个组件。 每个组件都有一个 或多个内核配置选项 用于内核调优。 接下来将展示 这些 USB 组件的 内核配置选项。 如果您不熟悉 内核配置选项或内核 菜单配置,请尝试 在互联网上学习相关内容。 互联网上有 很多这方面的信息。 什么是 USB 类? 它用于识别 USB 器件的功能。 例如,UAC 类可 识别 USB 音频设备。 而 MSC 类可识别 USB 海量存储设备。 每个类都具有 由 USB-IF 定义的 ID。 遗憾的是,USB 类的 内核配置选项并不位于 一个集中的位置。 它们要么 位于 USB 部分, 要么在每个 内核功能模块下。 因此,建议将 Processor SDK Linux 内核中的内核 defconfig 作为 停止点,以便启用 全部或至少是大多数 USB 类选项。 USB 小工具驱动 程序的内核配置选项 都位于“USB Gadget Support”下。 右侧的屏幕截图 显示了对应的位置。 对于 USB 内核驱动程序, 我们需要启用此屏幕截图中 突出显示的内核配置选项。 对于 MUSB 控制器 驱动程序,我们需要 启用此屏幕截图中 突出显示的内核配置选项。 对于 AM335x,我们 需要启用此屏幕截图中 突出显示的 USB 胶合 驱动程序内核配置选项。 对于 AM335x,我们 还需要启用此屏幕截图中 突出显示的 USB PHY 驱动程序内核配置选项。 此屏幕截图 显示了 OMAPL-138 MUSB 胶合驱动程序的 内核配置选项的位置。 此屏幕截图显示了 OMAPL-138 USB PHY 驱动程序的 USB 内核配置选项的位置。 要在 AM335x 或 OMAPL-138 上 使用面向 MUSB 的 DMA,我们还 需要启用 DMA 引擎中的 CPPI 4.1 DMA, 即屏幕截图中 突出显示的部分, 然后通过这张 截图中突出显示的 内核配置选项启用 CPPI DMA MUSB 驱动程序。 但如果您不想使用 MUSB CPPI DMA, 请启用此屏幕截图中 突出显示的内核配置选项。 大家可以看到, 许多内核配置选项 可用来启用 USB。 为避免出现 任何错误配置, 建议您从内核源代码中 提供的内核 defconfig 着手, 它可以启用所有这些 配置选项。 然后您可以对其进行 微调,使其适合您的工程。 我们完成了对 MUSB 内核配置选项的学习。 现在我们来看看 MUSB 设备树绑定。 对于 AM335x 器件, 所有与 USB 相关的 DT 节点都在 AM33xx.dtsi 这一 SoC DT 文件中定义。 USB 具有 许多 DT 属性, 但是在将 Linux 移植到定制板上时, 您只需要关注 其中的两个属性-- status 和 dr_mode。 默认情况下, status 属性在 AM33xx.dtsi 文件中设置为禁用。 因此,您必须在电路板 DT 文件中将该属性设置为“OK” 才能启用 USB。 请注意,必须为每个 USB 组件执行该操作, 如右侧示例中所示。 另一个 USB 属性是 dr_mode, 它定义 USB 模块 应采用的工作模式。 您需要在自己的板级 DT 文件中根据您的用例 对其进行恰当设置。 这张幻灯片解释了 OMAPL-138 器件的 MUSB DT 绑定。 它与前面针对 AM335x 器件的那张 幻灯片非常类似。 唯一的区别是 SOC DT 文件命名为 da850.dtsi,该文件 为 OMAPL-138 定义了所有 与 USB 相关的 DT 节点。 MUSB 默认在 USB 高速模式下工作。 但在一些用例中, 我们想将其限制为仅达到全速。 这可以通过设置 最高速度 DT 属性实现, 如右侧示例中所示。 以上就是本视频的全部内容。 如需更多信息, 请访问此处的这些链接。 如果您有任何问题, 请将其发布在 TI E2E 论坛上。 谢谢观看。

我们在上一个视频中 了解了 Sitara 器件的

USB 硬件设计。

现在,我们要关注的是软件 --

Linux。

接下来的两个 视频将解释如何

将 Linux 内核 USB 移植到定制电路板上。

本视频着重 介绍 MUSB 模块,

而下一个视频 介绍 DWC3 模块。

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

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

例如 SCSI 或网络。

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

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

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

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

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

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

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

抽象出来。

该层与平台相关,

不会直接访问任何硬件。

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

它直接操控 USB 控制器

以发送和接收 USB 数据包。

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

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

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

此图显示了 MUSB 主机模式驱动程序栈。

它与前一张幻灯片类似, 但提供了更多有关 MUSB 控制器的

详细信息。

该图显示,MUSB 控制器驱动程序具有

内核、主机和 DMA 驱动程序。

平台胶合层具有 针对 AM335x 和 OMAPL138 的

胶合驱动程序。

该层还具有 支持 DMA 传输的

CPPI 4.1 DMA 驱动程序。

这是 MUSB 设备 模式驱动程序栈。

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

但在 MUSB 控制器层中 使用的是 MUSB 小工具驱动

程序。

从前面的 USB 栈概述中,

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

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

用于内核调优。

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

内核配置选项。

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

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

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

什么是 USB 类?

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

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

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

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

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

一个集中的位置。

它们要么 位于 USB 部分,

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

因此,建议将 Processor SDK Linux

内核中的内核 defconfig 作为

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

USB 类选项。

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

都位于“USB Gadget Support”下。

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

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

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

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

启用此屏幕截图中

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

对于 AM335x,我们 需要启用此屏幕截图中

突出显示的 USB 胶合 驱动程序内核配置选项。

对于 AM335x,我们 还需要启用此屏幕截图中

突出显示的 USB PHY 驱动程序内核配置选项。

此屏幕截图 显示了 OMAPL-138 MUSB

胶合驱动程序的 内核配置选项的位置。

此屏幕截图显示了 OMAPL-138 USB PHY

驱动程序的 USB 内核配置选项的位置。

要在 AM335x 或 OMAPL-138 上 使用面向 MUSB 的 DMA,我们还

需要启用 DMA 引擎中的 CPPI 4.1 DMA,

即屏幕截图中 突出显示的部分,

然后通过这张 截图中突出显示的

内核配置选项启用 CPPI DMA MUSB 驱动程序。

但如果您不想使用 MUSB CPPI DMA,

请启用此屏幕截图中

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

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

可用来启用 USB。

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

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

它可以启用所有这些

配置选项。

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

我们完成了对 MUSB 内核配置选项的学习。

现在我们来看看 MUSB 设备树绑定。

对于 AM335x 器件, 所有与 USB 相关的

DT 节点都在 AM33xx.dtsi 这一 SoC DT 文件中定义。

USB 具有 许多 DT 属性,

但是在将 Linux 移植到定制板上时,

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

status 和 dr_mode。

默认情况下, status 属性在

AM33xx.dtsi 文件中设置为禁用。

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

才能启用 USB。

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

如右侧示例中所示。

另一个 USB 属性是 dr_mode,

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

您需要在自己的板级 DT 文件中根据您的用例

对其进行恰当设置。

这张幻灯片解释了 OMAPL-138 器件的 MUSB DT 绑定。

它与前面针对 AM335x 器件的那张

幻灯片非常类似。

唯一的区别是 SOC DT 文件命名为

da850.dtsi,该文件 为 OMAPL-138 定义了所有

与 USB 相关的 DT 节点。

MUSB 默认在 USB 高速模式下工作。

但在一些用例中, 我们想将其限制为仅达到全速。

这可以通过设置 最高速度 DT 属性实现,

如右侧示例中所示。

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

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

如果您有任何问题, 请将其发布在

TI E2E 论坛上。

谢谢观看。

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

视频简介

2 在 Linux 内核中配置 MUSB

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

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

TI培训小程序