【STM32F407】第2章 ThreadX USBX协议栈介绍

教程更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=108546

第2章   ThreadX USBX协议栈介绍

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

2.1 初学者重要提示

2.2 Express Logic公司介绍

2.3 ThreadX USBX简介

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官网给出了航空航天,工业,汽车,医疗,消费电子,物联网,片上系统等方向的具体案例 : https://rtos.com/x-ware-showcase/

 

 

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

 

2.5   ThreadX论坛

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

http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12

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

https://github.com/azure-rtos

2.6   总结

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

posted @ 2021-10-18 16:10  硬汉嵌入式  阅读(170)  评论(0编辑  收藏  举报