# BrickOS

BrickOS is an open-source operating system created by Markus Noga as firmware to operate as an alternative software environment for the Lego Mindstorms Robotic Invention System. BrickOS is the first open-source software made for Lego Mindstorms robots. It allows development using the C, C++, and Java programming languages. Programs are cross compiled using the g++ and Jack compilers, with the toolchain targeting the Hitachi H8 architecture used in Mindstorms devices.

## Features

BrickOS was designed and developed using Linux as a replacement for the previous operating system for Lego Mindstorms, which is also known as LegOS. It is capable of being implemented on the Windows system and most Unices. It allows for a more flexible and higher performances system that is much superior to LegOS. The current version of the system's main features includes:
* An application programming interface that supports dynamic loading of programs and modules
* Preemptive multitasking
* 6 MHz native mode speed
* Driver for all RCX systems (sensors, motors, sound, etc.)
* Access to 32k RAM
* Full infrared packet networking, providing communications for users with personal computers through USB port
* Dynamic memory management
* Programming languages: C, C++, or Java
* Built-in support for POSIX semaphores
Whereas LegOS uses interpreted bytecode, BrickOS programs are compiled to native machine code, and so execute much more quickly.
BrickOS is flexible with controlling outputs, for instance, it can alter 255 value of motor speed. Another feature is that brickOS contains a LegOS Network Protocol (LNP) which allows for more than one driver to communicate. This protocol will broadcast message to any RCXs component within the receiving area. By adding layers to the command, the message can filter out the recipient to arrive at the addressed RCX.
BrickOS provides a development environment that allows users to freely implement the provided RCX drivers, such as sensors and motors, using C or C++ programming languages. It can be used alongside libre simulators LegoSim and Emmulegos, which provide graphical interfaces to create a virtual machine that eases the users in the debugging process.
The success of the system is built upon the community that constructed it. The system library and resources at any moment can be modified and updated freely with new functionalities and solutions from the programming community, separating the system from the limited tools provided by the manufacturer. With the help of the Internet, solutions are made accessible to everyone.

## Application
### Robotics

The implementation of robots has become a crucial asset in this current industrial world. In robotics, libre software (or open-source software) like brickOS is considered a traditional tool for developing robots. The potential robotic application, in general, is vast. For instance, many enterprises have decided to bring robotics into use to replace human labor in factories for manufacturing products and managing storage. The essential of these applications has become a motivation for industries to invest in further research in robotics. The practices of the open-source software in robotic research have inspired the formation of the Robocup competition. An organization called Robocup have created an international playground for the problem-solving, educational initiative, and research in robotics. Participants are allowed to share code and utilize it to solve problems. The competitive environment allows for multiple different engagements toward the problems and effectively produces alternative solutions to a single problem. These solutions can be made public to the community for improving the resource.

### Education

BrickOS was a collaboration project between LEGO and MIT to create an educational tool for teaching the implementation of sensors and motors on robots. The operating system's development environment has been adopted in courses by several universities like Universidade Federal do Amazonas (UFA) in Brazil to be used as a platform for graduating college students to gain exposure in the early year of their career to programming C and C++ cross-compilation tools. The simplicity of the mechanical devices in the Lego Mindstorm kit allows for obtaining the concept of robots and developing creative and logical thinking. There exists empirical evaluation on the benefits of robotic learning that it enhanced pupil's ability in planning toward the objective and collaborations among peers.