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

2023-12-17 01:18

本文主要是介绍【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就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。

 

这篇关于【STM32F407】第2章 ThreadX FileX文件系统介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/502601

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器