Nut/OS
Features
Nut/OS is based on an intentionally simple RTOS kernel, which provides a minimum of services to run Nut/Net, the TCP/IP stack. It's features include:
- Coperative multithreading
- Deterministic interrupt response times
- Priority based event handling
- Periodic and one-shot timers
- Dynamic memory management
Main features of the TCP/IP stack are:
- Base protocols Ethernet, ARP, IP, ICMP, UDP, TCP and PPP
- User protocols DHCP, DNS, SNTP, SMTP, FTP, SYSLOG, HTTP and others
- Socket API
- Host, net and default routing
Nut/OS is a modular operating system. Instead of providing a fixed kernel block, all code is packed in libraries. Only those parts are linked to the final binary image, which are directly or indirectly referenced by the application. This guarantees the lowest possible footprint. Ernst Stippl regularly publishes related figures on his web site at www.es-business.com/ethernut/.
Standard C libraries like newlib or avr-libc are supported and allow to write highly portable applications. While direct hardware access and native interrupts are possible in application code, the system offers ready-to-use drivers for a large number of devices, including:
- Ethernet controllers
- UART devices with RS-232 handshake and RS-485 mode
- SPI, I2C and CAN busses
- MultiMedia and SD cards
- Hardware and software audio codecs
- Analog-to-digital converters
- Serial flash memory
- Realtime clocks
- Infrared remote controls
- Watchdogs and reset controllers
- Character displays
- GPIO and interrupt control
- Modem control
Note, that not all drivers may be available on all platforms. The following microcontrollers are actively supported:
- ATmega103, ATmega128, ATmega2561, AT90CAN128
- AT91SAM7S, AT91SAM7SE, AT91SAM7X
- AT91SAM9260, AT91SAM9XE
- Gameboy Advance
The system is highly configurable and may work on other hardware too. Support for AVR32 is currently under development and a version for the Freescale Coldfire may become available as well. In addition it is possible to run Nut/OS applications on Linux.
In order to hide hardware specific details from application code, an almost complete C stdio API is available, which provides:
- C99 integer types and optional floating point I/O
- File system support, including FAT
- Low level functions and streams on devices, TCP sockets and files
Nut/OS is perrmanently enhanced by an active community. The following features are currently not available, but planned for future releases or currently under development:
- Graphical user interface
- USB stack
- IPv6
- Encryption
- Wireless LAN
Additional Documents
New or recently updated
Nut/OS Software Manual
How to install and use Nut/OS.
SPI Bus Support
Technical details about SPI drivers.
ARM Exception Handling
Nut/OS doesn't provide any exception handling by default. This document shows
how to implement an exception handler within your application.
ARM GCC Inline Assembler Cookbook
The GNU C compiler for ARM RISC processors offers to embed assembly language
code into C programs. This cool feature may be used for manually optimizing
time critical parts of the software or to use specific processor instruction,
which are not available in the C language.
More documents
LED control
A beginner's guide to connecting external hardware.
Floating Point Support
The kernel won't need it, but your application may want to read or write
floating point numbers.
Using RS485 with Ethernut 2
Jumper settings, configuration and sample code.
Running Nut/OS on the AT91SAM9260
A step by step guide. Preliminary.
Running Nut/OS on the AT91SAM7X
Access your MultiMedia Card on the AT91SAM7X Evaluation Kit via FTP.
Running Nut/OS on the ATmega2561
Preliminary support for the ImageCraft Compiler running on Windows.
Using the Hardware Watchdog
How to implement a timer interrupt handler for Ethernut 3.
AT91 Timer Interrupts
How to implement a timer interrupt handler for Ethernut 3.
Using the PHAT File System
Making your MMC interface on Ethernut 3 work.
Using UDP Broadcasts
This paper presents a simple tool to discover all Ethernuts in a local network.
Partly outdated
Nut Programmable Logic
This tutorial teaches you to modify the CPLD on Ethernut 3.
MP3 Streaming
A step by step guide on how to build a stand-alone Embedded Internet Radio.
Setting up PPP
This paper provides helpful information about how to get started with
Ethernut's PPP.
SAM Internet Radio
Implementing an Internet Radio on the AT91SAM9260 and AT91SAM7X Evaluation
Kits.
Nut/OS Events
This paper explains Nut/OS event handling internals.
Nut/OS Threads, Events and Timers
Recommended reading for application programmers.
Nut/OS Memory Considerations
Includes a design proposal for bank switched RAM.
