Can Reliance Edge be used in an environment that does not have an Operating System? How would this be implemented?
The simple answer is, yes, a non-OS environment will work fine, as long as the block device service can be implemented.
From a more technical perspective, first of all, you should treat your non-OS environment just like any other environment when porting Reliance Edge. The instructions in the Porting Guide apply. But here are a few specific tips that may be helpful:
- Both the mutex and the task services (osmutex.c and ostask.c) are conditioned entirely on REDCONF_TASK_COUNT being greater than 1. In a single task environment, you should set "Maximum task count" to 1 in the configuration utility so that REDCONF_TASK_COUNT will equal 1. You should still copy osmutex.c and ostask.c into your os/OSNAME/services folder, but you can use the stubbed implementations.
- The timestamp service (ostimestamp.c) is used for testing purposes only. If you provide a stubbed implementation (e.g. all functions return 0), then you may see some weird results for some tests, but the filesystem will still function properly.
- The clock service (osclock.c) is optional. If your non-OS environment does not provide a way to get the current time, then you can provide a stubbed implementation. In such a case, you should consider disabling REDCONF_INODE_TIMESTAMPS (deselect "Enable inode timestamps" in the configuration utility).
- The assert service (osassert.c) is conditioned on REDCONF_ASSERTS, but you should not have trouble implementing it, even in a non-OS environment.
- The block device service, however, must be implemented. In order for Reliance Edge to work, it must have an interface with the block device. In a non-OS environment, you will have to implement the RedOsBDev*() functions so that they communicate directly with the block device drivers. Again, this is not really different from how it is done when using an OS.