filex资源
filex的源码路径有两个:
- 一个是azure-rtos下的filex:azure-rtos/filex (github.com)
- 一个是eclipse-threadx下的filex:eclipse-threadx/filex
filex的文档地址:rtos-docs/rtos-docs/filex
第三方文档:ThreadX FileX和RL-FlashFS文件系统教程
调试工具tracex:Releases · eclipse-threadx/tracex (github.com)
但其实吧,调试工具压根没时间去了解哇,先暂时放一放,因为filex的移植大概率也用不着它,反而是可以通过keil直接调试。
至于为什么会有两个源码路径呢?
Eclipse ThreadX 是一个开源的实时操作系统(RTOS),它是由Express Logic开发的,后来被微软收购所以曾经在azure-rtos仓库下,作为微软维护。后面贡献给了Eclipse,现在的azure-rtos下,已经没有了和threadx相关的内核及其组件的源码了。
filex概述
ThreadX 几乎是小型 RTOS 的巅峰之作,62亿电子设备采用,是其它 RTOS 无法逾越的高山。ThreadX 的产品涵盖了各种领域,包括 NASA 的多个太空探测项目,飞机自动驾驶仪系统,火星侦察轨道器等。
ThreadX 及其所有中间件的安全认证等级,至今没有一款小型 RTOS 可以与其匹敌。这么多安全认证,公司要入大量财力,人力和物力才可以完成,早前 Micrium 的一篇文章还谈过这个问题,投入了太多资金和人力了,还与风河的 VxWorks 做了简单对比。
FileX 嵌入式文件系统是针对 Microsoft FAT 文件格式的高级工业级解决方案,专门针对深度嵌入式,实时和物联网应用程序而设计。FileX 支持 Microsoft 的所有文件格式,包括FAT12,FAT16,FAT32 和exFAT。FileX 还通过 LevelX 的提供了可选的容错能力和FLASH 磨损均衡。并且空间需求小,执行速度快和易于使用,使 FileX 成为要求最苛刻的嵌入式 IoT 应用程序的理想选择。因此,和文件系统相关的就是:filex+levelx。本文章的主题是filex。
FileX 嵌入式文件系统的最小占用空间非常小,只有 8.6 KB 到 12 KB,可支持基本文件读/写。一个实例的最小 FileX RAM 使用量约为 1.8 KB,并且只有 512 字节的逻辑扇区缓存。与 ThreadX 一样,FileX的大小会根据应用程序使用的服务自动裁剪。这实际上消除了对复杂配置的需要,并且无需构建参数,从而使开发人员更轻松。即可配置,可支持小空间,大空间也能通过配置达到高性能。
功能认证
功能介绍
FileX 基本功能介绍如下:媒介服务,也就是存储外设;目录功能,也就是对目录的操作:创建、删除、导航、遍历,以及属性;文件功能,也就是对文件的操作:创建、删除、重命名、读取、写入、属性,以及遍历。
媒介服务:
- 支持 FAT 12/16/32
- 最小 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_close
- fx_file_delete
- fx_file_attributes_set
- fx_file_attributes_read
- fx_file_read
- fx_file_seek
- fx_file_write
命名规则
FileX 的函数命名规则是:Noun-verb naming convention (名词动词命名约定)。根据这个命名规则,我们实际看下个 API,比如:fx_file_allocate ,前缀 tx,名词 file_,动词 allocate。
从一开始,ThreadX 就被设计为工业级 RTOS,并附带完整的 C 源代码。ThreadX 源代码在质量和易于理解方面树立了标杆。此外,一个函数一个源文件的方式,大大方便用户查阅浏览。ThreadX 遵守严格的编码规范,包括要求每行 C 代码都必须有有意义的注释。此外,ThreadX 源码已通过最高标准的认证。
高级特性
- 多媒介管理:FileX 可以外挂不限数量的设备。每个媒介在 fx_media_open 调用中都有其自己独立的存储区和关联的驱动程序。FileX 的默认发行版还附带了一个简单的 RAM 介质驱动程序和一个使用此 RAM 磁盘的演示系统。
- 逻辑扇区缓存:通过减少整个扇区的复制粘贴,FileX 逻辑扇区高速缓存显着提高了性能。FileX 为每个打开的媒介维护一个逻辑扇区缓存。逻辑扇区高速缓存的深度取决于通过 fx_media_open API 调用提供给 FileX 的内存量。
- 连续文件支持:FileX 通过函数 fx_file_allocate 提供连续文件支持,使文件访问具有时间确定的。该函数获取请求的内存量,并寻找一系列相邻的簇以满足请求。如果找到了这样的簇,则通过使其成为文件已分配簇链的一部分来对其进行预分配。在移动的物理媒介上,FileX 连续文件支持可显着提高性能,并确定访问时间。
- 动态创建:FileX 允许动态创建系统资源。如果应用程序具有多个或动态配置要求,则这一点尤其重要。此外,用户可以使用的 FileX 资源(媒体或文件)的数量没有限制。同样,系统对象的数量对性能没有任何影响。
- 掉电保护:FileX 容错功能通过记录在更新过程中更新文件或目录所需的所有步骤来工作。该日志条目存储在FileX 可以找到和访问的专用扇区上。即使没有适当的文件系统,也可以访问日志数据的位置。因此,万一文件系统损坏,FileX 仍然能够找到日志条目并将文件系统恢复到良好状态。
SDMMC基础
讲解 SDMMC(Secure digital input/output MultiMediaCard interface)总线的基
础知识和对应的 HAL 库 API。为下个章节 SD 卡的移植做准备。
这个总线的硬件框图和使用,感觉还是不会呀,先暂时放一放吧。