Skip navigation
emusb-host-product-icon.svg

emUSB-Host Resource Usage

The embedded USB Host stack emUSB-Host has been specifically designed for resource-constrained platforms. On a typical system emUSB-Host requires 20 KByte of flash memory and 10 KByte of RAM.

emUSB-Host has been designed to fit many kinds of embedded design requirements. Several features can be excluded from a build to get a minimal system that can efficiently act as a USB host. In the following section the memory usage of typical 32-bit embedded systems is listed.

Please note that the values shown below are approximate values and features selected can influence the final size. The measurement were made using a project for an ARM Cortex-M4 CPU with size optimization and GCC 7.2.1.

ROM

The following table shows the approximate ROM requirement of emUSB-Host:

Core Components ROM
emUSB-Host core  6.7 KByte
external HUB support 3.2 KByte
Class Components ROM
HID class support 6.8 KByte
MSD class support 6.9 KByte + (size of file system)
CDC-ACM class support 5.4 KByte
FT232 component support 3.9 KByte
Printer class support 3.1 KByte
MTP class support 13.2 KByte
Vendor class support 3.9 KByte
LAN using ASIX 7.2 KBytes + embOS/IP
LAN using CDC-ECM 7.8 KBytes + embOS/IP
LAN using RNDIS 8.1 KBytes + embOS/IP
On-The-Go support 0.34 KByte + emUSB-Device
Drivers ROM
Driver EHCI 5 KByte
Driver OHCI 7.6 KByte
Driver Synopsys / STM32 5 KByte
Driver Renesas 5.3 KByte

RAM

The following table shows the average RAM requirement of emUSB-Host: *

Component RAM
emUSB-Host core incl. one driver 3.8 KByte + (ca. 3 KByte stack for the managing tasks)
For each connected generic HID device 3.0 KByte
For each connected CDC ACM device 4.0 KByte
For each connected MSD device 2.2 KByte
For each connected Mouse 4.6 KByte
For each connected Vendor device 3.5 KByte
For each connected external HUB 2.0 KByte
For each connected LAN (ASIX) device 13.5 KByte
For each connected LAN (CDC-ECM) device 11.1 KByte
For each connected LAN (RNDIS) device 18.1 KByte

* The actual RAM usage may vary depending on the USB host controller used, the memory architecture of the target, the USB devices connected to emUSB-Host and the type of operations performed with that devices.