.. zephyr:code-sample:: edac :name: EDAC shell :relevant-api: edac Test error detection and correction (EDAC) using shell commands. Overview ******** This sample demonstrates the :ref:`EDAC driver API ` in a simple EDAC shell sample. Building and Running ******************** This sample can be found under :zephyr_file:`samples/subsys/edac` in the Zephyr tree. The sample can be built as follows for the :ref:`intel_ehl_crb` board: .. zephyr-app-commands:: :zephyr-app: samples/subsys/edac :host-os: unix :board: intel_ehl_crb :goals: build :compact: The Zephyr image that's created can be run on the :ref:`intel_ehl_crb` board as per the instructions in the board documentation. Check out the :ref:`intel_ehl_crb` for details. Sample output ************* Getting help ============ After the application has started help can be read with the following command: .. code-block:: console uart:~$ edac -h edac - EDAC information Subcommands: info :Show EDAC information edac info inject :Inject ECC error commands edac inject Help for subcommand info can be read with: .. code-block:: console uart:~$ edac info -h info - Show EDAC information edac info Subcommands: ecc_error :ECC Error Show / Clear commands parity_error :Parity Error Show / Clear commands Injection help can be received with: .. code-block:: console uart:~$ edac inject -h inject - Inject ECC error commands edac inject Subcommands: addr :Get / Set physical address mask :Get / Set address mask trigger :Trigger injection error_type :Get / Set injection error type disable_nmi :Disable NMI enable_nmi :Enable NMI test_default :Test default injection parameters Testing Error Injection ======================= Set Error Injection parameters with: .. code-block:: console uart:~$ edac inject addr 0x1000 Set injection address base to: 0x1000 uart:~$ edac inject mask 0x7fffffffc0 Set injection address mask to 7fffffffc0 uart:~$ edac inject error_type correctable Set injection error type: correctable Trigger injection with: .. code-block:: console uart:~$ edac inject trigger Triggering injection Now Read / Write to the injection address to trigger Error Injection with following devmem commands: .. code-block:: console uart:~$ devmem 0x1000 32 0xabcd Mapped 0x1000 to 0x2ffcf000 Using data width 32 Writing value 0xabcd uart:~$ devmem 0x1000 Mapped 0x1000 to 0x2ffce000 Using data width 32 Read value 0xabcd We should get the following message on screen indicating an IBECC event: .. code-block:: none Got notification about IBECC event