@@ -124,7 +124,7 @@ static uint32_t calc_crc(uint32_t init_crc, uint32_t data_size, const void *data
124
124
TDBStore::TDBStore (BlockDevice *bd) : _ram_table(0 ), _max_keys(0 ),
125
125
_num_keys(0 ), _bd(bd), _buff_bd(0 ), _free_space_offset(0 ), _master_record_offset(0 ),
126
126
_master_record_size(0 ), _is_initialized(false ), _active_area(0 ), _active_area_version(0 ), _size(0 ),
127
- _area_params{}, _prog_size(0 ), _work_buf(0 ), _key_buf(0 ), _variant_bd_erase_unit_size( false ), _inc_set_handle(0 )
127
+ _area_params{}, _prog_size(0 ), _work_buf(0 ), _key_buf(0 ), _inc_set_handle(0 )
128
128
{
129
129
for (int i = 0 ; i < _num_areas; i++) {
130
130
_area_params[i] = { 0 };
@@ -194,19 +194,19 @@ void TDBStore::calc_area_params()
194
194
195
195
memset (_area_params, 0 , sizeof (_area_params));
196
196
size_t area_0_size = 0 ;
197
- bd_size_t prev_erase_unit_size = _bd->get_erase_size (area_0_size);
198
- _variant_bd_erase_unit_size = 0 ;
199
197
200
198
while (area_0_size < bd_size / 2 ) {
201
199
bd_size_t erase_unit_size = _bd->get_erase_size (area_0_size);
202
- _variant_bd_erase_unit_size |= (erase_unit_size != prev_erase_unit_size);
203
200
area_0_size += erase_unit_size;
204
201
}
205
202
206
203
_area_params[0 ].address = 0 ;
207
204
_area_params[0 ].size = area_0_size;
208
205
_area_params[1 ].address = area_0_size;
209
206
_area_params[1 ].size = bd_size - area_0_size;
207
+
208
+ // The areas must be of same size
209
+ MBED_ASSERT (_area_params[0 ].size == _area_params[1 ].size );
210
210
}
211
211
212
212
@@ -1427,14 +1427,8 @@ void TDBStore::offset_in_erase_unit(uint8_t area, uint32_t offset,
1427
1427
uint32_t &offset_from_start, uint32_t &dist_to_end)
1428
1428
{
1429
1429
uint32_t bd_offset = _area_params[area].address + offset;
1430
- if (!_variant_bd_erase_unit_size) {
1431
- uint32_t eu_size = _buff_bd->get_erase_size ();
1432
- offset_from_start = bd_offset % eu_size;
1433
- dist_to_end = eu_size - offset_from_start;
1434
- return ;
1435
- }
1436
-
1437
1430
uint32_t agg_offset = 0 ;
1431
+
1438
1432
while (bd_offset >= agg_offset + _buff_bd->get_erase_size (agg_offset)) {
1439
1433
agg_offset += _buff_bd->get_erase_size (agg_offset);
1440
1434
}
0 commit comments