Back to Zephyr

Zephyr's device emulators/simulators

doc/hardware/emulator/index.rst

4.4.03.7 KB
Original Source

.. _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 <native_sim_peripherals> 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 :zephyr:board:native targets <native_sim> it is also possible to keep the content as a file on the host filesystem.

External bus and bus connected peripheral emulators

  • :ref:Documentation <bus_emul>
  • 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 <nsim_per_flash_simu>.

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 <bus_emul>.
  • 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 <rtc_api_emul_dev>
  • Main Kconfig option: :kconfig:option:CONFIG_RTC_EMUL
  • DT binding: :dtcompatible:zephyr,rtc-emul

SPI emulator

  • Emulated SPI bus. See :ref:bus emulators <bus_emul>.
  • Main Kconfig option: :kconfig:option:CONFIG_SPI_EMUL
  • DT binding: :dtcompatible:zephyr,spi-emul-controller

MSPI emulator

  • Emulated MSPI bus. See :ref:bus emulators <bus_emul>.
  • Main Kconfig option: :kconfig:option:CONFIG_MSPI_EMUL
  • DT binding: :dtcompatible:zephyr,mspi-emul-controller

UART emulator

  • Emulated UART bus. See :ref:bus emulators <bus_emul>.
  • Main Kconfig option: :kconfig:option:CONFIG_UART_EMUL
  • DT binding: :dtcompatible:zephyr,uart-emul