-
Notifications
You must be signed in to change notification settings - Fork 107
Open
Description
When system boots into user2.bin in espFsInit() the flashAddress is been always calculated to user1.bin location in the following prtion of code in espfs.c:
if((uint32_t)flashAddress > 0x40000000) {
flashAddress = (void*)((uint32_t)flashAddress-FLASH_BASE_ADDR);
}
The following part of code can be added after the above to correct this:
uint32_t shift;
if ( system_get_userbin_addr() > 0x01000 )
{ // user2.bin
uint8_t map = system_get_flash_size_map();
switch ( map )
{
case FLASH_SIZE_4M_MAP_256_256:
shift = 256*1024; // 256kB
break;
case FLASH_SIZE_8M_MAP_512_512:
case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_32M_MAP_512_512:
shift = 512*1024; // 512kB
break;
case FLASH_SIZE_16M_MAP_1024_1024:
case FLASH_SIZE_32M_MAP_1024_1024:
case FLASH_SIZE_64M_MAP_1024_1024:
case FLASH_SIZE_128M_MAP_1024_1024:
shift = 1024*1024; // 1MB
break;
default:
shift = 512*1024;
}
flashAddress = (void *)((uint32_t)flashAddress + shift);
}
Metadata
Metadata
Assignees
Labels
No labels