1、【增加】获取存放在线升级固件区首地址的方法:ef_get_bak_app_start_addr。

Signed-off-by: armink <armink.ztl@gmail.com>
pull/15/head
armink 8 years ago
parent 6e0d2cd3b6
commit a7e1e89916

@ -67,7 +67,7 @@ if (!(EXPR)) \
while (1); \ while (1); \
} }
/* EasyFlash software version number */ /* EasyFlash software version number */
#define EF_SW_VERSION "3.0.0" #define EF_SW_VERSION "3.0.1"
typedef struct _ef_env{ typedef struct _ef_env{
char *key; char *key;
@ -116,6 +116,7 @@ EfErrCode ef_write_data_to_bak(uint8_t *data, size_t size, size_t *cur_size,
size_t total_size); size_t total_size);
EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size); EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size);
EfErrCode ef_copy_bl_from_bak(uint32_t bl_addr, size_t bl_size); EfErrCode ef_copy_bl_from_bak(uint32_t bl_addr, size_t bl_size);
uint32_t ef_get_bak_app_start_addr(void);
#endif #endif
#ifdef EF_USING_LOG #ifdef EF_USING_LOG

@ -33,8 +33,6 @@
/* IAP section backup application section start address in flash */ /* IAP section backup application section start address in flash */
static uint32_t bak_app_start_addr = 0; static uint32_t bak_app_start_addr = 0;
static uint32_t get_bak_app_start_addr(void);
/** /**
* Flash IAP function initialize. * Flash IAP function initialize.
* *
@ -66,7 +64,7 @@ EfErrCode ef_iap_init(void) {
EfErrCode ef_erase_bak_app(size_t app_size) { EfErrCode ef_erase_bak_app(size_t app_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
result = ef_port_erase(get_bak_app_start_addr(), app_size); result = ef_port_erase(ef_get_bak_app_start_addr(), app_size);
switch (result) { switch (result) {
case EF_NO_ERR: { case EF_NO_ERR: {
EF_INFO("Erased backup area application OK.\n"); EF_INFO("Erased backup area application OK.\n");
@ -156,7 +154,7 @@ EfErrCode ef_write_data_to_bak(uint8_t *data, size_t size, size_t *cur_size,
size = total_size - *cur_size; size = total_size - *cur_size;
} }
result = ef_port_write(get_bak_app_start_addr() + *cur_size, (uint32_t *) data, size); result = ef_port_write(ef_get_bak_app_start_addr() + *cur_size, (uint32_t *) data, size);
switch (result) { switch (result) {
case EF_NO_ERR: { case EF_NO_ERR: {
*cur_size += size; *cur_size += size;
@ -190,7 +188,7 @@ EfErrCode ef_copy_app_from_bak(uint32_t user_app_addr, size_t app_size) {
/* cycle copy data */ /* cycle copy data */
for (cur_size = 0; cur_size < app_size; cur_size += sizeof(buff)) { for (cur_size = 0; cur_size < app_size; cur_size += sizeof(buff)) {
app_cur_addr = user_app_addr + cur_size; app_cur_addr = user_app_addr + cur_size;
bak_cur_addr = 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 = ef_port_write(app_cur_addr, buff, sizeof(buff));
if (result != EF_NO_ERR) { if (result != EF_NO_ERR) {
@ -230,7 +228,7 @@ EfErrCode ef_copy_bl_from_bak(uint32_t bl_addr, size_t bl_size) {
/* cycle copy data by 32bytes buffer */ /* cycle copy data by 32bytes buffer */
for (cur_size = 0; cur_size < bl_size; cur_size += sizeof(buff)) { for (cur_size = 0; cur_size < bl_size; cur_size += sizeof(buff)) {
bl_cur_addr = bl_addr + cur_size; bl_cur_addr = bl_addr + cur_size;
bak_cur_addr = 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(bl_cur_addr, buff, sizeof(buff)); result = ef_port_write(bl_cur_addr, buff, sizeof(buff));
if (result != EF_NO_ERR) { if (result != EF_NO_ERR) {
@ -257,7 +255,7 @@ EfErrCode ef_copy_bl_from_bak(uint32_t bl_addr, size_t bl_size) {
* *
* @return size * @return size
*/ */
static uint32_t get_bak_app_start_addr(void) { uint32_t ef_get_bak_app_start_addr(void) {
return bak_app_start_addr; return bak_app_start_addr;
} }

Loading…
Cancel
Save