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

发布时间:2023-04-23  

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

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

2.5 ThreadX论坛

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

armbbs.cn/forum.php?

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

github.com/azure-rtos 。

2.6 总结

关于ThreadX USBX就跟大家介绍这么多


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    .当计数器值大于窗口寄存器的值时,如果软件重载计数器,则会产生复位。 从上面的时序图中可以看到,如果递减计数器的值(T[6:0])大于窗口寄存器(W[6:0])的值,重载计数器会产生复位。当递......
    正常显示); ④ 串口寄存器与其它系列不一样的问题; 1. 调试选项问题 1.1. 问题描述 使用STM32CubeMX生成的 STM32F1 工程,在使用 CMSIS-DAP 下载器下载一次之后,造成......
    发送数据的函数是: void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 通过该函数向串口寄存器 USART_DR 写入一个数据。 STM32 库函......
    我们使用的是STM32F103ZET6,其FLASH容量为512K字节,属于大容量产品,大容量产品的闪存模块组织图如下图示 STM32F1的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3部分组成 主存储器:用来......
    USART驱动实验(2024-07-02)
    向代码如下图所示。 6.4 串口例程 使用printf函数将串口接收到的字符串发送出去。 (1)底层寄存器文件stm32f10x.h添加串口寄存器地址。 (2)在SYSTEM目录下新建usart1目录,并在......
    的每个位可以由软件分别配置成多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 三、常用GPIO口寄存器描述 1、端口配置寄存器......
    * USARTx, uint16_t Data);   通过该函数向串口寄存器 USART_DR 写入一个数据。   STM32 库函数操作 USART_DR 寄存器读取串口......
    数操作 USART_DR 寄存器发送数据的函数是:   void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);   通过该函数向串口寄存器......
    位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,也将产生一个复位。应用程序在正常运行过程中必须定期地写入WWDG_CR寄存器以防止MCU发生复位。只有当计数器值小于窗口寄存器......
    stm32f103zet6怎么保存flash参数;  STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。   主存储器,该部分用来存放代码和数据常数(如 const......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>