LPCOpen Platform
v1.03
LPCOpen Platform for NXP LPC Microcontrollers
Main Page
Modules
Data Structures
Files
Related Pages
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
memtest.c
Go to the documentation of this file.
1
/*
2
* @brief Memory example
3
* This example shows how to do a (more complex) memory test for
4
* verifying DRAM operation. The test performs walking 0 and 1,
5
* address and inverse address, and pattern tests on DRAM.
6
*
7
* @note
8
* Copyright(C) NXP Semiconductors, 2012
9
* All rights reserved.
10
*
11
* @par
12
* Software that is described herein is for illustrative purposes only
13
* which provides customers with programming information regarding the
14
* LPC products. This software is supplied "AS IS" without any warranties of
15
* any kind, and NXP Semiconductors and its licensor disclaim any and
16
* all warranties, express or implied, including all implied warranties of
17
* merchantability, fitness for a particular purpose and non-infringement of
18
* intellectual property rights. NXP Semiconductors assumes no responsibility
19
* or liability for the use of the software, conveys no license or rights under any
20
* patent, copyright, mask work right, or any other intellectual property rights in
21
* or to any products. NXP Semiconductors reserves the right to make changes
22
* in the software without notification. NXP Semiconductors also makes no
23
* representation or warranty that such application will be suitable for the
24
* specified use without further testing or modification.
25
*
26
* @par
27
* Permission to use, copy, modify, and distribute this software and its
28
* documentation is hereby granted, under NXP Semiconductors' and its
29
* licensor's relevant copyrights in the software, without fee, provided that it
30
* is used in conjunction with NXP Semiconductors microcontrollers. This
31
* copyright, permission, and disclaimer notice must appear in all copies of
32
* this code.
33
*/
34
35
#include "board.h"
36
#include "
mem_tests.h
"
37
#include <stdio.h>
38
67
/*****************************************************************************
68
* Private types/enumerations/variables
69
****************************************************************************/
70
71
#define DRAM_BASE_ADDRESS (uint32_t *) 0x28000000
72
73
#if defined(BOARD_HITEX_EVA_18504350)
74
/* 8MB of Hitex board */
75
#define DRAM_SIZE (8 * 1024 * 1024)
76
#elif defined(BOARD_KEIL_MCB_18574357)
77
#define DRAM_SIZE (8 * 1024 * 1024)
78
#endif
79
80
/*****************************************************************************
81
* Public types/enumerations/variables
82
****************************************************************************/
83
84
/*****************************************************************************
85
* Private functions
86
****************************************************************************/
87
88
/*****************************************************************************
89
* Public functions
90
****************************************************************************/
91
96
int
main
(
void
)
97
{
98
MEM_TEST_SETUP_T
memSetup;
99
100
Board_Init
();
101
102
/* Walking 0 test */
103
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
104
memSetup.
bytes
=
DRAM_SIZE
;
105
if
(
mem_test_walking0
(&memSetup)) {
106
DEBUGSTR
(
"Walking 0 memory test passed\r\n"
);
107
}
108
else
{
109
DEBUGOUT
(
"Walking 0 memory test failed at address %p\r\n"
, memSetup.
fail_addr
);
110
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
111
}
112
113
/* Walking 1 test */
114
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
115
memSetup.
bytes
=
DRAM_SIZE
;
116
if
(
mem_test_walking1
(&memSetup)) {
117
DEBUGSTR
(
"Walking 1 memory test passed\r\n"
);
118
}
119
else
{
120
DEBUGOUT
(
"Walking 1 memory test failed at address %p\r\n"
, memSetup.
fail_addr
);
121
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
122
}
123
124
/* Address test */
125
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
126
memSetup.
bytes
=
DRAM_SIZE
;
127
if
(
mem_test_address
(&memSetup)) {
128
DEBUGSTR
(
"Address test passed\r\n"
);
129
}
130
else
{
131
DEBUGOUT
(
"Address test failed at address %p\r\n"
, memSetup.
fail_addr
);
132
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
133
}
134
135
/* Inverse address test */
136
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
137
memSetup.
bytes
=
DRAM_SIZE
;
138
if
(
mem_test_invaddress
(&memSetup)) {
139
DEBUGSTR
(
"Inverse address test passed\r\n"
);
140
}
141
else
{
142
DEBUGOUT
(
"Inverse address test failed at address %p\r\n"
, memSetup.
fail_addr
);
143
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
144
}
145
146
/* Pattern test */
147
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
148
memSetup.
bytes
=
DRAM_SIZE
;
149
if
(
mem_test_pattern
(&memSetup)) {
150
DEBUGSTR
(
"Pattern (0x55/0xAA) test passed\r\n"
);
151
}
152
else
{
153
DEBUGOUT
(
"Pattern (0x55/0xAA) test failed at address %p\r\n"
, memSetup.
fail_addr
);
154
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
155
}
156
157
/* Seeded pattern test */
158
memSetup.
start_addr
=
DRAM_BASE_ADDRESS
;
159
memSetup.
bytes
=
DRAM_SIZE
;
160
if
(
mem_test_pattern_seed
(&memSetup, 0x12345678, 0x50005)) {
161
DEBUGSTR
(
"Seeded pattern test passed\r\n"
);
162
}
163
else
{
164
DEBUGOUT
(
"Seeded pattern test failed at address %p\r\n"
, memSetup.
fail_addr
);
165
DEBUGOUT
(
" Expected %08x, actual %08x\r\n"
, memSetup.
ex_val
, memSetup.
is_val
);
166
}
167
168
/* Never returns, for warning only */
169
return
0;
170
}
171
applications
lpc18xx_43xx
examples
periph
periph_memtest
memtest.c
Generated on Fri May 10 2013 10:42:07 for LPCOpen Platform by
1.8.2