µC/FS Porting Manual

µC/FS adapts to its environment via a number of ports. The simplest ones, common to all installations, interface with the application, OS kernel (if any) and CPU. More complicated may be ports to media drivers, which require additional testing, validation and optimization; but many of those are still straightforward. The figure below diagrams the relationship between µC/FS and external modules and hardware.

The sections in this chapter describe each required function and give hints for implementers. Anyone creating a new port should first check the example ports that are included in the µC/FS distribution in the following directory:

\Micrium\Software\uC-FS\Examples\BSP\Dev

The port being contemplated may already exist; failing that, some similar CPU/device may have already be supported.

µC/FS ports architecture

(1) µC/Clk act as a centralized clock management module. If you use an external real-time clock, you will have to write functions to let µC/FS know the date and time.

(2) The CPU port (within µC/CPU) adapts the file system suite to the CPU and compiler characteristics. The fixed-width types (e.g., CPU_INT16U) used in the file system suite are defined here.

(3) The RTOS port adapts the file system suite to the OS kernel (if any) included in the application. The files FS_OS.C/H contain functions primarily aimed at making accesses to devices and critical information in memory thread-safe.

(4) µC/FS interfaces with memory devices through drivers following a generic driver model. It is possible to create a driver for a different type of device from this model/template.

(5) The SD/MMC driver can be ported to any SD/MMC host controller for cardmode access.

(6) The SD/MMC driver can be ported to any SPI peripheral for SPI mode access.

(7) The NAND driver can be ported for many physical organizations (page size, bus width, SLC/MLC, etc.).

(8) The NAND driver can be ported to any bus interface. A NAND device can also be located directly on GPIO and accessed by direct toggling of port pins.

(9) The NOR driver can be ported to many physical organization (command set, bus type, etc.).

(10) The NOR driver can be ported to any bus interface.

(11) The NOR driver can be ported to any SPI peripheral (for SPI flash).