Transcript File Systems
Real-Time Library: Flash File System
1
Flash File System - Basics
– The RL-FlashFS allows to create, save, read and modify files – The library functions provide high level access to file system functionalities – Usage with the MicroLib runtime library is not supported
4-2
What is MicroLib
MicroLib is a highly-optimized library for ARM-based embedded applications written in C. When compared to the standard C library included with the ARM Compilation Tools, MicroLib provides significant code size advantages required for many embedded systems .
4-3
Flash File System - Basics
Supported memory devices: External RAM External Flash (SPI) Internal Flash Memory Cards like SD and MMC cards (used in SPI mode) Default drives: “R:“ external RAM (“Ram Drive“) “S:“ external Flash (“SPI Flash device“) “F:“ internal Flash (“Embedded Flash drive“) “M:“ external Memory Cards (“Memory Card Drive“)
4-4
Flash File System - Basics
Up to 4 GByte memory space is supported Supported file system for memorycards are FAT16 or FAT32 All devices can be used parallel Required components: RL-FlashFS library file Configuration file File_Config.c
The File system may be used with or without RL-RTX The file system integrates with RL-TCP TFTP server Webserver upload The File system integrates with RL-USB Mass Storage Class (MSC)
4-5
Memory Organization
A Flash device is usually divided into flash sectors (Block) – A Flash sector is a memory page which is written cell after cell – The size of a memory cell depends on device architecture 8-bit (byte) 16-bit (half word) 32-bit (word)
4-6
Memory Organization
– A big file is separated into multiple blocks – Smaller files are stored together in one block Deleting a file: The whole flash sector has to be erased Data within this sector which is not to be deleted will be saved within another sector Changing a file: Changed data is stored into a new sector The file pointer is actualized The sector with the old file data is erased
4-7
RAM Device
Configuring the file system to use the internal RAM of a typical ARM based microcontroller.
Not practical in real life - RAM is volatile (unless battery backed) Basic Configuration file:
File_Config.c
Libraries: ARM7 & ARM9:
FS_ARM_L.lib
Cortex-M3:
FS_CM3.lib
4-8
RAM device
4-9
RAM
RAM Device has to be split into
logical sectors
– Usage without Device Description Table – Device layout is generated automatically by configuration (
File_Config.c)
– RAM devices need special low-level read/write function – High-level handling is equal to Flash devices
4-10
Flash File system functions
4-11
Flash File system functions
4-12
SD CARD
Hardware Wear levelling and error correction Giga bytes of low cost storage 100Mbit/sec data transfer rate Write protection Optional copyright protection Standard communication protocol Independent from the underlying flash technology Typically 100K Writes endurance Low cost
4-13
SD CARD
4-14
Using Memory Cards
Memory cards can be used in SPI mode or Native mode Uses the FAT file system Supports no directories or subdirectories Maximum of 512 directory entries File Information Record of each file stores time information too fs_get_time() fs_get_date()
4-15
SD CARD SPI MODE
Uses a SPI Driver for low level functions -
spi_init() Initialize the SPI controller
spi hi speed() Change between high and low SPI mode spi_hi_speed for SPI data transfer
spi_send() Writes and reads a byte on the SPI
interface
4-16
SD CARD - MCI MODE
Uses a MCI Driver for low level functions
mci_init() Initialize the MCI controller
mci_read_sect() Reads a sector from the Flash
Memory Card (512 byte)
mci_write_sect() Write a sector to the Flash Memory
Card (512 byte)
mci_read_config() Reads Memory Card configuration
Memory Card is handled in hardware Communication in Native mode is faster than in SPI mode – MCI Driver: MCI_LPC23xx.c
4-17