Nut/OS Requirements
CPU
Nut/OS is designed to run on Atmel's AVR CPUs ATmega103 and ATmega128. It may run on other AVRs, but this has not been tested. At least the thread switching and timer handling need to be ported.
CPU frequencies ranging from 3.6864 to 14.7456 MHz have been tested. Note, that selectable baudrates depend on this frequency.
By default, Nut/OS requires the extra 32.768 kHz clock crystal. It is used the automatically determine the CPU clock for baudrate calculation and timer handling. It may be used in later versions for timer wakeup. Anyway, it is possible to run Nut/OS without this crystal, but you need you rebuild the libraries after setting NUT_CPU_FREQ to the CPU clock frequency in the Makedefs file.
Memory
Because Nut/OS is highly dynamic, there's no simple calculation to determine ROM and RAM requirements. The following table lists required memory sizes of two application samples, which are part of the Nut/OS distribution.
Module | Simple | HTTP Server | ||
ROM | RAM | ROM | RAM | |
Application | 2 | 0 | 1522 | 582 |
Init | 472 | 3 | 472 | 3 |
Timer | 1342 | 15 | 1342 | 15 |
0 | 0 | 2770 | 64 | |
Event | 0 | 0 | 562 | 0 |
Thread | 960 | 6 | 960 | 6 |
Heap | 540 | 4 | 540 | 4 |
Filesys | 0 | 0 | 272 | 0 |
Device | 0 | 0 | 460 | 2 |
UART | 0 | 0 | 1536 | 560 |
IRQ | 2670 | 272 | 2670 | 272 |
HTTP | 0 | 0 | 3064 | 1047 |
DHCP | 0 | 0 | 2026 | 18 |
SoStream | 0 | 0 | 294 | 0 |
TCP | 0 | 0 | 7226 | 23 |
UDP | 0 | 0 | 980 | 2 |
ICMP | 0 | 0 | 384 | 0 |
IP | 0 | 0 | 2124 | 16 |
ARP | 0 | 0 | 1320 | 8 |
Ethernet | 0 | 0 | 3896 | 115 |
C Runtime | 202 | 0 | 3402 | 49 |
Files | 0 | 0 | 23716 | 109 |
Total | 6186 | 310 | 61538 | 2895 |
The listed RAM requirements show static RAM only. This RAM must fit in the lower 4k on-chip RAM. The remaining internal and all external RAM is exclusively occupied by the heap management for dynamic allocation. How much heap space will be allocated by Nut/OS during initialization depends on the library parts used by the application. After the HTTP Server has started all thread, there are about 20k RAM left for handling browser requests, while the Simple application has nearly 30k heap space available.