What is nxtOSEK? (Updated: June 2008)

 

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.

nxtOSEK is an open source firmware for LEGO MINDSTORMS NXT. nxtOSEK consists of device driver of leJOS NXJ C/Assembly source code, TOPPERS OSEK 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 (includes many third party sensors)
  • (TOPPERS) OSEK provided real-time multi tasking features proven in automotive industry
  • Fast execution and less memory consumption
    (Application is executed natively on the ARM7 and nxtOSEK itself consumed totally just about 10Kbytes)
  • There are 3 ways to upload nxtOSEK application to the NXT
    1. Using John Hansen's enhanced NXT standard firmware
        (multiple nxtOSEK applications can be uploaded to a NXT. However, each nxtOSEK application has to be less than 64Kbytes)
    2. Using NXT BIOS (max. 224Kbytes single nxtOSEK application uploaded to Flash)
    3. Direct boot from RAM (max. 64Kbytes single nxtOSEK application uploaded to RAM, no Flash write)
  • Many examples (include NXTway-GS and NXT GT...)

Since 2.02, nxtOSEK has supported NXT "standard" firmware. It means that multiple nxtOSEK applications could be uploaded to the NXT which has the enhanced LEGO standard firmware. You can write NXT applications by using NXT-G, NXC/NBC... and nxtOSEK without replacing the firmware in the NXT!

nxtOSEK also supports application flash using NXT BIOS. NXT BIOS is a flash boot loader which does NOT touch the lock/security bits of AT91SAM7S. It means that your ANSI C/C++ application program can be uploaded into max. 224Kbytes Flash memory by using a safe way which other NXT firmwares use for their application programs upload.
In addition to nxtOSEK application flash, direct program boot from RAM is also supported for those who do not prefer to flash application.

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

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

CAUTION:

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 the use or the 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.

Features
Description
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
Firmware
John Hansen's enhanced NXT standard firmware
or
Custom (NXT BIOS or direct boot from RAM)
IDE (included?)
Eclipse CDT
Windows Windows XP SP2
Windows Vista (only with the enhanced NXT standard firmware + NeXTTool)

MAC OSX

No
Linux
Unofficially supported (still challengeable)
Events
Yes (OSEK supports Event synchronization)
Multithreading
Yes (OSEK supports Preemptive/Non-Preemptive multi Tasking, 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. LibUsb and LibNXT are needed.
I2C Support Yes (Ultrasonic Sensor, HiTechnic Acceleration/Color Sensor, LATTEBOX's NXTe...)
RCX Sensor support Yes
File System Yes.
Enhanced NXT standard 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
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

 

 

 

Home