.. _emulators: Zephyr's device emulators/simulators #################################### Overview ======== Zephyr includes in its codebase a set of device emulators/simulators. With this we refer to SW components which are built together with the embedded SW and present themselves as devices of a given class to the rest of the system. These device emulators/simulators can be built for any target which has sufficient RAM and flash, even if some may have extra functionality which is only available in some targets. .. note:: | Zephyr also includes and uses many other types of simulators/emulators, including CPU and platform simulators, radio simulators, and several build targets which allow running the embedded code in the development host. | Some of Zephyr communication controllers/drivers include also either loopback modes or loopback devices. | This page does not cover any of these. .. note:: Drivers which are specific to some platform, like for example the :ref:`native_sim specific drivers ` which emulate a peripheral class by connecting to host APIs are not covered by this page. Available Emulators =================== **ADC emulator** * A fake driver which pretends to be actual ADC, and can be used for testing higher-level API for ADC devices. * Main Kconfig option: :kconfig:option:`CONFIG_ADC_EMUL` * DT binding: :dtcompatible:`zephyr,adc-emul` **DMA emulator** * Emulated DMA controller * Main Kconfig option: :kconfig:option:`CONFIG_DMA_EMUL` * DT binding: :dtcompatible:`zephyr,dma-emul` **EEPROM emulator** * Emulate an EEPROM on a flash partition * Main Kconfig option: :kconfig:option:`CONFIG_EEPROM_EMULATOR` * DT binding: :dtcompatible:`zephyr,emu-eeprom` .. _emul_eeprom_simu_brief: **EEPROM simulator** * Emulate an EEPROM on RAM * Main Kconfig option: :kconfig:option:`CONFIG_EEPROM_SIMULATOR` * DT binding: :dtcompatible:`zephyr,sim-eeprom` * Note: For :ref:`native targets ` it is also possible to keep the content as a file on the host filesystem. **External bus and bus connected peripheral emulators** * :ref:`Documentation ` * Allow emulating external buses like I2C or SPI and peripherals connected to them. .. _emul_flash_simu_brief: **Flash simulator** * Emulate a flash on RAM * Main Kconfig option: :kconfig:option:`CONFIG_FLASH_SIMULATOR` * DT binding: :dtcompatible:`zephyr,sim-flash` * Note: For native targets it is also possible to keep the content as a file on the host filesystem. Check :ref:`the native_sim flash simulator section `. **GPIO emulator** * Emulated GPIO controllers which can be driven from SW * Main Kconfig option: :kconfig:option:`CONFIG_GPIO_EMUL` * DT binding: :dtcompatible:`zephyr,gpio-emul` **I2C emulator** * Emulated I2C bus. See :ref:`bus emulators `. * Main Kconfig option: :kconfig:option:`CONFIG_I2C_EMUL` * DT binding: :dtcompatible:`zephyr,i2c-emul-controller` **RTC emulator** * Emulated RTC peripheral. See :ref:`RTC emulated device section ` * Main Kconfig option: :kconfig:option:`CONFIG_RTC_EMUL` * DT binding: :dtcompatible:`zephyr,rtc-emul` **SPI emulator** * Emulated SPI bus. See :ref:`bus emulators `. * Main Kconfig option: :kconfig:option:`CONFIG_SPI_EMUL` * DT binding: :dtcompatible:`zephyr,spi-emul-controller` **UART emulator** * Emulated UART bus. See :ref:`bus emulators `. * Main Kconfig option: :kconfig:option:`CONFIG_UART_EMUL` * DT binding: :dtcompatible:`zephyr,uart-emul`