Features
Okay, so we piqued your interest, but you're wondering what features NxOS has to offer. NxOS has a lot to offer for various different needs, so take your pick from the sections below!
Robot programmer
You're programming robots using Lego's firmware, or maybe using one of the alternatives such as Lejos or pbLua. If you'd like to program robots using plain old C, NxOS might be for you. You can program either using the Baseplate?, which is the bare minimum to get the brick running. This is what it has to offer:
- Total programming freedom: just implement main(), and you're on your way.
- High performance asynchronous device drivers for most NXT peripherals.
- Various optional utility modules, including a realtime memory allocator and a data tracing facility.
- The performance of C running on the bare metal, bothered only by the small overhead of keeping the device drivers running.
- Clean, well documented APIs.
Alternatively, you can also benefit from a higher level system by using Marvin?, an application kernel which provides a high level multitasking environment for C programming:
- Preemptive realtime scheduling (development in progress).
- IPC primitives for task synchronization (development in progress).
- A realtime memory allocator.
- Easy to use device driver interface that ensures safe access to peripherals (to be developped).
- Still most of the performance of C running on the bare metal (the operating system overhead is very light).
- Clean, well documented APIs.
If you want to program in other languages, it may also be possible, if an application kernel exists for that specific environment. Check out the list of available application kernels? to see if one of them matches your needs!
Operating system developer
You're developing, or are interested in developing an operating system for the NXT brick. Maybe you have a cool new language that you'd like to make available on the NXT, like the folks of the Transterpreter project did. But, you don't want to go through the hassle of getting your system booted. The NxOS Baseplate? might be what you are looking for. It features:
- A suite of asynchronous, high performance device drivers for most of the NXT's peripherals.
- Small code footprint, just the bare minimum to get the brick started.
- Very low performance overhead, just enough to keep the device drivers running.
- Various optional utility modules, including a realtime memory allocator and a data tracing facility.
- Clean, well documented APIs to the Baseplate.
You may also be interested to know that Marvin?, which we explored in the previous section, is built exactly like this. The Transterpreter is another project that has used NxOS in this fashion to easily bootstrap their transputer virtual machine.
Embedded systems student or teacher
Mindstorms are a great educational platform to get started in the world of robotics and embedded programming. The platform is featureful and expandable, but also has limited memory and CPU resources, as well as some soft real time constraints that need to be taken into account. Whether you want to learn how interrupts are handled, test a real time scheduling algorithm, or program a robotics control system, NxOS probably has what you want:
- Clean, well documented code for low-level kernel operations, device drivers and high level user environments.
- A small, fast baseplate? that provides high performance device drivers and system management functionality.
- Various optional utility modules, including a realtime memory allocator and a data tracing facility.
- A suite of high level application kernels that demonstrate building higher level environments.
- A layered design that makes it easy to experiment with new high level kernels, or to develop new device drivers.
If you're teaching embedded systems or low level system programming, NxOS is a well documented, expandable platform that could help you develop the embedded design and programming skills of your students. This project was actually started by a couple of students, under the mentoring of university professors. Today, in a humble capacity, it is already being used by several students of the University of Technology of Belfort-Montbéliard to further their knowledge of embedded systems.
If you are interested in using NxOS for educational purposes, we'd love to hear about it and help you get started!
Low-level embedded hacker
You're a low level hacker. You feel most comfortable when you have no libc, no virtual memory, and 64kB of RAM. Cross-compilers bow before your might, you implement big-banged I2C drivers for fun, and have tried to mess with the firmware of most of the devices you own. In that case, you may enjoy contributing to NxOS. We're still a project under development, and there is plenty to do for the bored hacker. You'd be developing on clean, well documented code, and you'd be using your expertise to help make NxOS into a better platform.
If you think that's something you would enjoy, head over to the developer's corner for more!
