FatFs
Deweloperzy | ChaN |
---|---|
Pierwsze wydanie | 26 lutego 2006 |
Wersja stabilna | R0,15 / 2022 |
Magazyn | Archiwum wydań |
Napisane w | ANSI C |
Platforma | Intel 8051 , PIC , AVR , ARM , Z80 |
Typ | Oprogramowanie systemów wbudowanych |
Licencja | Własna licencja, podobna do BSD |
Strona internetowa | elm-chan.org |
FatFs to lekka biblioteka oprogramowania dla mikrokontrolerów i systemów wbudowanych, która implementuje obsługę systemu plików FAT / exFAT . Napisany w czystym ANSI C , FatFs jest niezależny od platformy i łatwy do przenoszenia na wiele platform sprzętowych, takich jak 8051, PIC, AVR, ARM, Z80. FatFs został zaprojektowany jako bezpieczny dla wątków i jest wbudowany w systemy operacyjne czasu rzeczywistego ChibiOS , RT-Thread i Zephyr .
Najczęściej FatFs jest używany w systemach wbudowanych o niskim poborze mocy , w których pamięć jest ograniczona, ponieważ biblioteka zajmuje mało miejsca w pamięci RAM i kodzie programu. W wersji minimalnej działający kod zajmuje od 2 do 10 kB pamięci RAM.
Przegląd
FatFs został zaprojektowany jako warstwa systemu plików , która jest niezależna od platformy i nośnika pamięci , z którym jest używana. Osiąga się to poprzez zapewnienie interfejsu dostępu do nośnika, który jest używany do komunikacji z modułem sterującym urządzenia pamięciowego, który jest dostarczany przez wykonawcę. Oznacza to, że FatF mogą współpracować z dowolnym urządzeniem fizycznym, takim jak karta SD lub dysk twardy, na dowolnej platformie, która może uruchamiać zwykły kod C, jeśli wykonawca zapewni interfejs modułu sterującego.
Architektura
Architektura biblioteki FatFs logicznie oddziela abstrakcje aplikacji użytkownika i kod zależny od platformy. Aplikacja użytkownika i niskopoziomowa warstwa we/wy dysku ( sterownik ) musi zostać dodana przez implementatora. Również architektura biblioteki oznacza, że system może mieć kilka urządzeń pamięci masowej z różnymi sterownikami, a biblioteka może pracować w wielowątkowym systemie operacyjnym. Na poziomie aplikacji ukrywa się, który nośnik fizyczny jest używany.
W minimalnej implementacji warstwa sterownika musi obsługiwać co najmniej te 3 interfejsy:
-
disk_status
— zwróć status urządzenia blokowego (nie zainicjowane, brakujące, chronione, gotowe) -
disk_initialize
— zainicjuj dysk fizyczny -
disk_read
— odczyt bloku z dysku fizycznego
Ten poziom abstrakcji pozwala realizatorom napisać aplikację raz, a następnie przenieść ją na różne platformy, zmieniając jedynie implementację sterownika.
Licencja
FatFs ma własną minimalistyczną licencję podobną do licencji BSD . Pozwala na wykorzystanie w produktach komercyjnych bez ujawniania kodu źródłowego . Jedynym warunkiem jest zachowanie o prawach autorskich w przypadku redystrybucji kodu źródłowego. Warunki licencji FatFs nie obejmują żadnej redystrybucji w formie binarnej, takiej jak osadzony kod i pliki heksadecymalne.
Projekty wykorzystujące FatF
- Arduino (STM32Duino) — port platformy Arduino dla mikrokontrolerów STM32
- ChibiOS/RT — system operacyjny czasu rzeczywistego (RTOS) typu open source dla mikrokontrolerów
- Dreamshell — system operacyjny podobny do Uniksa, zaprojektowany dla konsoli do gier wideo Sega Dreamcast
- Flipper Zero — przenośne narzędzie wielofunkcyjne typu open source
- Marlin (firmware) — oprogramowanie typu open source dla drukarek 3D i maszyn CNC
- ESP-IDF — oficjalne ramy programistyczne IoT dla układów SoC z serii ESP32
- Prusa Mini — oprogramowanie typu open source dla tanich drukarek 3D
- RT-Thread — system operacyjny czasu rzeczywistego typu open source dla systemów wbudowanych
- Zephyr — system operacyjny czasu rzeczywistego dla systemów wbudowanych obsługujący wiele architektur