【STM32F407】第2章 ThreadX FileX文件系统介绍

论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=100749

第2章   ThreadX FileX文件系统介绍

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

目录

第2章   ThreadX FileX文件系统介绍

2.1   初学者重要提示

2.2   Express Logic公司介绍

2.2.1  ThreadX内核

2.2.2  NetX网络协议栈

2.2.3  USBX协议栈

2.2.4  GUIX图形界面

2.2.5  LevelX擦写均衡保护层

2.3   ThreadX FileX简介

2.3.1  内存需求

2.3.2  功能介绍

2.3.3  API命名规则

2.3.4  安全认证

2.3.5  简单易用

2.3.6  快速推向市场

2.3.7  高质量源代码

2.3.8  支持的硬件平台

2.4   ThreadX FileX高级特性

2.4.1  多媒介管理(外挂多个设备)

2.4.2  逻辑扇区缓存

2.4.3  连续文件支持(文件访问时间确定性)

2.4.4  动态创建

2.4.5  exFAT支持

2.4.6  容错支持(掉电保护)

2.5   ThreadX各行各业应用案例

2.6   ThreadX论坛

2.7   总结


 

2.1   初学者重要提示

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

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  USBX协议栈

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


 

规格如下:


 

2.2.4  GUIX图形界面

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

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

规格如下:

2.2.5  LevelX擦写均衡保护层

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

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

2.3   ThreadX FileX简介

FileX嵌入式文件系统是针对Microsoft FAT文件格式的高级工业级解决方案,专门针对深度嵌入式,实时和物联网应用程序而设计。FileX支持Microsoft的所有文件格式,包括FAT12,FAT16,FAT32和exFAT。FileX还通过LevelX的提供了可选的容错能力和FLASH磨损均衡。并且空间需求小,执行速度快和易于使用,使FileX成为要求最苛刻的嵌入式IoT应用程序的理想选择。

2.3.1  内存需求

FileX嵌入式文件系统的最小占用空间非常小,只有8.6 KB到12 KB,可支持基本文件读/写。一个实例的最小FileX RAM使用量约为1.8 KB,并且只有512字节的逻辑扇区缓存。与ThreadX一样,FileX的大小会根据应用程序使用的服务自动裁剪。这实际上消除了对复杂配置的需要,并且无需构建参数,从而使开发人员更轻松。

2.3.2  功能介绍

FileX基本功能介绍如下:

  媒介服务

  •   支持FAT 12/16/32和exFAT。
  •   最小6KB闪存,2.5KB RAM。
  •   完整的媒体访问服务。
  •   不限制例化的设备数。
  •   简单的读/写逻辑扇区驱动接口函数。
  •   多分区支持。
  •   逻辑扇区缓存。
  •   FAT条目缓存。
  •   可选的容错支持。
  •   延迟辅助FAT更新(secondary FAT)
  •   通过TraceX进行系统级跟踪。
  •   API包括:

fx_media_open

fx_media_close

fx_media_format

fx_media_space_available

 

  目录功能

  •   路径支持256字节。
  •   支持长目录名和8.3格式短目录。
  •   目录创建和删除。
  •   目录导航和遍历。
  •   目录属性管理。
  •   通过TraceX进行系统级跟踪。
  •   API包括:

fx_directory_create

fx_directory_delete

fx_directory_attributes_set

fx_directory_attributes_read

fx_directory_first_entry_find

fx_directory_next_entry_find

 

  文件功能

  •   最小3.3KB Flash。
  •   打开文件数不限。
  •   只读文件可以多次打开。
  •   支持长文件名和8.3短文件名。
  •   连续文件支持(文件访问的时间确定性)。
  •   快速搜寻逻辑。
  •   簇的预分配。
  •   文件创建,删除和重命名。
  •   文件读取,写入和查看。
  •   文件属性管理。
  •   通过TraceX进行系统级跟踪
  •   API包括:

fx_file_create

fx_file_delete

fx_file_attributes_set

fx_file_attributes_read

fx_file_read

fx_file_seek

fx_file_write

 

  文件功能

  •   最小3.3KB Flash。
  •   打开文件数不限。
  •   只读文件可以多次打开。
  •   支持长目录名和8.3目录名。
  •   连续文件支持(文件访问的时间确定性)
  •   快速搜寻逻辑。
  •   簇的预分配。
  •   文件创建,删除和重命名。
  •   文件读取,写入和查看。
  •   文件属性管理。
  •   通过TraceX进行系统级跟踪
  •   直观的文件访问API,包括:

fx_file_create

fx_file_delete

fx_file_attributes_set

fx_file_attributes_read

fx_file_read

fx_file_seek

fx_file_write

2.3.3  API命名规则

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

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

2.3.4  安全认证

FileX通过了各行各业的高等级安全认证。

2.3.5  简单易用

FileX简单易用,API既直观又功能强大,并且所有API都遵循名词-动词命名约定。此外,整个API都具有功能一致性。例如,所有挂起的API都有一个可选的超时时间配置,对于API而言,超时的功能相同。

构建FileX应用程序也比较简单。教程的后面章节中,大家会体会到。FileX也有官方为其配套的用户手册。

2.3.6  快速推向市场

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

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

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

2.3.7  高质量源代码

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

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

2.3.8  支持的硬件平台

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

 

2.4   ThreadX FileX高级特性

FileX的高级特性介绍如下:

2.4.1  多媒介管理(外挂多个设备)

FileX可以外挂不限数量的设备。每个媒介在fx_media_open调用中都有其自己独立的存储区和关联的驱动程序。FileX的默认发行版还附带了一个简单的RAM介质驱动程序和一个使用此RAM磁盘的演示系统。

2.4.2  逻辑扇区缓存

通过减少整个扇区的复制粘贴,FileX逻辑扇区高速缓存显着提高了性能。FileX为每个打开的媒介维护一个逻辑扇区缓存。逻辑扇区高速缓存的深度取决于通过fx_media_open API调用提供给FileX的内存量。

2.4.3  连续文件支持(文件访问时间确定性)

FileX通过函数fx_file_allocate提供连续文件支持,使文件访问具有时间确定的。该函数获取请求的内存量,并寻找一系列相邻的簇以满足请求。如果找到了这样的簇,则通过使其成为文件已分配簇链的一部分来对其进行预分配。在移动的物理媒介上,FileX连续文件支持可显着提高性能,并确定访问时间。

2.4.4  动态创建

FileX允许动态创建系统资源。如果应用程序具有多个或动态配置要求,则这一点尤其重要。此外,用户可以使用的FileX资源(媒体或文件)的数量没有限制。同样,系统对象的数量对性能没有任何影响。

2.4.5  exFAT支持

exFAT是Microsoft设计的文件系统,允许文件大小超过FAT32文件系统的4GB,容量超过32GB。

使用exFAT的用户必须使能宏定义FX_ENABLE_EXFAT重新编译FileX库。打开媒介时,FileX会检测到媒体类型。如果媒介使用exFAT格式化,则FileX会按照exFAT标准读写文件系统。要使用exFAT格式化新媒介,使用函数fx_media_exFAT_format。默认情况下,不启用exFAT。

2.4.6  容错支持(掉电保护)

FileX容错旨在防止由于文件或目录更新期间的中断而导致文件系统损坏。例如,将数据附加到文件时,FileX需要更新文件,目录条目以及可能的FAT条目的内容。如果此更新过程被中断(例如电源故障或介质在更新过程中弹出),则文件系统处于不一致状态,这可能会影响整个文件系统的完整性,从而导致文件损坏。

FileX容错功能通过记录在更新过程中更新文件或目录所需的所有步骤来工作。该日志条目存储在FileX可以找到和访问的专用扇区上。即使没有适当的文件系统,也可以访问日志数据的位置。因此,万一文件系统损坏,FileX仍然能够找到日志条目并将文件系统恢复到良好状态。

当FileX更新文件或目录时,将创建日志条目。成功完成更新操作后,将删除日志条目。如果在成功更新文件后未正确删除日志条目,则恢复过程确定日志条目中的内容与文件系统匹配,则无需执行任何操作,即可清除日志条目。

如果文件系统更新操作被中断,则下次FileX装入媒介时,容错功能将分析日志条目。日志条目中的信息允许FileX撤消已经应用到文件系统的部分更改(以防在文件更新操作的早期阶段发生故障),或者如果日志条目包含重做信息,则FileX能够完成先前操作所需的更改。

此容错功能可用于FileX支持的所有FAT文件系统,包括FAT12,FAT16,FAT32和exFAT。默认情况下,FileX中未启用容错功能。要启用容错功能,必须使用宏定义FX_ENABLE_FAULT_TOLERANT和FX_FAULT_TOLERANT来构建 FileX。在运行时,应用程序通过调用fx_fault_tolerant_enable来启动容错服务。服务启动后,所有文件和目录写操作都将通过容错模块进行。

当容错服务启动时,它首先检测该媒介是否在容错模块下受到保护。如果不是,则FileX会假定文件系统是完整的,并通过从文件系统分配用于日志记录和缓存的空闲块来开始保护。如果在文件系统上找到了容错模块日志,它将分析日志条目。FileX将还原先前的操作或重做先前的操作,具体取决于日志条目的内容。在处理所有先前的日志条目之后,文件系统变得可用。这样可以确保FIleX从已知的良好状态开始。

在FileX容错模块下保护了媒介之后,将不会使用其他文件系统来更新该介质。这样做会使文件系统上的日志条目与FAT表中的内容(目录条目)不一致。如果在使用容错功能将其移回到FileX之前,该媒介是由另一个文件系统更新的,则结果是不确定的。

2.5   ThreadX各行各业应用案例

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

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

 

2.6   ThreadX论坛

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

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

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

https://github.com/azure-rtos

2.7   总结

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32 FileX是一款嵌入式文件系统,专为STM32微控制器系列而设计和优化。它提供了一个强大而灵活的文件管理系统,适用于存储和管理嵌入式系统中的各种文件类型。 STM32 FileX具有以下特点和优势: 1. 系统资源占用低:FileX对内存资源的要求非常低,可以在有限的嵌入式系统中运行,而不会造成系统资源的浪费,从而使得STM32微控制器可以更加高效地执行其他任务。 2. 多种文件类型支持:FileX可以处理各种类型的文件,包括文本文件、二进制文件、图像文件等。它支持常见的文件操作,如打开、读取、写入、重命名、删除等,使得嵌入式系统可以灵活地处理不同类型的文件。 3. 文件系统安全性:FileX提供了数据完整性和文件系统安全性的保护机制。通过使用校验和、CRC校验、写入保护等技术,可以保证文件在读写过程中不会被破坏或损坏,确保数据的可靠性和完整性。 4. 支持多线程:FileX支持多线程操作,可以同时处理多个文件的读写操作。这在复杂的嵌入式系统中非常有用,可以提高系统的整体性能和效率。 5. 高度可配置:FileX可以根据具体的应用需求进行灵活的配置。用户可以根据需要选择适合的文件系统大小、块大小、簇大小等参数,以满足自己的存储容量和性能要求。 总的来说,STM32 FileX是一款功能强大、高效可靠的嵌入式文件系统。它在不占用过多系统资源的同时,提供了丰富的文件操作功能,可以满足各种嵌入式系统对文件管理的需求。无论是嵌入式设备的开发者还是应用工程师,都能够通过使用STM32 FileX轻松实现文件的存储、管理和操作。 ### 回答2: STM32 FileX是STMicroelectronics开发的一款嵌入式文件系统。它是专门为STM32微控制器设计的,提供了可靠的文件系统功能,能够在嵌入式系统中进行文件的读写和管理。 STM32 FileX具有以下特点和功能: 1. 高性能和低资源占用:STM32 FileX采用了高效的算法和数据结构,使其能够在嵌入式系统中快速且高效地进行文件的读写操作,并且占用的系统资源较少,有利于节省处理器的计算能力和内存空间。 2. 可靠的数据保护:STM32 FileX提供了可靠的数据保护机制,包括存储介质上的文件一致性检查、写操作的缓存管理、数据的完整性和可靠性验证等,能够有效地防止数据损坏和丢失,保证了数据的可靠性和一致性。 3. 多种文件系统支持:STM32 FileX支持多种文件系统,包括FAT12、FAT16、FAT32等,能够适应不同的应用需求和存储介质类型。 4. 灵活的文件管理功能:STM32 FileX提供了丰富的文件管理功能,包括文件的创建、打开、读写、删除等操作,能够方便地进行文件的管理和维护。 5. 完善的API接口和开发工具:STM32 FileX提供了完善的API接口和开发工具,使开发者能够快速地集成和使用该文件系统,提高开发效率。 6. 应用广泛:STM32 FileX适用于多种嵌入式应用场景,包括工业自动化、智能家居、车载娱乐系统、医疗设备等,能够满足不同领域的文件管理需求。 总的来说,STM32 FileX是一款高性能、可靠的嵌入式文件系统,能够方便地进行文件的读写和管理,适用于各种嵌入式系统的开发。 ### 回答3: STM32 FileX是一个嵌入式文件系统,专为STM32系列微控制器开发的。它是一个可靠、高效、安全的文件系统,能够管理和操作嵌入式系统中的文件和文件夹。 STM32 FileX提供了许多功能,包括文件的创建、读取、写入、删除等。用户可以通过简单的API来访问这些功能,并可以根据自己的需求进行定制。 STM32 FileX能够有效地管理嵌入式系统中的存储器资源。它支持不同类型的存储介质,如RAM、Flash、SD卡等。通过使用FileX,开发人员可以轻松地在嵌入式系统中添加文件系统,从而使得数据的存储和管理更加方便。 STM32 FileX具有很高的性能和可靠性。它采用了先进的文件索引技术,能够快速地定位文件和文件夹。同时,它还具备数据保护机制,能够确保文件的完整性和安全性。 STM32 FileX是易于使用和集成的。它提供了一个直观的编程接口,使开发人员能够快速地熟悉和使用。此外,它还提供了丰富的示例代码和文档,帮助开发人员更好地理解和使用该文件系统。 总之,STM32 FileX是一个专为STM32系列微控制器开发的嵌入式文件系统。它具有高效、可靠、安全的特性,能够方便地管理和操作嵌入式系统中的文件和文件夹。无论是存储数据,还是进行软件更新和配置,STM32 FileX都能够提供可靠的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值