This repository implements an OSEK-like, bare-metal operating system for ARM(R) Cortex(R)-M3. The goals are to achieve near-compatibility with OSEK (ECC1/BCC1) and to provide an intuitive, esay-to-understand sample application that can be extended for your own projects.
Features include:
- OSEK-like OS implementation with support of most common features.
- The sample application runs on the STM32F100-NUCLEO Board.
- Tasks and events interact to produce a blinky LED show featuring the green and blue LEDs toggling at 1Hz (green) and 1/2 Hz (blue) respectively.
- Use a simple self-written bare-metal startup.
- Power, clock and port initialization.
- 1ms timebase derived from the ARM(R)
SysTick
. - Implementation in C99 with absolute minimal use of assembly.
A clear and easy-to-understand build system based on either free GNUmake/GCC or alternatively KEIL MDK completes this fun and educational project.
This repository provides keen insight on writing your own bare metal operating system from scratch on a modern microcontroller using entirely free tools and open standards.
Following low-level chip initialization, the program jumps
to the main()
subroutine in Application/Appli.c.
Here there are two functional lines. The first line initializes the LEDs.
The second line subsequently starts the operatng system via call
to OS_StartOS()
.
An idle task and one single extended task animate the user LED, providing a simple blinky LED show featuring the gren and blue LED(s) toggling at 1Hz (green) and 1/2 Hz (blue) respectively.
Build on Win*
is easy using an installed KEIL-MDK.
Simply use the project file PRJ_02.uvprojx
which can
be found in the project's root directory.
Build on *nix*
is easy using an installed gcc-arm-none-eabi
cd OSEK
./Build.sh
The build results including ELF-file, HEX-mask, MAP-file
can be found in the Output
directory following the GNUmake build.
Further information on open standard OSEK can be found in ISO 17356 and in the link below: