]> git.sur5r.net Git - freertos/blob
74e131d5b17e69fa935887c6ba15c00f6a55d7c4
[freertos] /
1 /******************************************************************************
2 *
3 *
4 * (c) Copyright 2009 Xilinx, Inc. All rights reserved.
5 *
6 * This file contains confidential and proprietary information of Xilinx, Inc.
7 * and is protected under U.S. and international copyright and other
8 * intellectual property laws.
9 *
10 * DISCLAIMER
11 * This disclaimer is not a license and does not grant any rights to the
12 * materials distributed herewith. Except as otherwise provided in a valid
13 * license issued to you by Xilinx, and to the maximum extent permitted by
14 * applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
15 * FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
16 * IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
17 * MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
18 * and (2) Xilinx shall not be liable (whether in contract or tort, including
19 * negligence, or under any other theory of liability) for any loss or damage
20 * of any kind or nature related to, arising under or in connection with these
21 * materials, including for any direct, or any indirect, special, incidental,
22 * or consequential loss or damage (including loss of data, profits, goodwill,
23 * or any type of loss or damage suffered as a result of any action brought by
24 * a third party) even if such damage or loss was reasonably foreseeable or
25 * Xilinx had been advised of the possibility of the same.
26 *
27 * CRITICAL APPLICATIONS
28 * Xilinx products are not designed or intended to be fail-safe, or for use in
29 * any application requiring fail-safe performance, such as life-support or
30 * safety devices or systems, Class III medical devices, nuclear facilities,
31 * applications related to the deployment of airbags, or any other applications
32 * that could lead to death, personal injury, or severe property or
33 * environmental damage (individually and collectively, "Critical
34 * Applications"). Customer assumes the sole risk and liability of any use of
35 * Xilinx products in Critical Applications, subject only to applicable laws
36 * and regulations governing limitations on product liability.
37 *
38 * THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE
39 * AT ALL TIMES.
40 *
41 *
42 ******************************************************************************/
43 /*****************************************************************************/
44 /**
45 *
46 * @file xil_testmem.h
47 *
48 * This file contains utility functions to test memory.
49 *
50 * <b>Memory test description</b>
51 *
52 * A subset of the memory tests can be selected or all of the tests can be run
53 * in order. If there is an error detected by a subtest, the test stops and the
54 * failure code is returned. Further tests are not run even if all of the tests
55 * are selected.
56 *
57 * Subtest descriptions:
58 * <pre>
59 * XIL_TESTMEM_ALLMEMTESTS:
60 *       Runs all of the following tests
61 *
62 * XIL_TESTMEM_INCREMENT:
63 *       Incrementing Value Test.
64 *       This test starts at 'XIL_TESTMEM_INIT_VALUE' and uses the
65 *       incrementing value as the test value for memory.
66 *
67 * XIL_TESTMEM_WALKONES:
68 *       Walking Ones Test.
69 *       This test uses a walking '1' as the test value for memory.
70 *       location 1 = 0x00000001
71 *       location 2 = 0x00000002
72 *       ...
73 *
74 * XIL_TESTMEM_WALKZEROS:
75 *       Walking Zero's Test.
76 *       This test uses the inverse value of the walking ones test
77 *       as the test value for memory.
78 *       location 1 = 0xFFFFFFFE
79 *       location 2 = 0xFFFFFFFD
80 *       ...
81 *
82 * XIL_TESTMEM_INVERSEADDR:
83 *       Inverse Address Test.
84 *       This test uses the inverse of the address of the location under test
85 *       as the test value for memory.
86 *
87 * XIL_TESTMEM_FIXEDPATTERN:
88 *       Fixed Pattern Test.
89 *       This test uses the provided patters as the test value for memory.
90 *       If zero is provided as the pattern the test uses '0xDEADBEEF".
91 * </pre>
92 *
93 * <i>WARNING</i>
94 *
95 * The tests are <b>DESTRUCTIVE</b>. Run before any initialized memory spaces
96 * have been set up.
97 *
98 * The address provided to the memory tests is not checked for
99 * validity except for the NULL case. It is possible to provide a code-space
100 * pointer for this test to start with and ultimately destroy executable code
101 * causing random failures.
102 *
103 * @note
104 *
105 * Used for spaces where the address range of the region is smaller than
106 * the data width. If the memory range is greater than 2 ** width,
107 * the patterns used in XIL_TESTMEM_WALKONES and XIL_TESTMEM_WALKZEROS will
108 * repeat on a boundry of a power of two making it more difficult to detect
109 * addressing errors. The XIL_TESTMEM_INCREMENT and XIL_TESTMEM_INVERSEADDR
110 * tests suffer the same problem. Ideally, if large blocks of memory are to be
111 * tested, break them up into smaller regions of memory to allow the test
112 * patterns used not to repeat over the region tested.
113 *
114 * <pre>
115 * MODIFICATION HISTORY:
116 *
117 * Ver    Who    Date    Changes
118 * ----- ---- -------- -----------------------------------------------
119 * 1.00a hbm  08/25/09 First release
120 * </pre>
121 *
122 ******************************************************************************/
123
124 #ifndef XIL_TESTMEM_H   /* prevent circular inclusions */
125 #define XIL_TESTMEM_H   /* by using protection macros */
126
127 #ifdef __cplusplus
128 extern "C" {
129 #endif
130
131 /***************************** Include Files *********************************/
132 #include "xil_types.h"
133
134 /************************** Constant Definitions *****************************/
135
136
137 /**************************** Type Definitions *******************************/
138
139 /* xutil_memtest defines */
140
141 #define XIL_TESTMEM_INIT_VALUE  1
142
143 /** @name Memory subtests
144  * @{
145  */
146 /**
147  * See the detailed description of the subtests in the file description.
148  */
149 #define XIL_TESTMEM_ALLMEMTESTS     0
150 #define XIL_TESTMEM_INCREMENT       1
151 #define XIL_TESTMEM_WALKONES        2
152 #define XIL_TESTMEM_WALKZEROS       3
153 #define XIL_TESTMEM_INVERSEADDR     4
154 #define XIL_TESTMEM_FIXEDPATTERN    5
155 #define XIL_TESTMEM_MAXTEST         XIL_TESTMEM_FIXEDPATTERN
156 /* @} */
157
158 /***************** Macros (Inline Functions) Definitions *********************/
159
160
161 /************************** Function Prototypes ******************************/
162
163 /* xutil_testmem prototypes */
164
165 extern int Xil_TestMem32(u32 *Addr, u32 Words, u32 Pattern, u8 Subtest);
166 extern int Xil_TestMem16(u16 *Addr, u32 Words, u16 Pattern, u8 Subtest);
167 extern int Xil_TestMem8(u8 *Addr, u32 Words, u8 Pattern, u8 Subtest);
168
169 #ifdef __cplusplus
170 }
171 #endif
172
173 #endif /* end of protection macro */