Mercurial > ecos
annotate packages/devs/flash/synth/current/tests/flash1.c @ 2729:74dbf4c3f2e1 after-copyright-change-20090129
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
| author | jlarmour |
|---|---|
| date | Thu, 29 Jan 2009 17:47:46 +0000 |
| parents | 3e8e26d3183a |
| children | 957d0458e043 |
| 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 "//==========================================================================" |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
11 "// ####ECOSGPLCOPYRIGHTBEGIN#### " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
12 "// ------------------------------------------- " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
13 "// This file is part of eCos, the Embedded Configurable Operating System. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
14 "// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
15 "// " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
16 "// eCos is free software; you can redistribute it and/or modify it under " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
17 "// the terms of the GNU General Public License as published by the Free " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
18 "// Software Foundation; either version 2 or (at your option) any later " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
19 "// version. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
20 "// " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
21 "// eCos is distributed in the hope that it will be useful, but WITHOUT " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
22 "// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
23 "// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
24 "// for more details. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
25 "// " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
26 "// You should have received a copy of the GNU General Public License " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
27 "// along with eCos; if not, write to the Free Software Foundation, Inc., " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
28 "// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
29 "// " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
30 "// As a special exception, if other files instantiate templates or use " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
31 "// macros or inline functions from this file, or you compile this file " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
32 "// and link it with other works to produce a work based on this file, " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
33 "// this file does not by itself cause the resulting work to be covered by " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
34 "// the GNU General Public License. However the source code for this file " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
35 "// must still be made available in accordance with section (3) of the GNU " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
36 "// General Public License v2. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
37 "// " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
38 "// This exception does not invalidate any other reasons why a work based " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
39 "// on this file might be covered by the GNU General Public License. " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
40 "// ------------------------------------------- " |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2630
diff
changeset
|
41 "// ####ECOSGPLCOPYRIGHTEND#### |
|
1938
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
42 "//==========================================================================" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
43 "//#####DESCRIPTIONBEGIN####" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
44 "//" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
45 "// Author(s): andrew.lunn@ascom.ch" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
46 "// Contributors: andrew.lunn" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
47 "// Date: 2000-10-31" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
48 "// Purpose: Test a flash driver" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
49 "// 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
|
50 "// 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
|
51 "// " |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
52 "//####DESCRIPTIONEND####" |
|
389f2895cea2
* tests/flash1.c: gcc 3.x does not like string continuing
asl
parents:
1388
diff
changeset
|
53 "//" |
|
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 ; |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
56 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
57 #include <cyg/io/flash.h> |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
58 #include <cyg/infra/testcase.h> |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
59 #include <cyg/infra/diag.h> |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
60 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
61 #include <string.h> |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
62 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
63 #ifndef CYGINT_ISO_STRING_STRFUNCS |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
64 # 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
|
65 #endif |
|
2630
3e8e26d3183a
Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents:
2045
diff
changeset
|
66 #ifndef CYGSEM_IO_FLASH_LEGACY_API |
|
3e8e26d3183a
Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents:
2045
diff
changeset
|
67 # define NA_MSG "Need legacy IO FLASH API for test" |
|
3e8e26d3183a
Merge flashv2 branch to trunk, with eCosCentric additions
jlarmour
parents:
2045
diff
changeset
|
68 #endif |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
69 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
70 #ifdef NA_MSG |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
71 void cyg_user_start(void) |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
72 { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
73 CYG_TEST_INIT(); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
74 CYG_TEST_NA( NA_MSG ); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
75 } |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
76 #else |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
77 |
|
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 // main |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
80 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
81 void cyg_user_start(void) |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
82 { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
83 int ret; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
84 char data[1024]; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
85 void *flash_start, *flash_end; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
86 int block_size, blocks; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
87 char *prog_start; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
88 unsigned char * ptr; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
89 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
90 CYG_TEST_INIT(); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
91 |
| 1388 | 92 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
|
93 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
94 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
|
95 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
96 flash_dev_query(data); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
97 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
|
98 "flash_query"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
99 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
100 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
|
101 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
|
102 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
103 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
|
104 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
|
105 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
106 /* 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
|
107 will probably erase the bootloader etc!!! */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
108 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
|
109 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
|
110 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
111 /* 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
|
112 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
|
113 if (*ptr != 0xff) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
114 ret++; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
115 } |
|
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 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
|
119 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
120 ret = flash_program(flash_start,©right,sizeof(copyright),NULL); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
121 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
|
122 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
123 /* 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
|
124 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
|
125 "flash program contents"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
126 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
127 /* .. and check nothing else changed */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
128 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
|
129 ptr < (unsigned char *)flash_end; ptr++) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
130 if (*ptr != 0xff) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
131 ret++; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
132 } |
|
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 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
|
136 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
137 /* Program over a block boundary */ |
|
2045
efbe5b41658e
* tests/flash1.c (cyg_user_start): Fix a compiler warning about
asl
parents:
1938
diff
changeset
|
138 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
|
139 ret = flash_program(prog_start,©right,sizeof(copyright),NULL); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
140 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
|
141 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
142 /* 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
|
143 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
|
144 "Original contents"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
145 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
146 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
|
147 "New program contents"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
148 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
149 /* 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
|
150 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
|
151 ptr < (unsigned char *)prog_start; ptr++) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
152 if (*ptr != 0xff) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
153 ret++; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
154 } |
|
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 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
|
157 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
158 /* 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
|
159 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
|
160 block_size,NULL); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
161 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
|
162 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
163 /* Check the erase worked */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
164 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
|
165 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
|
166 if (*ptr != 0xff) { |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
167 ret++; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
168 } |
|
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 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
|
172 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
173 /* 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
|
174 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
|
175 "Block 1 OK"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
176 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
177 #if 0 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
178 /* 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
|
179 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
|
180 to get an exception */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
181 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
182 *(char *)flash_start = 'a'; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
183 #endif |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
184 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
185 CYG_TEST_PASS_FINISH("flash1"); |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
186 } |
|
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 #endif /* ifndef NA_MSG */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
189 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
diff
changeset
|
190 /* EOF flash1.c */ |
