Scalable
THIN
is a DOS compatible flash file system which is designed to be extremely
scalable to allow the developer with limited resources to build exactly
the system they need and no more. The system is fully featured giving
the developer the option of enabling new options as requirements
change. It is not possible to give definitive figures for
footprint's because of the differences between the processors and
development tools - the following is for indication only. These are
based on estimates made for the 8-bit 8051 MCU built with the Keil
development suite. Code Footprint Depending on the options selected
at build time the code footprint of the file system can be less than 4k
for a minumum DOS compatible system for accessing files on a disk to
around 20K for a complete file system with all options enabled
including disk formatting; a large section. Data Footprint
THIN works completely
independently from any host system and memory is statically allocated -
i.e. no requirement for a heap to be provided. The typical total data
footprint is <<1K plus 0.5k for each simultaneous file that is
allowed to be open. Stack Requirement
Typically the stack
requirement for any call to the file system is much less than 0.5K. The
developers guide provides guideline information about the specific
stack requirements in different configuations. Options
The system contains a large number of build options which are detailed in the developer guide. Some of the options are:
- F_FAT12
- F_FAT16
- F_FAT32
- F_FORMAT
- F_LONGFILES
- F_WRITE
- F_NAMECHECKING
- F_WILDCARDS
- F_DIRECTORIES
- ... and many, many more
For a complete list consult the developer's guide. Each and every API call is also individually selectable automatically removing unnecessary sub-routines
Speed
One
key feature of systems with limited resources is that they have limited
MIPS for processing and in particular communications tasks place a
significant burden on the host MCU. With THIN HCC has made great efforts to provide the most
efficient possible 'C' source code suitable for 8/16-bit MCUs. This has
been done by a combination of detailed code analysis and optimisation -
and also by the provision of a large range of developer options to
avoid the inclusion of unnecessary code. Embedded systems are by their
very nature "specialised" and THIN makes the creation of a
"specialised" system as easy as possible. Minimising the code footprint generally helps improve
performance and additionally key parts of driver routines have also
been re-coded in 8051 assembler to give the best possible receive and
transmission rates with minimum MCU load. These assembler routines are
available in C also and make excellent templates for any target MCU. An additional feature of the system is the limited use
of copy functions. In most cases reads from a file, and writes to a
file, are done with zero internal copies - thus putting the minimum
load on the MCU while achieving the maximum throughput.
Porting
THIN
is designed to be very portable. It is tested on several commercial
RTOSs and also in a stand-alone system with no RTOS. We are not aware
of any RTOS it cannot easily be ported to.
All the code
is supplied in ANSI compliant 'C', is built on 4 different development
environments and run through a syntax checker to ensure the highest
level of compatibility. Also supplied with the system is sample application code
for easy exercise of the system - and sample drivers for different
media types with clear reference to their hardware dependencies. The Developer's Guide gives detailed information on all
aspects of porting and indicates clearly the areas which may need to be
modified for a particular host system. In particular, the host system
may provide:
- real time clock for time/date information - necessary if time/date information is to be stored with files written.
- random number - serial number generation during format - recommended only if formatting of media is required.
- semaphores for mutual exclusion - only required in a pre-emptive system.
The Developer's guide gives detailed information of how to scale the system:
- which functions to exclude
- the effect of excluding/including a particular option
- selecting FAT12/16/32 support
- selecting long or 8.3 name support
- a variety of code validation functions
HCC is also experienced to provide customised design and development work for your specific project.
Media Types
THIN
is designed to interface to virtually any standard DOS file system
compatible device through standard interface routines (read_sector(),
write_sector() etc.). Provided with THIN is a set of reference drivers
for quick and risk free integration. MultiMediaCard, Secure Digital and SDHC Cards
This
is probably the simplest method to add a DOS compatible file media to
your embedded device. HCC provide a range of drivers for interfacing to
SD, SDHC and MMC cards including standard SPI implemented in either
hardware or software. HCC provide hardware design information for
implementing this.
Compact Flash Cards
Compact
Flash cards require a more complex communication with a PC compatible
media but offers performance advantages because of the wider data bus
thus generally a higher throughput is achieved and in many cases a
reduced CPU load. HCC also provide hardware design information for
implementing this. Atmel DataFlash
Two types of driver are provided for use with all types of Atmel DataFlash. A simple driver which does a direct mapping of Dataflash pages to the logical disk is provided as standard.
A more complex driver, see DFML, which handles the DataFlash in a more reliable way may be ordered separately.
NAND Flash
HCC
have a Flash Translation Layer product which allows an array of NAND
flash to appear to the file system as a set of consistent logical
sectors. FTL can provide the driver layer for THIN. For more details about this see FTL.
RAM Drive
A
RAM drive is provided which is useful for application development
though only on systems with significant amounts of RAM available to
store a minimum file system with FATs etc.
Other Devices
HCC
are always adding to their list of supported devices and will also
develop specific drivers upon request - contact HCC-Embedded to discuss
your requirements. |