A Lean Operating System (LeanOS)
An Operating System designed for small microprocessors without a Memory Management Unit (MMU) to provide "app-like" functionality while reducing
Size, Power and Cost
LifeOS™ is a lean operating system (LeanOS) designed for embedded devices. It includes a cooperative multitasking kernel and provides certain features for small processors that are normally only found on larger systems. Most importantly, LifeOS™ supports downloadable apps that are loaded into memory dynamically when needed. Normally this type of functionality requires processors with virtualization capabilities often involving an MMU (memory management unit) or additional hardware. The LifeOS™ is able to implement this feature without extra hardware and uses a patented code linking and loading technology. The technology is highly optimized for embedded systems that typically run code from flash memory.
01 / Reduce SIZE
02 / Reduce POWER
03 / Reduce COST
"By loading modules from storage into high premium program space only when needed, the system is able to offer extended functionality while keeping the costs for premium resources under control."
Jumping Moore's Law
LifeOS™ strives to be as independent as possible from platform, architecture and development tools. It implements a HAL (hardware abstraction layer) with a common interface between the kernel and underlying environment. Abstraction is realized with two aspects in mind: architecture and platform. Architecture defines the processor architecture of the target device, while platform refers to the IDE or development environment being used to develop, build and deploy the device firmware. This level of abstraction allows components and even entire device implementations to be simulated on other platforms and environments that are better suited for rapid development and testing.
Dynamic loadable modules in lightweight embedded systems
The advantages of independent modules that are loadable individually and on demand has long been recognized and widely used on larger computer systems. It provides a high level of flexibility in the range of functionality a particular system can provide. Instead of requiring all functionality to be included in one monolithic code base, the system has access to a large set of modules that are stored somewhere highly optimized for low cost long term storage. By loading modules from this storage into high premium program space only when needed, the system is able to offer extended functionality while keeping the costs for premium resources under control. Using this methodology allows programmability and flexibility that is limited only by the number of modules offered and the amount of long term storage space available to store them on. All standard operating systems from mainframes to PC’s and smartphones are based on this basic principle.
ELF EXECUTABLE AND LINKABLE FORMAT
The LeanOS uses the ELF files as a basis to convert into a proprietary FLM (Flash Loadable Module) file through a proprietary tool named the Flash Linker.
The entire code and data segment will be loaded directly into RAM and subsequently enumerate through the relocation sections to determine how and where address fix ups need to be performed and make the corresponding changes in the code and data locations in RAM accordingly.
Flash loadable modules
The ability to load binary modules freely at any memory location, regardless of the initial target addresses used during build time
Designed to simplify the dynamic linking process with shared libraries that are intended to be shared between multiple processes. The FLM technology is compatible with any PIC implementation and able to take full advantage of these features to streamline the relocation process.
In order to produce an image that can be relocated, it is important load-time relocation information is provided in the ELF file. Assuming all the proper options are provided, the linker will produce an ELF file that contains the code and data segments and one or more sections with relocation information.
The flash linker converts a regular ELF file to an FLM file which is much more suitable for loading binary images into flash on embedded systems with limited resources.