Skip to content

hpi-bs2-st2020-ninjastorms-network/ninjastorms

 
 

Repository files navigation

           _        _           _
     _ __ (_)_ __  (_) __ _ ___| |_ ___  _ __ _ __ ___  ___
    | '_ \| | '_ \ | |/ _` / __| __/ _ \| '__| '_ ` _ \/ __|
    | | | | | | | || | (_| \__ \ || (_) | |  | | | | | \__ \
    |_| |_|_|_| |_|/ |\__,_|___/\__\___/|_|  |_| |_| |_|___/
                 |__/


 Created by the Operating Systems and Middleware Group at Hasso
             Plattner Institute Potsdam, Germany.

C/C++ CI

Introduction

NinjaStorms is an attempt to create a simple RealTime Operating System which is currently running on Lego Mindstorms EV3 and a virtual environment. This fork aims to add the required functionality for a TCP/IP stack.

Building from Source

ninjastorms uses standard autotools to manage the build process. to configure the sources, you need to execute the configure script. If you checked out the sources from the repository, or there is no configure script present for any other reason, you can generate it by executing

./autogen.sh

To configure the project, execute

./configure --host=<host> BOARD=<board> CFLAGS="-nostdlib -nostartfiles -ffreestanding"

where host is the appropriate host triplet for the target architecture, for example arm-none-eabi for the EV3 or the qemu environments and board is a supported board. See Supported Boards for the board specific configure command.

Building the project requires a host prefixed toolchain capable of generating executables for your target architecture. To generate a host prefixed toolchain, in case your distribution does not provide one, see the generate-toolchain project. Assuming a working toolchain for your architecture and a configured source tree, the project is built by executing

make

When the build completes, the kernel binary can be found in the source tree as a file named ninjastorms. See Supported Boards for the deployment process of the built kernel.

Supported Boards

ninjastorms is currently supported on the following target boards. If your favourite platform is missing, feel free to port the system and send us a pull request!

ev3 - Lego Mindstorms EV3

  • target platform: arm-none-eabi
  • deployment process: TODO

versatilepb - embedded arm virtualization using qemu

  • target platform: arm-none-eabi

  • requirements:

    • Arch: qemu qemu-arch-extra arm-none-eabi-newlib arm-none-eabi-gcc arm-none-eabi-binutils
    • Ubuntu: gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch openocd autoconf libtool u-boot-tools qemu qemu-system-arm
    • Debian: gcc-arm-none-eabi binutils-arm-none-eabi gdb-arm-none-eabi openocd autoconf libtool u-boot-tools qemu qemu-system-arm
    • feel free to add the requirements for other operating systems here
  • configuration: configure ninjastorms for qemu virtual deployment with

      ./configure --host=arm-none-eabi BOARD=versatilepb CFLAGS="-nostdlib -nostartfiles -ffreestanding -mcpu=ARM926EJ-s"
    
  • deployment process: make and execute the built kernel directly with

      ./start_qemu.sh
    

    You will need sudo to start the os, as we need to create a network tap for communication with the host.

    The hardware access to the device periphery will fail silently, but the kernel output will still be shown. You can stop the VM using STRG+A followed by pressing X

Further Reading

The kernel entry point is the kernel_main function in kernel/main.c - this should be a good place to start reading into the source code.

We also collected information on the different supported boards in the hardware-docs project.

Additional documentation can be found here: ninjastorms github wiki.

About

RealTime Operating System(ish) environment for Mindstorms EV3

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 91.8%
  • M4 3.0%
  • Assembly 2.6%
  • Shell 1.4%
  • Makefile 1.2%
  • GDB 0.0%