jj pit

MRAM debug on TWR-K60N512 with Lepton/Tauon a POSIX compliant RTOS

Discussion created by jj pit on Feb 15, 2012

Lepton/Tauon is an open source POSIX "compliant" Operating System for
deeply embedded devices. It tries to bring PSE-53 POSIX capabilities
to embedded world (including multiprocess, filesystems, messages
queues, ... BUT currently no asynchronous I/O support aka aio_xxx).
The system implementation follows an UNIX approach.

The aim of this project, it's not to develop another operating system
like GNU/Linux, but an human understandable operating system that provides
more services than a realtime kernel, while keeping a reasonable footprint
for deeply embedded system.

We hope Lepton/Tauon will be able to help anybody to develop their personal,
school or professional projects easily and quickly.

We are ready to accommodate contributions to improve Lepton/Tauon and support
new features.

Supported platforms:

  • ARM7: AT91M55800A
  • ARM9: AT91SAM9261-EK
  • ARM9: AT91SAM9260-EK
  • ARM Cortex-M4: TWR-K60N512
  • PC (32bits simulation for GNU/Linux and MS Windows)

Initial version of Lepton/Tauon is

Lepton/Tauon provides more than 150 POSIX functions over a real-time
operating system that can be:

  • Proprietary embOS from Segger (original Lepton)
  • Open source eCos community (Tauon)

Lepton/Tauon offers the ability to use other real-time operating system (closed
or open source) like FreeRTOS by using a simple abstraction layer.

Lepton/Tauon uses some parts of underlying real-time operating system:

  • board startup (HAL)
  • basic synchronization functions (semaphore, mutex, ...)
  • task sheduler
  • ISR mechanisms
  • some libraries (math.h, stdlib.h, ...)


In addition Lepton/Tauon offers:


  • more than 150 functions from POSIX standard (IEEE Std 1003.1a), realtime extension (1003.1b) and threads extension (1003.1c)
  • simple model for device drivers
  • UNIX stream to improve "reuse"
  • support lwip stack (1.3.2) and uip stack (1.0) (Lepton only)
  • support rootfs, ufs, fat16 (msdos and vfat) filesystem
  • VFS layer to brings new and custom file systems
  • USB devices stack and profils CDC-ACM, MSD and Ethernet-ECM (tested only on AT91SAM9261-EK)
  • NanoX and FLTK support (FLNX exactly)
  • Mongoose WEB server, FTP server (from trollFTPD) and mini shell
  • simulation process under GNU/Linux (Tauon) and Windows (Lepton)


Lepton/Tauon doesn't have an ELF loader, therefore all device drivers, user
and system binaries are configured with an XML file.

There is a basic python installation script that configures Lepton/Tauon for 3 targets :


  • TWR-K60N512
  • AT91SAM9261-EK
  • simulation

For example, on TWR-K60N512 sample application contains :


  • base system (kernel, filesystem, minimal shell, ..)
  • lwip stack
  • telnetd utility
  • some device drivers (uart, rtc, ethernet, sdcard, i2c, ..)

There are various RAM usage for this configuration :


  • telnetd not started : less than 25 Kio RAM available
  • telnetd started without connection : less than 18 Kio
  • connect on telnet : more than 10 Kio

The FLASH usage is under 390 Kio.

To build your custom application, it is obviously possible to remove
shell, telnetd, .. to save RAM and FLASH space.

If you have a TWR-MEM board, you can DEBUG Lepton/Tauon in MRAM and test it very quickly.

There are a lot of things to do :


  • a pretty documentation
  • clean source
  • put syscall API out of kernel source tree
  • ELF loader support
  • MPU usage on Cortex-M target
  • multiple executions of simulation
  • more drivers for TWR-K60N512
  • bug fixs
  • more targets (SAM4S, STM32, LPC43x, ..)
  • etc..

All comments/corrections/improvements/contributions are welcomed.

Take a look at http://code.google.com/p/lepton/.

Happy coding!