What is nxtOSEK? (Updated: January 2009)



nxtOSEK is an open source platform for LEGO MINDSTORMS NXT. nxtOSEK consists of device driver of leJOS NXJ C/Assembly source code, TOPPERS/ATK (Automotive Kernel, formerly known as TOPPERS/OSEK) and TOPPERS/JSP Real-Time Operating System source code that includes ARM7 (ATMEL AT91SAM7S256) specific porting part, and glue code to make them work together. nxtOSEK can provide:

  • ANSI C/C++ programming environment by using GCC tool chain
  • C API for NXT Sensors, Motor, and other devices
  • C++ API for NXT Sensors and Motor which include many third party sensors
  • TOPPERS/ATK provided real-time multi tasking features proven in automotive industry

  • TOPPERS/JSP provided real-time multi tasking features complied with Japan original open RTOS specification μITRON 4.0

  • Fast execution and less memory consumption
    (nxtOSEK program is executed natively on the ARM7 and nxtOSEK itself consumed totally just about 10Kbytes)
  • There are three ways to upload nxtOSEK application to the NXT
    1. Using John Hansen's Enhanced NXT firmware
        (multiple nxtOSEK programs can be uploaded to a NXT. However, a nxtOSEK program has to be less than 64Kbytes)
    2. Using NXT BIOS (max. 224Kbytes single nxtOSEK program uploaded to Flash)
    3. Direct boot from RAM (max. 64Kbytes single nxtOSEK program uploaded to RAM, no Flash write)
  • Many examples (include NXTway-GS and NXT GT...)

NOTE: Porting TOPPERS/ATK to the NXT was done by Professor Masaaki Mizuno, Department of Computing and Information Sciences,
Kansas State University.

NOTE: Porting TOPPERS/JSP to the NXT was done by Monami Software Limited Partnership, Japan

NOTE: Using C++ with nxtOSEK was made possible by Dr. Robert Kramer, Department of Computer Science and Information Systems, Youngstown State University.

nxtOSEK - The new project name (May 2008)

The change of the project name is not due to legal issue. LEJOS(leJOS) seems to make many people misunderstand LEJOS OSEK as "an alternative Java VM" or "an add-on of leJOS NXJ". Therefore, we have decided to change the name, this change would not affect the backward compatibility of APIs and existing users applications.


According to LEGO MINDSTORMS NXT Hardware Developer Kit,
Important note: When the NXT is disassembled or when third party firmware is used with the NXT, all warranties are rendered invalid

It means that if you uploaded a nxtOSEK program (or any other third pary firmware) to your NXT, your NXT may be out of any warranties provided from LEGO. Therefore, please be sure that the authors of nxtOSEK do not take any responsibility for any loss or damage of any kind incurred as a result of use or download of nxtOSEK and related third party tools.


Quick Look in nxtOSEK

Following to Steve Hassenplug's NXT Programming Software table, let's check the latest features of nxtOSEK.

Language type
nxtOSEK: ANSI C/C++ using GCC (GNU ARM)
Embedded Coder Robot NXT: Graphical modeling/simulation/code generation environment based on nxtOSEK and The MathWorks MATLAB & Simulink products
John Hansen's Enhanced NXT firmware
IDE (included?)
Eclipse CDT
Windows Windows XP SP2
Windows Vista (Enhanced NXT firmware and NXT BIOS)


Unofficially supported (still challengeable)
Yes (i.e. OSEK supports Event synchronization)
Yes (i.e. OSEK supports Preemptive/Non-Preemptive multi Task, mutually exclusive access)
Bluetooth (Brick to PC) Yes (NXT GamePad provides R/C and Data Logging features)
Bluetooth (Brick to Brick) Yes (but, only one NXT to one NXT)
Bluetooth (Brick to other Devices) Never tested
USB Yes. nxtOSEK v2.05 uses LEGO Famtom driver on PC side
I2C Support Yes (Ultrasonic Sensor, HiTechnic Acceleration/Color Sensor, LATTEBOX's NXTe...)
RCX Sensor support Yes
File System Yes.
Enhanced NXT firmware or NXT BIOS(single file system).
NOTE that BMP file for LCD graphic and WAV files for sound generation are also supported
Floating Point Yes
Dynamic memory manupulations Yes, but not thread safe and it consumes more memory than static memory manupulations.
C: malloc/free supported
C++: new/delete and smart pointer supported
Datalog Yes (saved as a CSV file by NXT GamePad)
Make robots move without learning to program At least, need to learn C/C++ (tons of material are available)
Learn to Program using the NXT Good for learning embedded C/C++ software programming
Write "Fast" programs Yes (application is natively executed)
Write programs "Fast" Depending on the skill
Learn Advanced Programming concepts Yes (especially, embedded C/C++ programming, RTOS, and control software)
Suited For... Embedded software programmer, C/C++ programmer
Test Program Speed (loops/min) 76K (with full LCD display update for each variable), 1864K (without LCD display)
Test Program Memory (bytes) 18.7kbyte (includes nxtOSEK platform)
Test Program (Time to write) 30 minutes