Bare Metal software
What is "Bare Metal" ?
This is basically a processor controlled system where the code
running on it is not under the supervision of an operating system.
To put it another way, the code is compiled and loaded onto a fixed
memory device, and runs directly from it.
In comparison, non "Bare Metal" codes runs under an operating system
which may be acquired as a whole, and tailored to the device running
it.
Most "bare metal" code takes advantage of code libraries, but these
are compiled in, and not 'loaded' at run time.
"Bare Metal" provides the most efficient use of the processor and it's
resources, at the expense of convenience during development.
A well written bare metal implementation is fast and efficient, both in
terms of speed, and use of code and data space.
An example, originally targetted at the education and home hobbyist is
the range of Arduino boards currently available.
The original board, called the Uno, used an Atmel Atmega328P
microcontroller.
This device is completely self contained, with on board Flash, eeprom
and RAM, along with many ports providing things like UART, SPI, and I2C
interfaces. See definitions below.
So -- what do we do with this type of processor ?
NB TechKnowledgy Ltd. have produced both a 'C' and a 'C++'
set of libraries that can be run on this platform, along with other
boards utilising this processor.
What about multi-threading or multi-tasking ?
Well, we have a C++ object and a C library that allows us to use a timer
to perform callbacks using the timer and it's interrupt.
This provides a pseudo multi-tasking facility, without the overhead of
a full operating system.
Well, that's all well and good, but what about realtime processing ?
We have libraries that allow interrupt driven communications on the SPI,
I2C and UART interfaces.
The above is just scratching the surface of what we can do with a small
embedded system.
Definitions :-
-
Flash
--
Where the code is stored
-
Eeprom
--
Extra non-volatile storage
-
RAM
--
Random Access Memory
-
UART
--
a serial interface commonly called RS232
-
SPI
--
a synchronous serial interface
-
I2C
--
an asynchronous multi-drop serial interface
The libraries mentioned above will be available from our download links soon.
If you cant wait, they can also be found on
Bitbucket
While these libraries are open source, they are subject to the GPL license
and should NOT be used commercially other than for evaluation purposes.
If you wish to use them commercially, please
contact us for a licensing agreement.
By accessing or using this site, you agree to be bound by the terms and conditions set forth in the terms herein.