RELIANCE EDGE | |
Reliance Edge is a small, portable, highly reliable power-fail safe file | |
system for resource-constrained embedded systems like microcontrollers. | |
It is written in C and provides a familiar POSIX-like file system API, | |
making it easy to use in your application; or an alternate minimalist | |
API if your application has simple storage needs. Reliance Edge is | |
highly configurable and can be tuned to the precise needs of your | |
application. | |
Documentation | |
The complete documentation for Reliance Edge is distributed separately. | |
It includes an API reference and detailed discussions of various aspects | |
of using Reliance Edge, including porting, building, configuring, and | |
testing. This complete documentation, called the _Developer's Guide_, | |
can be obtained for free from here: | |
http://www.datalight.com/reliance-edge | |
In addition this README, see doc/release_notes.md for a list of updates | |
to Reliance Edge and a list of known issues. There is also a quick-start | |
guide in the doc/ directory that describes step-by-step how to compile | |
and run Reliance Edge in a simulated Windows environment. | |
Why Use Reliance Edge? | |
Reliance Edge is ideal for small embedded systems with data storage | |
requirements, especially if there is a chance of sudden power loss or | |
other system failures. Compared to "raw" disk access, using a file | |
system like Reliance Edge removes the burden of tracking which sectors | |
belong to which objects, and allows data to be updated more reliably. | |
Compared to the FAT file system, using Reliance Edge eliminates the | |
possibility that file system data will be left in an inconsistent state, | |
corrupting the disk; Reliance Edge does not need a fsck/CHKDSK utility. | |
Compared to journaling file systems, Reliance Edge has less overhead and | |
results in less storage media wear for longer device lifetimes. | |
Reliance Edge uses a unique transactional model that not only prevents | |
file system corruption but also allows a set of changes to be made in an | |
atomic "all or nothing" fashion. This is very useful for applications | |
that make sets of interrelated changes. By using the features of | |
Reliance Edge, a set of changes can be incorporated into a single atomic | |
transaction, which is committed in its entirety or not at all even if | |
interrupted by power loss; this means the application does not need code | |
to recover from partially-finished updates. | |
Hardware | |
The typical hardware for Reliance Edge is a 32-bit microcontroller, but | |
other targets are possible. In its typical configurations, Reliance Edge | |
needs at least 4 KB to 5 KB of RAM, 11 to 18 KB of code space (on the | |
ROM or NOR flash), and 500 to 700 bytes of stack. | |
Reliance Edge is not designed for high-end embedded systems that run | |
complicated operating systems like Linux or Windows Embedded Compact. | |
Embedded systems of that variety are better served by other file | |
systems, like Datalight's Reliance Nitro. | |
Getting Reliance Edge Working | |
Before you can use Reliance Edge, it must be ported and configured. At a | |
minimum, porting includes filling-in functions so that Reliance Edge can | |
issue commands to your storage medium; depending on your needs, other | |
functions may need to be filled in as well. These functions reside in a | |
subdirectory in the os/ directory; see os/stub/ for a blank set of | |
functions. Configuring includes creating a project directory (start by | |
copying projects/newproj) and creating the two configuration files | |
(redconf.h/redconf.c) using the Reliance Edge Configuration Utility | |
(which can be downloaded from http://www.datalight.com/reliance-edge). | |
These topics are covered in much greater detail in the _Developer's | |
Guide_, linked above. | |
Using Reliance Edge | |
Using Reliance Edge is a simple matter of including the primary Reliance | |
Edge application header in your application (either include/redposix.h | |
or include/redfse.h) and compiling and linking against Reliance Edge | |
binaries. The Reliance Edge driver must be initialized before it is used | |
(via the red_init() or RedFseInit() functions) and then volumes can be | |
mounted and file and directory functions invoked. The Reliance Edge API | |
is documented in the _Developer's Guide_ (linked above) and also via | |
comments in the source code. | |
Licensing | |
Reliance Edge is an open-source project licensed under the GNU General | |
Public License v2 (GPLv2). Businesses and individuals that for | |
commercial or other reasons cannot comply with the terms of the GPLv2 | |
license may obtain a commercial license before incorporating Reliance | |
Edge into proprietary software for distribution in any form. Visit | |
http://www.datalight.com/reliance-edge for more information. The | |
commercial distribution also includes extra tests and tools not | |
distributed with the GPLv2 version. | |
See LICENSE.txt for the full license terms of this distribution of the | |
product. | |
Getting Help | |
If you need assistance using Reliance Edge, and you have already | |
consulted the _Developer's Guide_, contact | |
RelianceEdgeSupport@datalight.com. | |
In the near future, a community forum or message board will be set up to | |
facilitate discussion of Reliance Edge and allow users to get help from | |
Datalight and from each other. In the meantime, please use the email | |
address given above. | |
Contributing | |
Contributions to Reliance Edge are welcome. Our policy is that Datalight | |
must own the copyright of all code incorporated into Reliance Edge; if | |
contributing a significant amount of code, you will be asked to file a | |
copyright assignment agreement. See CONTRIBUTING.txt for further details | |
and contribution guidelines. | |
To report bugs, please create a GitHub issue or contact | |
RelianceEdgeSupport@datalight.com. |