README.rst
1.. zephyr:code-sample:: edac
2 :name: EDAC shell
3 :relevant-api: edac
4
5 Test error detection and correction (EDAC) using shell commands.
6
7Overview
8********
9
10This sample demonstrates the :ref:`EDAC driver API <edac_api>` in a simple EDAC shell sample.
11
12Building and Running
13********************
14
15This sample can be found under :zephyr_file:`samples/subsys/edac` in the
16Zephyr tree.
17The sample can be built as follows for the :ref:`intel_ehl_crb` board:
18
19.. zephyr-app-commands::
20 :zephyr-app: samples/subsys/edac
21 :host-os: unix
22 :board: intel_ehl_crb
23 :goals: build
24 :compact:
25
26The Zephyr image that's created can be run on the :ref:`intel_ehl_crb` board
27as per the instructions in the board documentation. Check out the
28:ref:`intel_ehl_crb` for details.
29
30Sample output
31*************
32
33Getting help
34============
35
36After the application has started help can be read with the following
37command:
38
39.. code-block:: console
40
41 uart:~$ edac -h
42 edac - EDAC information
43 Subcommands:
44 info :Show EDAC information
45 edac info <subcommands>
46 inject :Inject ECC error commands
47 edac inject <subcommands>
48
49Help for subcommand info can be read with:
50
51.. code-block:: console
52
53 uart:~$ edac info -h
54 info - Show EDAC information
55 edac info <subcommands>
56 Subcommands:
57 ecc_error :ECC Error Show / Clear commands
58 parity_error :Parity Error Show / Clear commands
59
60Injection help can be received with:
61
62.. code-block:: console
63
64 uart:~$ edac inject -h
65 inject - Inject ECC error commands
66 edac inject <subcommands>
67 Subcommands:
68 addr :Get / Set physical address
69 mask :Get / Set address mask
70 trigger :Trigger injection
71 error_type :Get / Set injection error type
72 disable_nmi :Disable NMI
73 enable_nmi :Enable NMI
74 test_default :Test default injection parameters
75
76Testing Error Injection
77=======================
78
79Set Error Injection parameters with:
80
81.. code-block:: console
82
83 uart:~$ edac inject addr 0x1000
84 Set injection address base to: 0x1000
85
86 uart:~$ edac inject mask 0x7fffffffc0
87 Set injection address mask to 7fffffffc0
88
89 uart:~$ edac inject error_type correctable
90 Set injection error type: correctable
91
92Trigger injection with:
93
94.. code-block:: console
95
96 uart:~$ edac inject trigger
97 Triggering injection
98
99Now Read / Write to the injection address to trigger Error Injection with
100following devmem commands:
101
102.. code-block:: console
103
104 uart:~$ devmem 0x1000 32 0xabcd
105 Mapped 0x1000 to 0x2ffcf000
106
107 Using data width 32
108 Writing value 0xabcd
109
110 uart:~$ devmem 0x1000
111 Mapped 0x1000 to 0x2ffce000
112
113 Using data width 32
114 Read value 0xabcd
115
116We should get the following message on screen indicating an IBECC event:
117
118.. code-block:: none
119
120 Got notification about IBECC event
121