|
|
|
@ -80,19 +80,20 @@ EfErrCode ef_erase_bak_app(size_t app_size) {
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Erase user old application
|
|
|
|
* Erase user old application by using specified erase function.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
* @param app_size application size
|
|
|
|
* @param app_size application size
|
|
|
|
|
|
|
|
* @param app_erase user specified application erase function
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return result
|
|
|
|
* @return result
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
EfErrCode ef_erase_user_app(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
EfErrCode ef_erase_spec_user_app(uint32_t user_app_addr, size_t app_size,
|
|
|
|
|
|
|
|
EfErrCode (*app_erase)(uint32_t addr, size_t size)) {
|
|
|
|
EfErrCode result = EF_NO_ERR;
|
|
|
|
EfErrCode result = EF_NO_ERR;
|
|
|
|
|
|
|
|
|
|
|
|
result = ef_port_erase(user_app_addr, app_size);
|
|
|
|
result = app_erase(user_app_addr, app_size);
|
|
|
|
switch (result) {
|
|
|
|
switch (result) {
|
|
|
|
case EF_NO_ERR: {
|
|
|
|
case EF_NO_ERR: {
|
|
|
|
EF_INFO("Erased user application OK.\n");
|
|
|
|
EF_INFO("Erased user application OK.\n");
|
|
|
|
@ -108,6 +109,18 @@ EfErrCode ef_erase_user_app(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Erase user old application by using default `ef_port_erase` function.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
|
|
|
|
* @param app_size application size
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return result
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
EfErrCode ef_erase_user_app(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
|
|
|
|
return ef_erase_spec_user_app(user_app_addr, app_size, ef_port_erase);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Erase old bootloader
|
|
|
|
* Erase old bootloader
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@ -171,14 +184,16 @@ EfErrCode ef_write_data_to_bak(uint8_t *data, size_t size, size_t *cur_size,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Copy backup area application to application entry.
|
|
|
|
* Copy backup area application to application entry by using specified write function.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
* @param app_size application size
|
|
|
|
* @param app_size application size
|
|
|
|
|
|
|
|
* @param app_write user specified application write function
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return result
|
|
|
|
* @return result
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
EfErrCode ef_copy_spec_app_from_bak(uint32_t user_app_addr, size_t app_size,
|
|
|
|
|
|
|
|
EfErrCode (*app_write)(uint32_t addr, const uint32_t *buf, size_t size)) {
|
|
|
|
size_t cur_size;
|
|
|
|
size_t cur_size;
|
|
|
|
uint32_t app_cur_addr, bak_cur_addr;
|
|
|
|
uint32_t app_cur_addr, bak_cur_addr;
|
|
|
|
EfErrCode result = EF_NO_ERR;
|
|
|
|
EfErrCode result = EF_NO_ERR;
|
|
|
|
@ -190,7 +205,7 @@ EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
app_cur_addr = user_app_addr + cur_size;
|
|
|
|
app_cur_addr = user_app_addr + cur_size;
|
|
|
|
bak_cur_addr = ef_get_bak_app_start_addr() + cur_size;
|
|
|
|
bak_cur_addr = ef_get_bak_app_start_addr() + cur_size;
|
|
|
|
ef_port_read(bak_cur_addr, buff, sizeof(buff));
|
|
|
|
ef_port_read(bak_cur_addr, buff, sizeof(buff));
|
|
|
|
result = ef_port_write(app_cur_addr, buff, sizeof(buff));
|
|
|
|
result = app_write(app_cur_addr, buff, sizeof(buff));
|
|
|
|
if (result != EF_NO_ERR) {
|
|
|
|
if (result != EF_NO_ERR) {
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -210,6 +225,18 @@ EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Copy backup area application to application entry by using default `ef_port_write` function.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param user_app_addr application entry address
|
|
|
|
|
|
|
|
* @param app_size application size
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return result
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size) {
|
|
|
|
|
|
|
|
return ef_copy_spec_app_from_bak(user_app_addr, app_size, ef_port_write);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Copy backup area bootloader to bootloader entry.
|
|
|
|
* Copy backup area bootloader to bootloader entry.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
|