【STM32F407】第5章 ThreadX NetXDUO网络协议栈介绍

2021-04-19 16:12:57 浏览数 (1)

第5章 ThreadX NetXDUO网络协议栈介绍

本章节介绍 ThreadX NetXDUO网络协议栈,让大家对NetXDUO有一个整体的了解。

5.1 初学者重要提示

5.2 Express Logic公司介绍

5.3 ThreadX NetXDUO简介

5.4 ThreadX NetXDUO安全认证

5.5 ThreadX NetXDUO支持的RFC

5.6 ThreadX NetXDUO的IxANVL测试

5.7 ThreadX NetXDUO的IPv6就绪微标认证

5.8 ThreadX NetXDUO各行各业应用案例

5.9 总结

5.1 初学者重要提示

ThreadX是小型RTOS的巅峰之作,通过了各行各业的安全认证,并且大部分都是最高安全标准。作为中间件的NetXDUO协议栈也通过了各种安全认证。

5.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。

5.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

规格如下:

5.2.2 USBX协议栈

USB协议栈也不错,日常用的功能也齐全

规格如下:

5.2.3 GUIX图形界面

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

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

规格如下:

5.2.4 FileX文件系统

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

规格如下:

再看API,一个文件系统竟然提供了230多个,仅异常处理的API就有20个(一个文件一个API)

5.2.5 LevelX擦写均衡保护层

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

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

5.3 ThreadX NetXDUO简介

Azure RTOS NetX Duo是Microsoft的高级工业级IPv4/IPv6网络协议栈,专门针对深度嵌入式,实时和IoT应用程序而设计。NetX Duo为嵌入式应用程序提供了诸如IPv4,IPv6,TCP和UDP等核心网络协议,以及一整套完整的其他高级附加协议。Azure RTOS NetX Duo通过其他附加安全产品提供安全性,包括Azure RTOS NetX Secure IPsec和Azure RTOS NetX安全SSL / TLS / DTLS。所有这些,再加上,执行速度快和易于使用,使Azure RTOS NetX Duo成为要求最苛刻的嵌入式IoT应用程序的理想选择。

5.3.1 内存需求

对于基本的IP和UDP支持,Azure RTOS NetX Duo的占用空间非常小,只有9 KB到15 KB。TCP功能需要额外的10 KB到13 KB的指令区存储器。Azure RTOS NetX Duo RAM的使用范围通常为2.6 KB至3.6 KB加上由应用程序定义的数据包池内存。与Azure RTOS ThreadX一样,Azure RTOS NetX Duo的大小会根据应用程序使用的服务自动缩放。这实际上消除了对复杂配置和构建参数的需求,使开发人员更轻松。

5.3.2 功能介绍

NetXDUO基本功能介绍如下:

MQTT

  • Messaging Queue Telemetry Transport (MQTT)。
  • 最小2.7 KB闪存。
  • 直观的MQTT API:nx_mqtt_ * 。

AutoIP

  • 自动IPv4地址分配。
  • 最小1.2 KB,300字节RAM。
  • 直观的AutoIP API:nx_autoip_ * 。

HTTP 1.0

  • 超文本传输协议(HTTP)。
  • 最小2.8 KB至4.8 KB闪存/ 0.4 KB至1.0 KB RAM。
  • 客户端和服务器支持。
  • 直观的API:nx_http_ * 。

HTTP / HTTPS 1.1

  • 超文本传输协议(HTTP)。
  • 最小3.0 KB至9.5 KB闪存/ 0.5 KB至2 KB RAM。
  • 客户端和服务器支持。
  • 多个传入客户端会话。
  • 纯文本和加密的HTTPS。
  • 持久连接支持。
  • 分段文件上传。
  • 与Azure RTOS NetX Secure TLS完全集成。
  • 直观的API:nx_web_http * 。

SMTP协议

  • Simple Mall Transfer Protocol (SMTP)。
  • 最小的4.1 KB和0.6 KB RAM占用空间。
  • 客户端支持。
  • 直观的SMTP API:nx_smtp_ * 。

DHCP

  • Dynamic Host Configuration Protocol (DHCP)。
  • 最小3.6 KB至4.6 KB闪存,2.7 KB RAM占用空间。
  • 客户端和服务器支持。
  • IPv4和IPv6支持。
  • 直观的DHCP API:nx_dhcp_ * 。

NAT

  • Network Address Translation (NAT)。
  • 最小的3.5K6和0.6KB RAM占用空间。
  • IPv4地址支持。
  • 直观的NAT API:nx_nat_ * 。
  • NAT仅适用于Azure RTOS NetX Duo 。

SNMP协议

  • Simple Network Management Protocol (SNMP)。
  • 最小的10.9 KB和2.6 KB RAM占用空间。
  • 对VI,V2和V3的代理支持。
  • 直观的SNMP API:nx_snmp_ * 。

DNS,mDNS,DNS-SD

  • Domain Name System (DNS)。
  • Multicast Domain Name System (mDNS)。
  • DNS-based service discovery (DNS-SD)。
  • DNS最小2.4 KB至3 KB闪存,1 KB RAM占用空间。
  • 客户端支持。
  • 直观的API:nx_dns_ * 。
  • mDNS和DNS-SD仅可用于Azure RTOS NetX Duo。

POP3

  • Post Office Protocol Version 3 (POP3)。
  • 最小的8.1 KB和1.4 KB RAM占用空间。
  • 客户端支持。
  • 直观的POP3 API:nx_pop3_ *

Telnet

  • 最小的0.5 KB和0.3 KB RAM占用空间。
  • 客户端和服务器支持。
  • 直观的Telnet API:nx_telnet_ *。

FTP,TFTP

  • File Transfer Protocol (FTP)。
  • Trivial File Transfer Protocol (TFTP)。
  • FTP最小1.8 KB至7.2 KB闪存,0.6 KB至2.1 KB的RAM占用空间。
  • TFTP最小1.7 KB至2.4 KB闪存,0.3 KB至1.8 KB RAM占用空间。
  • 客户端和服务器支持。
  • 直观的FTP和TFTP API:nx_ftp_ *或nx_tftp_ * 。

PPP,PPPoE

  • Point-to- Point Protocol (PPP)。
  • Point-to-Point Protocol over Ethernet(PPPoE))。
  • 最小7.1 KB和3.8 KB RAM占用空间。
  • 直观的PPP API:nx_ppp_ *。
  • PPPoE仅适用于Azure RTOS NetX Duo。

SNTP

  • Simple Network Time Protocol (SNTP)。
  • 最小4 KB和0.5 KB RAM。
  • 客户端支持。
  • 直观的SNTP API:nx_sntp_ * 。

Azure RTOS NetX Duo API

  • 直观一致的API。
  • 名词动词命名约定。
  • 快速零拷贝API实现。
  • 所有API均具有nx_ *前缀,可轻松将其标识为Azure RTOS NetX。
  • 阻塞API具有可选的线程超时配置功能。
  • 可选的BSD层,用于移植旧版Socket代码。

IGMP

  • Internet Group Management Protocol (IGMP)。
  • 最小2.5 KB闪存。
  • IPv4组播组支持。
  • IXIA IxANVL验证。
  • 可选的IGMP统计信息。
  • 通过Azure RTOS ThreadX进行系统级跟踪。
  • 直观的IGMP API:nx_igmp_ *。

Azure RTOS NetX Secure DTLS

  • Datagram Transport Layer Security (DTLS) 1.0 and 1.2 。
  • 最小11 KB闪存。
  • 快速的软件RSA 2048位密钥大小,在120MHz下约为1秒。
  • 简化的X.509实现。
  • 与Azure RTOS NetX Duo UDP Socket完全集成
  • 硬件加密支持。
  • 软件加密支持:RSA(所有密钥大小),AES,DES / 3DES,ECC,HMAC,MD5,SHA-1,SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)。
  • 带有ECDSA(签名)和ECDH(加密)的Elliptic Curve Cryptography (ECC) ,包括 P-curves 192/224/256/384/521。
  • 加密密钥支持(取决于硬件)。

Azure RTOS NetX Secure TLS

  • Transport Layer Security (TLS) 1.0, 1.1, and 1.2。
  • 最小8.8 KB闪存。
  • 快速的软件RSA 2048位密钥大小,在120MHz下约为1秒。
  • 简化的X.509实现。
  • 与Azure RTOS NetX Duo TCP Socket完全集成。
  • 硬件加密支持。
  • 软件加密支持:RSA(所有密钥大小),AES,DES / 3DES,ECC,HMAC,MD5,SHA-1,SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)。
  • 带有ECDSA(签名)和ECDH(加密)的Elliptic Curve Cryptography (ECC) ,包括 P-curves 192/224/256/384/521。
  • 加密密钥支持(取决于硬件)。

ICMP

  • Internet Control Message Protocol (ICMP)。
  • 最小2.5 KB闪存。
  • IPv4和IPv6支持。
  • IXIA IxANVL验证。
  • ping请求和ping响应。
  • 对ping请求的可选线程挂起。
  • 所有挂起的可选超时配置。
  • 可选的ICMP统计信息。
  • 通过Azure RTOS TraceX进行系统级跟踪。
  • 直观的ICMP API:nx_icmp_ *。

UDP协议

  • User Datagram Protocol (UDP)。
  • 最小2.5 KB闪存,每个Socket需要124字节的RAM。
  • 快速,接近线速的UDP数据包处理:

100 Mbps以太网上的RX 95 Mbps,MCU @ 100MHz,MCU利用率为14%

100 Mbps以太网上的TX 94 Mbps,MCU @ 100MHz,MCU利用率为10%

  • UDP Fast Path技术。
  • UDP数量无限制。
  • IXIA IxANVL验证。
  • 可选的接收服务挂起。
  • 所有挂起的可选超时配置。
  • 可选的UDP统计信息。
  • 通过Azure RTOS TraceX进行系统级跟踪。
  • 直观的UDP API:nx_udp_ * 。

TCP协议

  • Transmission Control Protocol (TCP)。
  • 最小的10.5K8到12.5 KB闪存,每个Socket需要280字节RAM。
  • 快速,接近线速的TCP数据包处理:

100 Mbps以太网上的RX 93 Mbps,MCU @ 100MHz,MCU利用率为20%。

100 Mbps以太网上的TX 94 Mbps,MCU @ 100MHz,MCU利用率为27%。

  • 可靠的连接。
  • TCP套接字数量无限制。
  • IXIA IxANVL验证。
  • Socket接收/发送上的可选挂起。
  • 所有挂起的可选超时配置。
  • 可选的TCP统计信息。
  • 通过Azure RTOS TraceX进行系统级跟踪。
  • 直观的TCP API:nx_tcp_ * 。

ARP / RARP

  • Address Resolution Protocol (ARP)。
  • Reverse Address Resolution Protocol (RARP)。
  • 最小1.7 KB闪存,RAM大小。
  • 动态解析32比特的IPv4和48比特的MAC地址。
  • IXIA IxANVL验证。
  • 灵活的,用户定义的ARP缓存。
  • 免费ARP支持。
  • 由应用程序确定的可选ARP / RARP统计信息。
  • 通过Azure RTOS TraceX进行系统级跟踪。
  • 直观的ARP / RARP API:nx_arp_ *,nx_rarp_ *。

IPv4和IPv6

  • Internet Protocol (IP)。
  • 最小3.5 KB至8.5 KB闪存,2 KB至3 KB RAM占用空间。
  • Piconet架构。
  • 快速,接近线速性能。
  • 多接口支持。
  • 多宿主支持。
  • 静态路由支持。
  • IP分段/重组支持。
  • IPv4和IPv6地址支持。
  • IXIA IxANVL验证。
  • 第二阶段IPv6就绪徽标认证。
  • 可选IP统计信息。
  • 定义明确,直观的物理层驱动程序接口。
  • 通过Azure RTOS TraceX进行系统级跟踪。
  • 直观的IP层API:nx_ip_ *,nxd_ip_ *,nxd_ipv6_ *。
  • 已通过TUV和UL预先认证,符合IEC 61508 SIL 4,IEC 62304 C类,ISO 26262 ASIL D和EN 50128 SW-SIL4。

Azure RTOS NetX Secure IPSEC

  • Internet Protocol Security (IPSEC)。
  • IP层。
  • 硬件加密支持。
  • 软件加密支持,包括:

DES,3DES

AES

HMAC-MD5

HMAC SHA1

Internet密钥交换(IKE)版本2支持

  • 直观的IPsec API:nx_ipsec_ *。
  • IPsec仅适用于Azure RTOS NetX Duo。

5.3.3 API命名规则

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

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

5.3.4 快速执行

Azure RTOS NetX Duo提供了Zero-Copy数据包发送/接收实现,该实现与Azure RTOS ThreadX高度集成,以实现最快的性能。例如,Azure RTOS NetX Duo通常可以在80 MHz(或以下)处理器上实现接近线速的数据传输,而只使用一小部分处理器周期。

5.3.5 安全又可靠

Azure RTOS NetX Duo是安全的。通过包括IPsec,SSL,TLS和DTLS在内的附加安全产品来提供此安全性。此外,该应用程序可以完全控制对Azure RTOS NetX Duo的所有外部访问,从而使确定安全风险变得更加容易。

Microsoft Azure RTOS为OEM提供了使用底层MCU / MPU硬件保护机制来保护通信以及创建代码和数据隔离的组件。设备制造商最终有责任确保设备完全满足与其特定用例相关的安全性要求。

5.3.6 简单易用

Azure RTOS NetX Duo API直观,直接且功能强大。

API名称是用真实的单词构成的,而不是其他网络产品中常见的“alphabet soup”或高度缩写的名称。所有Azure RTOS NetX Duo API都有一个前导nx_并遵循名词-动词命名约定。此外,整个API都具有功能一致性。例如,所有挂起的API函数都有一个可选的超时,以相同的方式运行。

对于旧版应用程序,Azure RTOS NetX Duo提供了额外的BSD套接字兼容层。该层可帮助开发人员轻松迁移大型网络应用程序。

5.3.7 快速推向市场

Azure RTOS NetX Duo易于安装,学习,使用,调试,验证,认证和维护。因此,NetX Duo是嵌入式IoT设备(包括Broadcom,Gainspan等公司的许多SoC)中最受欢迎的TCP / IP堆栈之一。我们始终如一的上市时间优势建立在:

  • 有质量保证的文档–请查阅的《Azure RTOS NetX Duo用户指南》。
  • 完整的源代码可用性。
  • 易于使用的API。
  • 全面和高级的功能集合。

5.3.8 高质量源代码

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

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

5.3.9 全面的物联网解决方案

对于基本的IP和UDP支持,Azure RTOS NetX Duo的占用空间非常小,只有9 KB到15 KB。NetX Duo拥有用于深度嵌入式IoT应用程序的最全面的TCP / IP网络之一。此支持包括以下附加协议产品:

MQTT,CoAP,LWM2M,6LoWPAN,SSL / TLS / DTLS,IPsec,AutoIP,DHCP,DNS,mDNS,DNS-SD,FTP,HTTP,IPsec,NAT,POP3,PPP,PPPoE,SMTP,SNMP v1 / 2/3 ,Telnet,TFTP。

5.3.10 支持的硬件平台

NetXDUO在开箱即用,可以在各种主流的32/64位处理器上运行。经过全面测试和完全支持的平台如下:

5.4 ThreadX NetXDUO安全认证

5.4.1 通过TUV和UL预先认证,符合许多安全标准

Azure RTOS NetX Duo已通过SGS-TUV Saar认证,可用于安全关键系统,符合IEC-61508 SIL 4,IEC-62304 SW安全等级C,ISO 26262 ASIL D和EN 50128的要求。该认证确认了Azure RTOS NetX Duo可用于安全相关软件的开发,以达到IEC-61508,IEC-62304,ISO 26262和EN 50128的最高安全等级,以用于电气,电子和可编程电子安全相关系统 。SGS-TUV萨尔公司由德国SGS-Group和TUV萨尔州的合资企业组成,现已成为领先的认证独立公司,致力于测试,审核,验证和认证全球安全相关系统的嵌入式软件。工业安全标准IEC 61508及其衍生的所有标准,包括IEC-62304:

同时,Azure RTOS NetX Duo已被UL认可,符合UL 60730-1附件H,CSA E60730-1附件H,IEC 60730-1附件H,UL 60335-1附件R,IEC 60335-1附件R和UL 1998可编程组件中的安全标准。UL是一家全球性,独立的安全科学公司,拥有超过一个世纪的专业知识来创新安全解决方案,涵盖从公共使用电力到可持续性,可再生能源和纳米技术方面的突破。

与TUV和UL认证相关的工件(证书,安全手册,测试报告等)可供出售。

5.4.2 通过EAL4 Common Criteria安全认证

Azure RTOS已获得EAL4 Common Criteria安全认证。评估目标涵盖Azure RTOS ThreadX,Azure RTOS NetX Duo,Azure RTOS NetX Secure TLS和Azure RTOS NetX MQTT。这代表了深度嵌入式传感器,设备,边缘路由器和网关所需的最典型的物联网协议。

用于Microsoft Azure RTOS SC安全认证的IT安全评估工具是Brightsight BV,而证书颁发机构是SERTIT。

5.4.3 通过FIPS 140-2认证

Azure RTOS NetX加密库已通过联邦信息处理标准化140-2(FIPS 140-2)软件认证,该认证规定了加密模块的要求。FIPS 140-2要求所有使用基于密码的安全性的联邦政府机构和部门满足与加密强度和功能有关的特定标准。这些基于密码的安全标准在加拿大和欧盟也得到认可。

用于Azure RTOS NetX加密库的信息安全评估实验室为atsec,证书颁发机构为美国国家标准技术研究院(NIST)。

5.5 ThreadX NetXDUO支持的RFC

NetX Duo对描述基本网络协议的RFC的支持包括但不限于以下网络协议。NetX Duo在具有较小内存占用和高效执行的实时操作系统的约束范围内遵循所有常规建议和基本要求。

以下是NetX Duo支持的与IPv6相关的RFC。

5.6 ThreadX NetXDUO的IxANVL测试

NetX Duo已使用IXIA的IxANVL进行了测试。IxANVL是用于自动化网络和协议验证的行业标准。有关IxANVL的更多信息,请访问:https://www.ixiacom.com/products/ixanvl

特别是,以下NetX Duo模块已通过IxANVL进行了测试:

5.7 ThreadX NetXDUO的IPv6就绪微标认证

NetX Duo“ IPv6就绪”证书是通过可从IPv6就绪组织获得的“ IPv6核心协议(第2阶段)自测”软件包获得的。有关测试平台和测试用例的更多信息,请参见以下IPv6-Ready项目网站:https : //www.ipv6ready.org/

第2阶段IPv6核心协议自测试套件通过大量测试来验证IPv6堆栈是否遵循以下RFC中提出的要求:

第1节:RFC 2460

第2节:RFC 4861

第3节:RFC 4862

第4节:RFC 1981

第5节: RFC 4443

Azure RTOS NetX Duo是获得严格的IPv6-Ready Logo认证的仅有的嵌入式TCP / IP堆栈之一,证明它已通过由IPv6论坛管理和验证的一致性和互操作性测试。

5.8 ThreadX NetXDUO各行各业应用案例

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

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

5.9 ThreadX NetXDUO论坛

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

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

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

https://github.com/azure-rtos 。

5.10 总结

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

0 人点赞