The hardware requirements are minimal – Any reasonable microcontroller with a serial interface, at least some RAM to hold the modbus frames should suffice.
- A UART which support and interrupts and has at least an receiver buffer full and transmit buffer empty interrupt.
- A timer capable of creating the t3.5 character timeout timer for Modbus RTU.
For the software part a simple event queue is necessary. The STR71X/FreeRTOS port uses FreeRTOS queues for this purpose to reduce the time spent in the Modbus task. Smaller microcontrollers will most likely come without an operating system. In that case a simple implementation with a global variable is possible (The Atmel AVR port uses such an implementation).
The actual memory requirements depend on the used modules. The first table shows the required memory with all supported functions compiled in. Values for the ARM where obtained using the GNUARM compiler collection 3.4.4 with -O1 in ARM mode. The AVR values where obtained using the WinAVR compiler collection 3.4.5 with -Os.