2014-12-30 19:47:44 +01:00
|
|
|
/******************************************************************************
|
|
|
|
* Flash api for NodeMCU
|
|
|
|
*******************************************************************************/
|
|
|
|
#include "user_config.h"
|
|
|
|
#include "flash_api.h"
|
|
|
|
#include "spi_flash.h"
|
|
|
|
|
|
|
|
SPIFlashInfo *ICACHE_FLASH_ATTR
|
|
|
|
flash_get_info()
|
|
|
|
{
|
|
|
|
static SPIFlashInfo spi_flash_info;
|
|
|
|
static bool is_spi_flash_info_initialized = false;
|
|
|
|
// Make the code more fast
|
|
|
|
if (!is_spi_flash_info_initialized)
|
|
|
|
{
|
|
|
|
SPIRead(0, &spi_flash_info, sizeof(spi_flash_info));
|
|
|
|
is_spi_flash_info_initialized = true;
|
|
|
|
}
|
|
|
|
return &spi_flash_info;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t ICACHE_FLASH_ATTR
|
|
|
|
flash_get_size_byte()
|
|
|
|
{
|
|
|
|
static uint32_t flash_size = 0;
|
|
|
|
// Make the code more fast
|
|
|
|
if (flash_size == 0 )
|
|
|
|
{
|
|
|
|
SPIFlashInfo *p_spi_flash_info = flash_get_info();
|
|
|
|
switch (p_spi_flash_info->size)
|
|
|
|
{
|
|
|
|
case SIZE_2MBIT:
|
|
|
|
// 2Mbit, 256kByte
|
|
|
|
flash_size = 256 * 1024;
|
|
|
|
break;
|
|
|
|
case SIZE_4MBIT:
|
|
|
|
// 4Mbit, 512kByte
|
|
|
|
flash_size = 512 * 1024;
|
|
|
|
break;
|
|
|
|
case SIZE_8MBIT:
|
|
|
|
// 8Mbit, 1MByte
|
|
|
|
flash_size = 1 * 1024 * 1024;
|
|
|
|
break;
|
|
|
|
case SIZE_16MBIT:
|
|
|
|
// 16Mbit, 2MByte
|
|
|
|
flash_size = 2 * 1024 * 1024;
|
|
|
|
break;
|
|
|
|
case SIZE_32MBIT:
|
|
|
|
// 32Mbit, 4MByte
|
|
|
|
flash_size = 4 * 1024 * 1024;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
// Unknown flash size, fall back mode.
|
|
|
|
flash_size = 512 * 1024;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return flash_size;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t ICACHE_FLASH_ATTR
|
|
|
|
flash_get_sec_num()
|
|
|
|
{
|
|
|
|
static uint16_t result = 0;
|
|
|
|
// Make the code more fast
|
|
|
|
if (result == 0 )
|
|
|
|
{
|
|
|
|
result = flash_get_size_byte() / SPI_FLASH_SEC_SIZE;
|
|
|
|
}
|
|
|
|
return result;
|
2014-12-30 19:51:36 +01:00
|
|
|
}
|