Skip to content
This repository has been archived by the owner. It is now read-only.
/ rtems-ec-cli Public archive

Command line interface for embedded controllers based on RTEMS RTOS.

License

Unknown, BSD-2-Clause licenses found

Licenses found

Unknown
LICENSE
BSD-2-Clause
LICENSE.2
Notifications You must be signed in to change notification settings

maxpoliak/rtems-ec-cli

Repository files navigation

Command line interface for embedded controllers based on RTEMS RTOS

Based on the ile-cli project.

RTEMS (Real-Time Executive for Multiprocessor Systems 1,2) is a real-time operating system kernel used around the world and in space. RTEMS is a free real-time operating system (RTOS) designed for deeply embedded systems such as automobile electronics, robotic controllers, and on-board satellite instruments.

This example is the result of a study of this OS. I was interested in learning how to build an image and create applications for it. At the moment, this project is used as a base for creating embedded controller applications based on x86 CPU and ARM-microcontrollers LPC1768 .

Perhaps this work will be interesting to someone and you will use this knowledge to create your own systems.

demonstration

Build

Make some preparations once before start the building process:

git clone https://github.com/maxpoliak/rtems-ec-cli.git && ./rtems-ec-cli/preparations.sh

Use the help to print all the available commands:

./build.sh help
Use ./build.sh [COMMANDS...]
  all         Build all: cross-compiler, RTEMS OS and ile-cli application
  rtems       Build RTEMS OS
  cross       Build cross-compiler
  cleanall    Clear all
  rebuild     Set rebuild flag
              Delete the application's object files before building it
  help        Print help

For the first build, use the build script with the "-a" or "all" option to build all components of the project. As a result, you will build a cross compiler, RTEMS OS and the ile-cli application itself.

./build.sh all

Build the application only, without rebuilding tools and RTEMS OS:

./build.sh

The Waf build system (3,4) is used for the output executable file of the application.

Use the docker.sh scripts to run in the docker container.

./docker.sh ./build.sh all

Test

Test the result in QEMU using the script:

./run.sh

Using GRUB2 to boot

The next step is to load the RTEMS and EC-CLI application from an external disk to QEMU. To do this, you need to create a virtual image of the boot disk, install grub on it and copy the exe file. You can do all this with create-boot-image.sh:

dd if=/dev/zero of=boot-disk.img bs=512 count=32130
sudo ./create-boot-image.sh --file boot-disk.img

After that you can test the result in QEMU:

qemu-system-i386 -m 128 -hda boot-disk.img -M q35 -nographic

coreboot + seabios

To make testing similar to using real hardware, you can build coreboot with seabios payload for "QEMU x86 q35/ich9" machine and run it together with rtems-boot.img on QEMU:

qemu-system-i386 -m 128 -bios coreboot.rom -hda rtems-boot.img -M q35 -nographic