96 lines
3.5 KiB
ReStructuredText
96 lines
3.5 KiB
ReStructuredText
.. _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 :ref:`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`
|
|
|
|
**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`
|