mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-25 06:22:11 +03:00
ESP class - move interpretation of magic bytes in function
This commit is contained in:
@ -177,7 +177,36 @@ uint32_t EspClass::getFlashChipSize(void)
|
|||||||
uint8_t * bytes = (uint8_t *) &data;
|
uint8_t * bytes = (uint8_t *) &data;
|
||||||
// read first 4 byte (magic byte + flash config)
|
// read first 4 byte (magic byte + flash config)
|
||||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||||
switch((bytes[3] & 0xf0) >> 4) {
|
return magicFlashChipSize((bytes[3] & 0xf0) >> 4);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t EspClass::getFlashChipSpeed(void)
|
||||||
|
{
|
||||||
|
uint32_t data;
|
||||||
|
uint8_t * bytes = (uint8_t *) &data;
|
||||||
|
// read first 4 byte (magic byte + flash config)
|
||||||
|
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||||
|
return magicFlashChipSpeed(bytes[3] & 0x0F);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
FlashMode_t EspClass::getFlashChipMode(void)
|
||||||
|
{
|
||||||
|
FlashMode_t mode = FM_UNKNOWN;
|
||||||
|
uint32_t data;
|
||||||
|
uint8_t * bytes = (uint8_t *) &data;
|
||||||
|
// read first 4 byte (magic byte + flash config)
|
||||||
|
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||||
|
mode = magicFlashChipMode(bytes[2]);
|
||||||
|
}
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t EspClass::magicFlashChipSize(uint8_t byte) {
|
||||||
|
switch(byte & 0x0F) {
|
||||||
case 0x0: // 4 Mbit (512KB)
|
case 0x0: // 4 Mbit (512KB)
|
||||||
return (512_kB);
|
return (512_kB);
|
||||||
case 0x1: // 2 MBit (256KB)
|
case 0x1: // 2 MBit (256KB)
|
||||||
@ -198,16 +227,9 @@ uint32_t EspClass::getFlashChipSize(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t EspClass::getFlashChipSpeed(void)
|
uint32_t EspClass::magicFlashChipSpeed(uint8_t byte) {
|
||||||
{
|
switch(byte & 0x0F) {
|
||||||
uint32_t data;
|
|
||||||
uint8_t * bytes = (uint8_t *) &data;
|
|
||||||
// read first 4 byte (magic byte + flash config)
|
|
||||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
|
||||||
switch(bytes[3] & 0x0F) {
|
|
||||||
case 0x0: // 40 MHz
|
case 0x0: // 40 MHz
|
||||||
return (40_MHz);
|
return (40_MHz);
|
||||||
case 0x1: // 26 MHz
|
case 0x1: // 26 MHz
|
||||||
@ -220,21 +242,12 @@ uint32_t EspClass::getFlashChipSpeed(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FlashMode_t EspClass::getFlashChipMode(void)
|
FlashMode_t EspClass::magicFlashChipMode(uint8_t byte) {
|
||||||
{
|
FlashMode_t mode = (FlashMode_t) byte;
|
||||||
FlashMode_t mode = FM_UNKNOWN;
|
|
||||||
uint32_t data;
|
|
||||||
uint8_t * bytes = (uint8_t *) &data;
|
|
||||||
// read first 4 byte (magic byte + flash config)
|
|
||||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
|
||||||
mode = (FlashMode_t) bytes[2];
|
|
||||||
if(mode > FM_DOUT) {
|
if(mode > FM_DOUT) {
|
||||||
mode = FM_UNKNOWN;
|
mode = FM_UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,6 +117,10 @@ class EspClass {
|
|||||||
FlashMode_t getFlashChipMode();
|
FlashMode_t getFlashChipMode();
|
||||||
uint32_t getFlashChipSizeByChipId();
|
uint32_t getFlashChipSizeByChipId();
|
||||||
|
|
||||||
|
uint32_t magicFlashChipSize(uint8_t byte);
|
||||||
|
uint32_t magicFlashChipSpeed(uint8_t byte);
|
||||||
|
FlashMode_t magicFlashChipMode(uint8_t byte);
|
||||||
|
|
||||||
bool checkFlashConfig(bool needsEquals = false);
|
bool checkFlashConfig(bool needsEquals = false);
|
||||||
|
|
||||||
bool flashEraseSector(uint32_t sector);
|
bool flashEraseSector(uint32_t sector);
|
||||||
|
Reference in New Issue
Block a user