You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.0 KiB
C
84 lines
3.0 KiB
C
/*
|
|
* This file is part of the EasyFlash Library.
|
|
*
|
|
* Copyright (c) 2014, Armink, <armink.ztl@gmail.com>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Function: Initialize interface for this library.
|
|
* Created on: 2014-09-09
|
|
*/
|
|
|
|
/**
|
|
* All Backup Area Flash storage index
|
|
* |----------------------------| Storage Size
|
|
* | Environment variables area | FLASH_ENV_SECTION_SIZE @see FLASH_ENV_SECTION_SIZE
|
|
* | 1.system section | FLASH_ENV_SYSTEM_SIZE
|
|
* | 2:data section | FLASH_ENV_SECTION_SIZE - FLASH_ENV_SYSTEM_SIZE
|
|
* |----------------------------|
|
|
* |(IAP)Downloaded application | IAP already downloaded application size
|
|
* |----------------------------|
|
|
* | Remain flash | All remaining
|
|
* |----------------------------|
|
|
*
|
|
* Backup area storage index
|
|
* 1.Environment variables area: @see FLASH_ENV_SECTION_SIZE
|
|
* 2.Already downloaded application area for IAP function: unfixed size
|
|
* 3.Remain
|
|
*
|
|
* Environment variables area has 2 section
|
|
* 1.system section.(unit: 4 bytes, storage Environment variables's parameter)
|
|
* 2.data section.(storage all environment variables)
|
|
*
|
|
*/
|
|
#include "flash.h"
|
|
|
|
/**
|
|
* Flash system initialize.
|
|
*
|
|
* @return result
|
|
*/
|
|
FlashErrCode flash_init(void) {
|
|
extern FlashErrCode flash_port_init(uint32_t *env_addr, size_t *env_total_size,
|
|
size_t *erase_min_size, flash_env const **default_env, size_t *default_env_size);
|
|
extern FlashErrCode flash_env_init(uint32_t start_addr, size_t total_size,
|
|
size_t erase_min_size, flash_env const *default_env, size_t default_env_size);
|
|
extern FlashErrCode flash_iap_init(uint32_t start_addr);
|
|
|
|
uint32_t env_start_addr;
|
|
size_t env_total_size, erase_min_size, default_env_set_size;
|
|
const flash_env *default_env_set;
|
|
FlashErrCode result = FLASH_NO_ERR;
|
|
|
|
result = flash_port_init(&env_start_addr, &env_total_size, &erase_min_size, &default_env_set,
|
|
&default_env_set_size);
|
|
|
|
if (result == FLASH_NO_ERR) {
|
|
result = flash_env_init(env_start_addr, env_total_size, erase_min_size, default_env_set,
|
|
default_env_set_size);
|
|
}
|
|
|
|
if (result == FLASH_NO_ERR) {
|
|
result = flash_iap_init(env_start_addr + flash_get_env_total_size());
|
|
}
|
|
|
|
if (result == FLASH_NO_ERR) {
|
|
FLASH_DEBUG("EasyFlash V%s is initialize success.\n", FLASH_SW_VERSION);
|
|
} else {
|
|
FLASH_DEBUG("EasyFlash V%s is initialize fail.\n", FLASH_SW_VERSION);
|
|
}
|
|
|
|
return result;
|
|
}
|