@@ -102,12 +102,14 @@ uint16_t flash_helper_erase_new_app(uint32_t new_app_size) {
102
102
if (new_app_size > flash_addr [NEW_APP_BASE + i ]) {
103
103
uint16_t res = FLASH_EraseSector (flash_sector [NEW_APP_BASE + i ], VoltageRange_3 );
104
104
if (res != FLASH_COMPLETE ) {
105
+ FLASH_Lock ();
105
106
return res ;
106
107
}
107
108
} else {
108
109
break ;
109
110
}
110
111
}
112
+ FLASH_Lock ();
111
113
112
114
timeout_configure_IWDT ();
113
115
utils_sys_unlock_cnt ();
@@ -116,6 +118,7 @@ uint16_t flash_helper_erase_new_app(uint32_t new_app_size) {
116
118
}
117
119
118
120
uint16_t flash_helper_write_new_app_data (uint32_t offset , uint8_t * data , uint32_t len ) {
121
+ FLASH_Unlock ();
119
122
FLASH_ClearFlag (FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR |
120
123
FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR );
121
124
@@ -127,9 +130,11 @@ uint16_t flash_helper_write_new_app_data(uint32_t offset, uint8_t *data, uint32_
127
130
for (uint32_t i = 0 ;i < len ;i ++ ) {
128
131
uint16_t res = FLASH_ProgramByte (flash_addr [NEW_APP_BASE ] + offset + i , data [i ]);
129
132
if (res != FLASH_COMPLETE ) {
133
+ FLASH_Lock ();
130
134
return res ;
131
135
}
132
136
}
137
+ FLASH_Lock ();
133
138
134
139
timeout_configure_IWDT ();
135
140
@@ -228,6 +233,7 @@ uint32_t flash_helper_verify_flash_memory(void) {
228
233
//Write the flag to indicate CRC has been computed.
229
234
uint16_t res = FLASH_ProgramWord ((uint32_t )APP_CRC_WAS_CALCULATED_FLAG_ADDRESS , APP_CRC_WAS_CALCULATED_FLAG );
230
235
if (res != FLASH_COMPLETE ) {
236
+ FLASH_Lock ();
231
237
return FAULT_CODE_FLASH_CORRUPTION ;
232
238
}
233
239
@@ -241,8 +247,10 @@ uint32_t flash_helper_verify_flash_memory(void) {
241
247
//Store CRC
242
248
res = FLASH_ProgramWord (APP_MAX_SIZE - 4 , crc );
243
249
if (res != FLASH_COMPLETE ) {
250
+ FLASH_Lock ();
244
251
return FAULT_CODE_FLASH_CORRUPTION ;
245
252
}
253
+ FLASH_Lock ();
246
254
247
255
// reboot
248
256
NVIC_SystemReset ();
0 commit comments