STM32F407第2章 ThreadX USBX协议栈介绍

Posted Simon223

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F407第2章 ThreadX USBX协议栈介绍相关的知识,希望对你有一定的参考价值。

教程更新中:ThreadX USBX协议栈教程更新记录贴,前5章发布(2021-10-11) - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!http://www.armbbs.cn/forum.php?mod=viewthread&tid=108546

第2章   ThreadX USBX协议栈介绍

本章节介绍 ThreadX USBX文件系统,让大家对 ThreadX USBX有一个整体的了解。

目录

2.1   初学者重要提示

2.2   Express Logic公司介绍

2.2.1  ThreadX内核

2.2.2  NetX网络协议栈

2.2.3  GUIX图形界面

2.2.4  FileX文件系统

2.2.5  LevelX擦写均衡保护层

2.3   ThreadX USBX简介

2.3.1  内存需求

2.3.2  USBX的USB规范认证

2.3.3  USBX 支持的USB厂商

2.3.4  USBX设备类支持

2.3.5  USBX主机类支持

2.3.6  USBX自定义类支持

2.3.7  USBX的Pictbridge支持

2.3.8  API命名规则

2.3.9  USBX的主机类API资源占用

2.3.10        USBX的设备类API资源占用

2.3.11        快速推向市场

2.3.12        高质量源代码

2.4   ThreadX各行各业应用案例

2.5   ThreadX论坛

2.6   总结


2.1   初学者重要提示

1、  ThreadX是小型RTOS的巅峰之作,通过了各行各业的安全认证,并且大部分都是最高安全标准。作为中间件的USBX文件系统也通过了各种安全认证。

2.2   Express Logic公司介绍

ThreadX的作者是William lamie(同样是Nucleus RTOS的原始作者,于1990年发布)。1996的时候成立了Express Logic,并于1997发布首版ThreadX RTOS。

  •   ThreadX4发布于2001年,ThreadX5发布于2005年,ThreadX6发布于2020年。
  •   FileX – ThreadX的嵌入式文件系统于1999年发布首版。
  •   NetX – ThreadX的嵌入式TCP / IP网络协议栈于2002年发布首版。
  •   USBX – ThreadX的嵌入式USB协议栈于2004年发布首版。
  •   2009年推出了适用于SMP多核环境的ThreadX。
  •   2011年发布支持动态应用加载的ThreadX Modules。
  •   GUIX – ThreadX的嵌入式UI于2014年发布首版。
  •   Microsoft在2019年4月18日以未公开的价格购买了Express Logic。

2.2.1  ThreadX内核

ThreadX几乎是小型RTOS的巅峰之作,不管你之前用的那个OS,如果有精力建议还是学习下。62亿电子设备采用,是其它RTOS无法逾越的高山。ThreadX的产品涵盖了各种领域,包括NASA的多个太空探测项目,飞机自动驾驶仪系统,火星侦察轨道器等。

 

ThreadX及其所有中间件的安全认证等级,至今没有一款小型RTOS可以与其匹敌。这么多安全认证,公司要入大量财力,人力和物力才可以完成,早前Micrium的一篇文章还谈过这个问题,投入了太多资金和人力了,还与风河的VxWorks做了简单对比。

(1)医疗 - FDA510(k),IEC-62304 Class C,IEC-60601,ISO-14971

(2)工业 - UL-1998,IEC-61508 SIL 4

(3)运输/铁路 - EN50128 SIL 4,BS50128,  49CFR236,IEC-61508

(4)航空航天设备 - DO-178B,ED-12B,DO-278

(5)汽车    - IEC-61508 ASIL D

(6)核应用 - IEC-61508

(7)家电   - UL/IEC 60730/60335

规格如下:

 

2.2.2  NetX网络协议栈

ThreadX的网络协议栈对其它网络协议栈几乎是碾压性优势。一张图,几乎涵盖了我们日常项目大部分应用:

 

各个行业的安全认证:

 

物联网协议方向安全认证:

 

加密库也做了认证:

 

2.2.3  GUIX图形界面

GUIX用于图形界面设计,功能强劲,特别是配套的图形界面开发软件GUIX Studio,可以添加设置各种主题,各种界面效果,各种字体展示,各种图片格式设置,真的是一条龙,非常方便。而且GUIX有各种安全认证。

GUIX通过了医疗认证IEC-62304 Class C,汽车认证IEC-61508 ASIL D,工业认证IEC-61508 SIL 4和运输/铁路认证EN50128,表明GUIX可用于安全关键型系统。

 

规格如下:

 

2.2.4  FileX文件系统

ThreadX的文件系统非常强劲,通过了各行各业的高等级安全认证。其它文件系统别说安全认证了,安全措施都不多,甚至没有。

 

规格如下:

 

2.2.5  LevelX擦写均衡保护层

LevelX为NAND和NOR型Flash提供擦写均衡支持,并且对于NAND型,还支持ECC校验和坏块管理。

由于NAND和NOR型Flash擦除次数是有限的,因此均匀分配闪存使用至关重要。这通常称为擦写均衡,LevelX为此而生。LevelX向用户提供一个逻辑扇区阵列,这些逻辑扇区映射到LevelX内部的物理闪存。应用程序可以将LevelX与FileX结合使用,也可以直接读取/写入逻辑扇区。LevelX专为容错而设计。Flash更新是分多个步骤进行的,每个步骤都可以中断。在下一次操作期间,LevelX自动恢复到最佳状态。

2.3   ThreadX USBX简介

USBX 是一种高性能的USB Host、Device和OTG嵌入式协议栈。USBX 与ThreadX完美配套,适用于所有支持ThreadX的处理器。 与ThreadX一样,USBX 也采用占用空间小、性能高的设计,特别适用于需要与 USB 设备对接的深度嵌入式应用程序。

USBX Host/Device嵌入式USB 协议栈是工业级的嵌入式USB解决方案,专门设计用于深度嵌入式应用程序、实时应用程序和 IoT 应用程序。USBX提供Host、Device和 OTG 支持以及广泛类支持。 USBX 与 ThreadX 实时操作系统、FileX 嵌入式 FAT 兼容文件系统、NetX 和 NetXDuo 嵌入式 TCP/IP网络协议栈完美配套。凭借所有这些以及占用空间极小、执行速度快、易于使用的优势,USBX 已成为需要建立 USB 连接的、要求最高的嵌入式 IoT 应用程序的理想选择。

 

 

2.3.1  内存需求

USBX 的占用空间小,只需占用 10.5 KB 闪存和 5.1 KB RAM 来提供 USBX Device CDC/ACM 支持。 要提供 USBX Host CDC/ACM 支持,它至少需要占用 18 KB Flash和 25 KB RAM。

与 ThreadX 一样,USBX 的大小会根据应用程序实际使用的服务自动裁剪。无需复杂的配置和生成参数,使开发人员能够更轻松地实现。

2.3.2  USBX的USB规范认证

已使用 USB IF 标准测试工具 USBCV 对 USBX 设备堆栈进行严格的测试,以确保完全符合 USB 规范以及与不同主机系统的互操作性。 此外,USBX OTG 协议栈已由位于中国台湾的独立测试实验室 Allion 进行验证和认证。

2.3.3  USBX 支持的USB厂商

USBX 支持主流的 USB 标准,例如 OHCI 和 EHCI。

USB主机控制器:

USBX 支持 Atmel、Microchip、Philips、Renesas、ST、TI 和其他供应商提供的专有分立 USB 控制器。USBX 还支持同一应用程序中的多个Host控制器。

USB设备控制器:

USBX 支持 Analog Devices、Atmel、Microchip、NXP、Philips、Renesas、ST、TI 和其他供应商提供的流行 USB Device控制器。

知识补充:

  •   通用主控制器接口(UHCI): 由 Intel 生产,适用于 USB 1.0 和 USB 1.1。使用 UHCI 时需要得到 Intel 的许可。该控制器支持低速模式和全速模式。
  •   开放主控制器接口(OHCI): 由 Compaq、 Microsoft 和 National Semiconductor 生产, 适用于 USB 1.0 和 1.1。该控制器支持低速模式和全速模式, 并且它的效率比 UHCI 更高, 因为可以执行更多硬件功能。
  •   扩展型主控制器接口(EHCI): 在 USB-IF 要求发布单一主控制器规范后,已经生产了该控制器,它适用于 USB2.0。 EHCI 仅支持高速传输,并且将低速和全速传输委托给 OHCI 或 UHCI 控制器执行。

2.3.4  USBX设备类支持

USBX 设备支持大多数流行类,包括 CDC/ACM、CDC/ECM、DFU、HID、PIMA (PTP/MTP) (w/MTP)、RNDIS 和 STORAGE。此外还支持自定义类。

2.3.5  USBX主机类支持

USBX 主机支持大多数流行类,包括 ASIX、AUDIO、CDC/ACM、CDC/ECM、GSER、HID(键盘、鼠标和远程控制)、HUB、PIMA (PTP/MTP)、PRINTER、PROLIFIC 和 STORAGE。

2.3.6  USBX自定义类支持

USBX 主机和设备支持自定义类。USBX软件包中提供了一个自定义类示例。

2.3.7  USBX的Pictbridge支持

USBX 在主机和设备上都支持Pictbridge 实现。Pictbridge 位于PIMA (PTP/MTP) 类的顶层。 PictBridge 允许将数码照相机或智能手机直接连接到打印机,而不使用 PC,从而可以直接使用特定的 Pictbridge 感知打印机进行打印。 当相机或手机连接到打印机时,打印机为 USB 主机,照相机为 USB 设备。 然而,在使用 Pictbridge 时,相机显示为主机,而且命令是从相机驱动的。 相机是存储服务器,打印机是存储客户端。 相机是打印客户端,打印机是打印服务器。Pictbridge 使用 USB 作为传输层,但依赖于 PTP(图片传输协议)作为通信协议。

2.3.8  API命名规则

FileX的函数命名规则是:Noun-verb naming convention (名词动词命名约定)。根据这个命名规格,我们实际看下个API,比如:fx_file_allocate ,前缀tx,名词file_,动词allocate。再看下面API截图(部分函数截图):

 

基本也都符合这个命名规则。

2.3.9  USBX的主机类API资源占用

USBX的 API遵循名词-动词命名约定。 所有 API 带有前导 ux_host_*,可以识别出它们是 USBX API。 所有阻塞 API 具有可选的线程超时。

 

2.3.10        USBX的设备类API资源占用

USBX的 API遵循名词-动词命名约定。 所有 API 带有前导 ux_device_*,可以识别出它们是 USBX API。 所有阻塞 API 具有可选的线程超时。

 

2.3.11        快速推向市场

USBX易于安装,学习,使用,调试,验证,认证和维护。因此,根据嵌入式市场预测专家(EMF)的调查,ThreadX在过去七年中一直是领先的上市时间RTOS。调查一致显示,使用ThreadX的设计中有70%可以按时投放市场-超过了所有其他RTOS。

可以快速推向市场的原因:

  •   高质量文档。
  •   完整的源代码。
  •   易于使用的API。
  •   高级特性。
  •   广泛的第三方工具集成–特别是IAR。

2.3.12        高质量源代码

从一开始,ThreadX就被设计为工业级RTOS,并附带完整的C源代码。ThreadX源代码在质量和易于理解方面树立了标杆。此外,一个函数一个源文件的方式,大大方便用户查阅浏览。

ThreadX遵守严格的编码规范,包括要求每行C代码都必须有有意义的注释。此外,ThreadX源码已通过最高标准的认证。

2.4   ThreadX各行各业应用案例

ThreadX官网给出了航空航天,工业,汽车,医疗,消费电子,物联网,片上系统等方向的具体案例 : Real Time Operating System (RTOS) | Microsoft Azure

 

以消费电子方向为例,三星,NEST,HTC等都是其客户,对应的产品也非常多。并且这些产品的直接使用ThreadX全套,基本ThreadX有的,就不再使用第三方组件:

 

2.5   ThreadX论坛

针对ThreadX,专门建立了论坛版块:

uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!

当然,大家也可以上USBX的官方Github开源地址提交问题:

Azure RTOS · GitHub

2.6   总结

关于ThreadX USBX就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。

以上是关于STM32F407第2章 ThreadX USBX协议栈介绍的主要内容,如果未能解决你的问题,请参考以下文章

STM32F407第1章 ThreadX USBX初学准备工作

STM32F407第5章 ThreadX USBX各种USB描述符简介

STM32F407第4章 ThreadX USBX协议栈基础知识

STM32F429第2章 ThreadX USBX协议栈介绍

STM32F429第3章 ThreadX USBX协议栈移植到STM32F429

STM32F429第3章 ThreadX USBX协议栈移植到STM32F429