Mercurial > ecos
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 |
| 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 | 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,©right,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,©right,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 */ |
