# Requirements (/introduction/requirements)



Basically, every modern controller which is able to drive a display is suitable to
run LVGL.  The minimal requirements are:

* **Processor**: 16, 32 or 64 bit microcontroller or processor (> 16 MHz clock speed is recommended)
* **Flash/ROM**: > 64 kB for the very essential components (> 180 kB is recommended)
* **RAM**:

  * Static RAM usage: \~2 kB depending on the used features and Widget types
  * Stack: > 2kB (> 8 kB recommended)
  * Dynamic data (heap): > 2 KB (> 48 kB is recommended if using many GUI Widgets).
    Set by <ApiLink name="LV_MEM_SIZE" /> in `lv_conf.h`.
  * Display buffer:  > &#x2A;"Horizontal resolution"&#x2A; pixels (> 10 × &#x2A;"Horizontal resolution"* is recommended)
  * One frame buffer in the MCU or in an external display controller
* **Operating system**: Bare metal or any RTOS (FreeRTOS, Zephyr, NuttX, etc.) or desktop OS (e.g. Linux)
* **Frameworks**: CMake, Make, Managed builds (e.g. Eclipse), Arduino, Chip vendor IDEs, also easy to integrate into any build system
* **GPU**: LVGL has its own software rendering engine, but GPUs in MCUs can be enabled in `lv_conf.h`. OpenGL ES is needed only to render [glTF](/libs/gltf)
* C99 or newer compiler
* Basic C (or C++) knowledge:
  * [Pointers](https://www.tutorialspoint.com/cprogramming/c_pointers.htm).
  * [Structs](https://www.tutorialspoint.com/cprogramming/c_structures.htm).
  * [Callbacks](https://www.geeksforgeeks.org/c/callbacks-in-c/).

<Callout type="info">
  *Memory usage may vary depending on architecture, compiler and build options.*
</Callout>
