@@ -68,13 +68,18 @@ static int kv_setup = TDBStoreSet;
68
68
69
69
static const int heap_alloc_threshold_size = 4096 ;
70
70
71
+ static inline uint32_t align_up (uint32_t val, uint32_t size)
72
+ {
73
+ return (((val - 1 ) / size) + 1 ) * size;
74
+ }
75
+
71
76
/* ----------------initialization------------------*/
72
77
73
78
// init the blockdevice
74
79
static void kvstore_init ()
75
80
{
76
81
int res;
77
- size_t erase_size, ul_bd_size, rbp_bd_size;
82
+ size_t program_size, erase_size, ul_bd_size, rbp_bd_size;
78
83
BlockDevice *sec_bd;
79
84
80
85
res = bd->init ();
@@ -109,10 +114,17 @@ static void kvstore_init()
109
114
flash_bd = new FlashSimBlockDevice (bd);
110
115
sec_bd = flash_bd;
111
116
}
117
+ res = sec_bd->init ();
118
+ TEST_ASSERT_EQUAL_ERROR_CODE (MBED_SUCCESS, res);
119
+
120
+ program_size = sec_bd->get_program_size ();
121
+ erase_size = sec_bd->get_erase_size ();
122
+ // We must be able to hold at least 10 small keys (20 program sectors) and master record + internal data
123
+ ul_bd_size = align_up (program_size * 40 , erase_size);
124
+ rbp_bd_size = align_up (program_size * 40 , erase_size);
112
125
113
- erase_size = sec_bd->get_erase_size ();
114
- ul_bd_size = erase_size * 4 ;
115
- rbp_bd_size = erase_size * 2 ;
126
+ res = sec_bd->deinit ();
127
+ TEST_ASSERT_EQUAL_ERROR_CODE (MBED_SUCCESS, res);
116
128
117
129
ul_bd = new SlicingBlockDevice (sec_bd, 0 , ul_bd_size);
118
130
rbp_bd = new SlicingBlockDevice (sec_bd, ul_bd_size, ul_bd_size + rbp_bd_size);
0 commit comments