@@ -49,14 +49,14 @@ void loop() {
49
49
50
50
// Select a random start address in region 0 after the bootloader and compute block start offset
51
51
int address = random (0x00004000 , 0x00010000 - WRITE_SIZE);
52
- int offset = address & ~(root.get_erase_size (address ) - 1 );
52
+ int offset = address & ~(root.get_program_size ( ) - 1 );
53
53
54
54
// Start Test
55
55
erase_write_read_compare (pattern, offset, repeat);
56
56
57
57
// Select a random start address in region 1 after the sketch and compute block start offset
58
58
address = random (0x000A0000 , root.size () - WRITE_SIZE);
59
- offset = address & ~(root.get_erase_size (address ) - 1 );
59
+ offset = address & ~(root.get_program_size ( ) - 1 );
60
60
61
61
// Start Test
62
62
erase_write_read_compare (pattern, offset, repeat);
@@ -72,13 +72,23 @@ void erase_write_read_compare(byte pattern, int offset, int repeat) {
72
72
73
73
memset (&w_buffer[0 ], pattern, repeat);
74
74
75
+ // Double check we are using only one memory region for each test run
76
+ if (root.get_erase_size (offset) != root.get_erase_size (offset + repeat )) {
77
+ Serial.println (" Error: different secotr size not handled" );
78
+ return ;
79
+ }
80
+ // Start offset is aligned to program size but erase command needs to be
81
+ // aligned to erase block size
82
+ int erase_start = offset & ~(root.get_erase_size (offset) - 1 );
83
+ // Since we are using only one memory reagion erase size is always the same
84
+ int erase_size = root.get_erase_size (erase_start);
75
85
// Check if we need to delete more consecutive blocks
76
86
// Should happen only in region 0 due to write buffer size
77
- int erase_size = root.get_erase_size (offset);
78
- while (erase_size < repeat) {
79
- erase_size += erase_size;
87
+ int erased = 0 ;
88
+ while (erase_start + erased < offset + repeat ) {
89
+ root.erase (erase_start + erased, erase_size);
90
+ erased += erase_size;
80
91
}
81
- root.erase (offset, erase_size);
82
92
83
93
// Write pattern
84
94
root.program (&w_buffer[0 ], offset, repeat);
0 commit comments