annotate packages/devs/flash/synth/current/tests/flash1.c @ 2630:3e8e26d3183a

Merge flashv2 branch to trunk, with eCosCentric additions
author jlarmour
date Tue, 18 Nov 2008 01:19:29 +0000
parents efbe5b41658e
children 74dbf4c3f2e1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2630
3e8e26d3183a Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents: 2045
diff changeset
1 /* Hey, the copyright is useful for something! */
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
2
1938
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
3 static char copyright[] =
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
4 "//=========================================================================="
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
5 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
6 "// flash1.c"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
7 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
8 "// Test flash operations for the synth target synth flash driver"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
9 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
10 "//=========================================================================="
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
11 "//####ECOSGPLCOPYRIGHTBEGIN####"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
12 "// -------------------------------------------"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
13 "// This file is part of eCos, the Embedded Configurable Operating System."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
14 "// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
15 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
16 "// eCos is free software; you can redistribute it and/or modify it under"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
17 "// the terms of the GNU General Public License as published by the Free"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
18 "// Software Foundation; either version 2 or (at your option) any later version."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
19 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
20 "// eCos is distributed in the hope that it will be useful, but WITHOUT ANY"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
21 "// WARRANTY; without even the implied warranty of MERCHANTABILITY or"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
22 "// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
23 "// for more details."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
24 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
25 "// You should have received a copy of the GNU General Public License along"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
26 "// with eCos; if not, write to the Free Software Foundation, Inc.,"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
27 "// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
28 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
29 "// As a special exception, if other files instantiate templates or use macros"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
30 "// or inline functions from this file, or you compile this file and link it"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
31 "// with other works to produce a work based on this file, this file does not"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
32 "// by itself cause the resulting work to be covered by the GNU General Public"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
33 "// License. However the source code for this file must still be made available"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
34 "// in accordance with section (3) of the GNU General Public License."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
35 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
36 "// This exception does not invalidate any other reasons why a work based on"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
37 "// this file might be covered by the GNU General Public License."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
38 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
39 "// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
40 "// at http://sources.redhat.com/ecos/ecos-license/"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
41 "// -------------------------------------------"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
42 "//####ECOSGPLCOPYRIGHTEND####"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
43 "//=========================================================================="
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
44 "//#####DESCRIPTIONBEGIN####"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
45 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
46 "// Author(s): andrew.lunn@ascom.ch"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
47 "// Contributors: andrew.lunn"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
48 "// Date: 2000-10-31"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
49 "// Purpose: Test a flash driver"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
50 "// Description: Try out a number of flash operations and make sure"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
51 "// what is in the flash is what we expeect."
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
52 "// "
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
53 "//####DESCRIPTIONEND####"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
54 "//"
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
55 "//=========================================================================="
389f2895cea2 * tests/flash1.c: gcc 3.x does not like string continuing
asl
parents: 1388
diff changeset
56 ;
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
57
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
58 #include <cyg/io/flash.h>
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
59 #include <cyg/infra/testcase.h>
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
60 #include <cyg/infra/diag.h>
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
61
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
62 #include <string.h>
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
63
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
64 #ifndef CYGINT_ISO_STRING_STRFUNCS
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
65 # define NA_MSG "Need string functions for test"
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
66 #endif
2630
3e8e26d3183a Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents: 2045
diff changeset
67 #ifndef CYGSEM_IO_FLASH_LEGACY_API
3e8e26d3183a Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents: 2045
diff changeset
68 # define NA_MSG "Need legacy IO FLASH API for test"
3e8e26d3183a Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents: 2045
diff changeset
69 #endif
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
70
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
71 #ifdef NA_MSG
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
72 void cyg_user_start(void)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
73 {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
74 CYG_TEST_INIT();
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
75 CYG_TEST_NA( NA_MSG );
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
76 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
77 #else
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
78
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
79 //==========================================================================
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
80 // main
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
81
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
82 void cyg_user_start(void)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
83 {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
84 int ret;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
85 char data[1024];
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
86 void *flash_start, *flash_end;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
87 int block_size, blocks;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
88 char *prog_start;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
89 unsigned char * ptr;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
90
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
91 CYG_TEST_INIT();
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
92
1388
c52376a49516 tests/flash1.c: Update flash_init() call to reflect
asl
parents: 210
diff changeset
93 ret=flash_init((_printf *)diag_printf);
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
94
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
95 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_init");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
96
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
97 flash_dev_query(data);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
98 CYG_TEST_PASS_FAIL(!strncmp(data,"Linux Synthetic Flash",sizeof(data)),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
99 "flash_query");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
100
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
101 ret = flash_get_limits(NULL,&flash_start,&flash_end);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
102 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_get_limits");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
103
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
104 ret = flash_get_block_info(&block_size, &blocks);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
105 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_get_block_info");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
106
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
107 /* Erase the whole flash. Not recommended on real hardware since this
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
108 will probably erase the bootloader etc!!! */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
109 ret=flash_erase(flash_start,block_size * blocks,NULL);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
110 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_erase1");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
111
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
112 /* check that its actually been erased, and test the mmap area */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
113 for (ptr=flash_start,ret=0; ptr < (unsigned char *)flash_end; ptr++) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
114 if (*ptr != 0xff) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
115 ret++;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
116 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
117 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
118
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
119 CYG_TEST_PASS_FAIL((ret == 0),"flash empty check");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
120
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
121 ret = flash_program(flash_start,&copyright,sizeof(copyright),NULL);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
122 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_program1");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
123
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
124 /* Check the contents made it into the flash */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
125 CYG_TEST_PASS_FAIL(!strncmp(flash_start,copyright,sizeof(copyright)),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
126 "flash program contents");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
127
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
128 /* .. and check nothing else changed */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
129 for (ptr=(unsigned char *)flash_start+sizeof(copyright),ret=0;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
130 ptr < (unsigned char *)flash_end; ptr++) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
131 if (*ptr != 0xff) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
132 ret++;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
133 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
134 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
135
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
136 CYG_TEST_PASS_FAIL((ret == 0),"flash program overrun check");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
137
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
138 /* Program over a block boundary */
2045
efbe5b41658e * tests/flash1.c (cyg_user_start): Fix a compiler warning about
asl
parents: 1938
diff changeset
139 prog_start = (char *)flash_start + block_size - sizeof(copyright)/2;
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
140 ret = flash_program(prog_start,&copyright,sizeof(copyright),NULL);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
141 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_program2");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
142
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
143 /* Check the first version is still OK */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
144 CYG_TEST_PASS_FAIL(!strncmp(flash_start,copyright,sizeof(copyright)),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
145 "Original contents");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
146
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
147 CYG_TEST_PASS_FAIL(!strncmp(prog_start,copyright,sizeof(copyright)),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
148 "New program contents");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
149
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
150 /* Check the bit in between is still erased */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
151 for (ptr=(unsigned char *)flash_start+sizeof(copyright),ret=0;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
152 ptr < (unsigned char *)prog_start; ptr++) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
153 if (*ptr != 0xff) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
154 ret++;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
155 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
156 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
157 CYG_TEST_PASS_FAIL((ret == 0),"flash erase check1");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
158
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
159 /* Erase the second block and make sure the first is not erased */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
160 ret=flash_erase((void *)((unsigned)flash_start+block_size),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
161 block_size,NULL);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
162 CYG_TEST_PASS_FAIL((ret == FLASH_ERR_OK),"flash_erase2");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
163
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
164 /* Check the erase worked */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
165 for (ptr=(unsigned char *)flash_start+block_size,ret=0;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
166 ptr < (unsigned char *)flash_start+block_size*2; ptr++) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
167 if (*ptr != 0xff) {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
168 ret++;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
169 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
170 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
171
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
172 CYG_TEST_PASS_FAIL((ret == 0), "flash erase check2");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
173
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
174 /* Lastly check the first half of the copyright message is still there */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
175 CYG_TEST_PASS_FAIL(!strncmp(prog_start,copyright,sizeof(copyright)/2),
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
176 "Block 1 OK");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
177
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
178 #if 0
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
179 /* This test it fatal! Its not run by default!
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
180 Check the flash is read only, by trying to write to it. We expect
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
181 to get an exception */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
182
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
183 *(char *)flash_start = 'a';
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
184 #endif
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
185
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
186 CYG_TEST_PASS_FINISH("flash1");
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
187 }
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
188
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
189 #endif /* ifndef NA_MSG */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
190
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff changeset
191 /* EOF flash1.c */