1、【增加】环境变量的结束地址在装载过程中防止越界功能,提高软件容错能力。

Signed-off-by: armink <armink.ztl@gmail.com>
pull/1/head
armink 11 years ago
parent f6397d9177
commit 3472453d91

@ -44,7 +44,7 @@ if (!(EXPR)) \
while (1); \
}
/* EasyFlash software version number */
#define FLASH_SW_VERSION "1.02.12"
#define FLASH_SW_VERSION "1.03.10"
typedef struct _flash_env{
char *key;

@ -484,8 +484,8 @@ void flash_load_env(void) {
/* read environment variables end address from flash */
flash_read(get_env_system_addr() + FLASH_ENV_SYSTEM_INDEX_END_ADDR * 4, &env_end_addr, 4);
/* if environment variables is not initialize, set default for it */
if (env_end_addr == 0xFFFFFFFF) {
/* if environment variables is not initialize or flash has dirty data, set default for it */
if ((env_end_addr == 0xFFFFFFFF) || (env_end_addr > env_start_addr + env_total_size)) {
flash_env_set_default();
} else {
/* set environment variables end address */

@ -517,8 +517,8 @@ void flash_load_env(void) {
/* read current using data section address */
flash_read(get_env_start_addr(), &using_data_addr, 4);
/* if environment variables is not initialize, set default for it */
if (using_data_addr == 0xFFFFFFFF) {
/* if environment variables is not initialize or flash has dirty data, set default for it */
if ((using_data_addr == 0xFFFFFFFF) || (using_data_addr > env_start_addr + env_total_size)) {
/* initialize current using data section address */
set_cur_using_data_addr(get_env_start_addr() + flash_erase_min_size);
/* save current using data section address to flash*/
@ -530,6 +530,10 @@ void flash_load_env(void) {
set_cur_using_data_addr(using_data_addr);
/* read environment variables detail part end address from flash */
flash_read(get_cur_using_data_addr() + ENV_PARAM_PART_INDEX_END_ADDR * 4, &env_end_addr, 4);
/* if environment variables end address has error, set default for environment variables */
if (env_end_addr > env_start_addr + env_total_size) {
flash_env_set_default();
} else {
/* set environment variables detail part end address */
set_env_detail_end_addr(env_end_addr);
@ -547,6 +551,7 @@ void flash_load_env(void) {
FLASH_INFO("Warning: Environment variables CRC check failed. Set it to default.\n");
flash_env_set_default();
}
}
#endif
}

Loading…
Cancel
Save