ファットFs

ファットFs
開発者チャN
初回リリース2006年2月26日; 19年前 (2006年2月26日
安定版リリース
R0.15 / 2022
リポジトリリリースアーカイブ
書かれたANSI C
プラットフォームインテル 8051PICAVRARMZ80
タイプ組み込みシステムソフトウェア
ライセンスBSDに似た独自のライセンス
Webサイトelm-chan.org

FatFsは、マイクロコントローラおよび組み込みシステム向けの軽量ソフトウェアライブラリで、FAT / exFATファイルシステムのサポートを実装しています。 [1]純粋なANSI Cで記述されたFatFsはプラットフォームに依存せず、8051、PIC、AVR、ARM、Z80などの多くのハードウェアプラットフォームに簡単に移植できます。FatFsはスレッドセーフとして設計されており、 ChibiOSRT-Thread、ErlendOS、[2]Zephyr リアルタイムオペレーティングシステムに組み込まれています[3]

FatFsは、メモリが限られている低消費電力の組み込みシステムでよく使用されます。これは、ライブラリがRAMとプログラムコードにほとんどスペースを取らないためです。最小バージョンでは、動作コードは2~10KBのRAMを占有します。[4]

概要

FatFsは、プラットフォームやストレージメディアに依存しないファイルシステム層として設計されています。これは、実装者が提供するストレージデバイス制御モジュールとの通信に使用されるメディアアクセスインターフェースを提供することで実現されます。[5]つまり、実装者が制御モジュールインターフェースを提供していれば、FatFsはSDカードハードディスクなどのあらゆる物理デバイスで動作し、プレーンなCコードを実行できるあらゆるプラットフォームで動作します

建築

FatFsアーキテクチャのレイヤースキーム

FatFsライブラリのアーキテクチャは、ユーザーアプリケーションの抽象化とプラットフォーム依存コードを論理的に分離します。ユーザーアプリケーションと低レベルのディスクI/O層(ドライバ)は、実装者が追加する必要があります。[5] : 11 また、ライブラリのアーキテクチャは、システムが複数の異なるドライバを持つストレージデバイスを持つことができ、ライブラリがマルチスレッドオペレーティングシステムで動作することを示唆しています。アプリケーションレベルでは、どの物理メディアが使用されているかは隠蔽されています。

最小実装では、ドライバ層は少なくとも以下の3つのインタフェースをサポートする必要があります: [5] : 14 

  • disk_statusブロックデバイスのステータスを返す(初期化されていない、見つからない、保護されている、準備完了)
  • disk_initialize— 物理ディスクを初期化する
  • disk_read— 物理ディスクからブロックを読み取る

このレベルの抽象化により、実装者はアプリケーションを一度作成し、その後はドライバーの実装のみを変更するだけで、異なるプラットフォームに移植することが可能になります。 [6]

ライセンス

FatFsはBSDライセンスに類似した独自のミニマリストライセンス[7]を有しています。このライセンスでは、ソースコードを開示することなく商用製品での使用が許可されています[5]唯一の条件は、ソースコードを再配布する際に著作権表示を残すことです。FatFs ライセンス条件は、埋め込みコードやHEXファイルなどのバイナリ形式での再配布には適用されません。

FatFs を使用したプロジェクト

  • Arduino (STM32Duino) — STM32 MCU用のArduinoプラットフォームの移植版[8]
  • ChibiOS/RT —マイクロコントローラ向けオープンソース リアルタイムオペレーティングシステム(RTOS)
  • Flipper Zero — オープンソースのポータブルマルチツールデバイス
  • Marlin (ファームウェア) — 3DプリンターとCNCマシン用のオープンソースファームウェア
  • ESP-IDF — ESP32シリーズSoCの公式IoT開発フレームワーク[9]
  • Prusa Mini — 低価格3Dプリンター向けオープンソースファームウェア
  • RT-Thread —組み込みシステム向けオープンソースリアルタイムオペレーティングシステム[10]
  • Zephyr — 複数のアーキテクチャをサポートする組み込みシステム向けリアルタイム オペレーティング システム
  • ErlendOS — 組み込みシステム向けのオープンソースの最小限のUNIXライクなオペレーティングシステム
  • EZ-Flash Omega - Nintendo Game Boy Advance 用のフラッシュカード ファミリ。

参考文献

  1. ^ イヴァン・シブラリオ・ベルトロッティ (2016).組み込みソフトウェア開発。オープンソースのアプローチ。胡ティンティンさん。 p. 361.ISBN 9781466593930. OCLC  932464067.
  2. ^ "erlends-os / kmod / fatfs". GitLab . 2023年11月16日閲覧
  3. ^ Yi Qiu (2020). RTスレッドオペレーティングシステムの設計と実装. Xiong Puxiang, Tianlong Zhu. p. 361. ISBN 9780367554866. OCLC  1197810565.
  4. ^ 「FatFsメモリ使用量比較表」. elm-chan.org . 2022年6月17日閲覧
  5. ^ abcd 「FatFsを使用したSTM32Cube上のアプリケーション開発」(PDF)STMicroelectronics . 2022年6月22日閲覧
  6. ^ベニンゴ、ジェイコブ(2017年)。『再利用可能なファームウェア開発:API、HAL、ドライバへの実践的アプローチ p.255。ISBN 9781484232972. OCLC  1484232976。
  7. ^ 「FatFsライセンス」. elm-chan.org . 2022年6月17日閲覧
  8. ^ 「ArduinoプラットフォームドキュメントにおけるFatFsライブラリの説明」Arduino公式サイト. 2022年6月17日閲覧。
  9. ^ 「FATファイルシステムのサポート - ESP32 - — ESP-IDFプログラミングガイド最新ドキュメント」。docs.espressif.com 2022年6月27日閲覧
  10. ^ 「rt-threadオペレーティングシステムにおけるFatFsファイルシステム構成」。www.rt -thread.io 。 2022年6月26日閲覧
「https://en.wikipedia.org/w/index.php?title=FatFs&oldid=1310151099」から取得