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

发布者:橙子1234最新更新时间:2023-07-21 来源: zhihu关键字:STM32F407  ThreadX  协议栈 手机看文章 扫描二维码
随时随地手机看文章

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就跟大家介绍这么多


关键字:STM32F407  ThreadX  协议栈 引用地址:【STM32F407】第2章 ThreadX USBX协议栈介绍

上一篇:【STM32H7】第3章 ThreadX USBX协议栈移植到STM32H7
下一篇:【STM32F407】第1章 ThreadX USBX初学准备工作

推荐阅读最新更新时间:2024-11-12 10:21

我该选择哪一个?DSP与DSP功能的ARM
  最近在工控领域里的一个项目,看到前期的工程设计人员设计了 Cortex-M3 微处理器 与TI DSP 的搭档来完成整个项目。“为什么不使用 Cortex-M4 的内核?”这个疑问就立刻蹦了出来。今天仔细查询了一下,做个简单的对比,供广大的网友们参考。   上面只是简单提到了几点。3倍于 DSP 的主频频率使得 STM32F407 在一定程序上弥补了在处理浮点运算的不足,而较便宜的价格,不仅使得项目的总成本大幅节省,也便得有 ARM 开发基础的工程师们更容易操控 DSP 的算法。   毕竟是工业控制领域的应用, Cortex-M4 还能充分发挥其过程控制的优势,丰富的IO引脚及兼容的5v TTL电平与外
[嵌入式]
我该选择哪一个?DSP与DSP功能的ARM
FreeRTOS+Lwip+STM32F407移植笔记
移植步骤: 1 - 先移植FreeRTOS的Demo; 2 - 再移植Lwip的文件(源码&sys_arch&lwip_comm); 3 - 单个实现TCPIP协议栈任务:TCP客户端、TCP服务器和UDP; 模块: - 内存管理:需要给 以太网驱动 、 FreeRTOS 、 Lwip 三个部分分配内存; - 以太网DMA描述符&以太网DMA Buffer - Lwip的RAM部分:ram_heap&内存池部分:memp; - FreeRTOS占用RAM由配置文件定义大小,用于操作系统中动态操作的分配; - 另外原子实现的内存管理方式中的内存管理表也会占用很大内存,与内存块大小密切相关;
[单片机]
FreeRTOS+Lwip+STM32F407移植笔记
基于K线/CAN总线的KWP2000协议分析及协议栈的开发测试
1 前言 在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(Keyword Protocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1M bps)和灵活可靠的通讯方式,在车
[测试测量]
基于K线/CAN总线的KWP2000协议分析及<font color='red'>协议栈</font>的开发测试
STM32F407 串口接收中断的使用
1 首先,在HAL_UART_MspInit函数当中初始化串口的外设时钟,串口接收中断使能配置,串口IO配置。该函数会由HAL库自行调用。 2 然后,写一个中断入口函数,该函数需要调用HAL库当中的HAL_UART_IRQHandler接口,HAL_UART_IRQHandler中会对中断的标志位进行处理,然后会调用中断回调函数HAL_UART_RxCpltCallback。 3 重写中断回调函数,在该函数当中处理串口缓冲区当中的内容。 4 HAL库的中断使用顺序都大致类似,其它类型的中断处理对坐入号替换就好。
[单片机]
<font color='red'>STM32F407</font> 串口接收中断的使用
stm32f407之DMA(操作寄存器)
八、DMA 直接内存访问(DMA)是用来以提供外设和内存、内存和内存之间的高速数据传输的。数据可以在没有任何CPU干预下通过的DMA进行传输。这使得CPU资源更倾重与其他操作。 DMA控制器基于一个复杂的总线矩阵架构,结合了功能强大的双AHB主总线架构与独立的FIFO,以优化系统带宽。 两个DMA控制器共有16个数据流(stream),每个数据流可以编程与规定的通道中的一个搭配。 DMA的工作模式 1. 单次传输 2. 多次传输(burst):把数据分成多次传输 DMA的工作模式 1. 循环模式:循环模式是可用来处理循环缓冲区和连续的数据流(如ADC扫描模式)。启此功能可以设置DMA_SxC
[单片机]
stm32F407的EXTI外部中断
要点:外部中断必须配置好EXTI和NVIC,因为要用的IO口做中断源,故IO的复用功能必须使能,F4的与其他的有些不同,它的外部中断复用功能是由SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOx,GPIO_PinSourcex); 进行配置的,当然,也要打开SYSCFG的时钟。 最让初学者头疼的就是中断服务函数的入口问题,一般的中断函数都会在stm32f4xx_it.h中声明,但是stm32f4xx_it.h只声明了一部分,自己需要的函数却没有定义,自己找了好久也没有找到,其实所有的中断函数入口都定义在了启动文件startup_stm32f4xx.s中。 /********************
[单片机]
STM32F407-串口通信基本原理
1.处理器与外部设备通信的两种方式: 并行通信 -传输原理:数据各个位同时传输。 -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少 -缺点:速度相对较慢 2.串行通信 按照数据传送方向,分为: 单工: 数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信; 全双工: 允许数据同时在两个方向上传输,因此,全双工通信是两个 单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 3.串行通信的通
[单片机]
STM32F407-串口通信基本原理
基于Stm32F407的步进电机的速度控制方案------初步
这里跟大家分享一下我的步进电机的速度控制思路(最终初步解决了问题) 这里我选择的是 Stm32F407 作为主控芯片,我的大致速度控制思路就是通过调整PSC 和ARR的值来实现对速度的控制。对应于我的代码的定时器框图如下(我用的是TIM14) 为了实现修改定时器的频率我们需要修改对应的PSC和ARR的值、 这里的定时器模式我选择是PWM模式 对应的定时器部分的初始化代码如下 以上代码完成了定时器的IO复用和对应的时钟的初始化,这里我们不在赘述! 我们接下来就是需要通过修改 定时器对应的PSC和ARR值来实现对定时器输出的脉冲的频率进行调整 所以我考虑的是 我们写一个数组,将不同的转速下对应的PSC和ARR值都分
[单片机]
基于<font color='red'>Stm32F407</font>的步进电机的速度控制方案------初步

推荐帖子

芯片il300-b的文档
请问论坛里面的各位朋友:需要用il300-bdip-8vishay这个芯片。不知道谁有,能不能给发一份。着急用;电子邮件地址是:872310481@sina.com芯片il300-b的文档原帖由真实的自我于2008-10-2115:06发表请问论坛里面的各位朋友:需要用il300-bdip-8vishay这个芯片。不知道谁有,能不能给发一份。着急用;电子邮件地址是:872310481@sina.com 是这个么?是这个?
真实的自我 电源技术
在农村创意多,哈哈
在农村创意多:空中农夫:实现自动收割,自动运输,自动浇水,自动采摘,自动送递等多项功能。无线放牧设备:放在牲畜身上可以具体知道它们的位置,防止丢失,还有越界报警,跑到地里吃东西就报警。无线自动浇水机:可以飞的那种。也可以是固定的那种。在农村创意多,哈哈这玩意儿是已经做出来的吗?还是准备找人做的?在想呢。:)空中农夫确实很好。农村现在人少。南方的农村又无法大规
damiaa 创意市集
怎样复习单片机
马上就要期末考了,真不知道怎么去复习。虽然有看一点书,但就是不会归纳知识点。看书没什么重点,而且平常也是看看程序。怎样复习单片机建议你们老师开卷考试。有很多东西不需要背的老师应该会说一个大概范围的,没有范围没法儿复习,单片机的范围太广了。。。马上就要考试了呵呵可是还有很多程序不会写啊。看一遍书,笔记,作业。想想上课讲的东西真是不好弄啊怎么还能考具体的寄存器吗哈哈想想现在还有为大学考试担忧的真还有点欣慰啊,我们上大学的时候很多同学都是平时不上课,考试时候瞒天过海一
oldhouse05 嵌入式系统
VxWorks实时操作系统-VxWorks系统培训教材
教材简单介绍:课程设计------------------------------------------------培训分四个部分进行讲解:嵌入式实时操作系统VxWorks。VxWorks操作系统功能和使用方法。如何使用VxWorks搭建嵌入式系统。如何测试基于VxWorks的嵌入式设备以及案例分析。-------------------------------------------------课程介绍-----------------------------------
zhaonaiqiang 实时操作系统RTOS
论文
基于FPGA的多路开关稳压电源的设计论文你自己准备怎么弄啊?自己想了吗?或者老师有什么要求啊你这样写写大家怎么帮你啊
messiceding@126 FPGA/CPLD
【Follow me第二季第3期】 EK-RA6M5开发板开箱以及预编译程序测试
很开心能够参与【Followme第二季第3期】活动,这期开发板的厂商来自于瑞萨公司,其型号是RA6M5,通过活动页面,了解到这块开发板功能十分强大。一、开箱首先通过得捷商城进行下单,大约等个10来天收到了从美国发来的板子、开发板包装精美,有一块开发板、两根USB线、一根网线。二、预编译程序测试开发板上默认有四个LED灯亮,其中LED5是电源指示灯,LED4白色、LED2是绿色灯、LED1是渐变的蓝色,一亮一灭。按照开发板手册,在ek-ra6m5-
swzswz DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved