2015-04-30 04:00:03 +00:00
|
|
|
/*
|
|
|
|
* copyright (c) Espressif System 2010
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __SPI_FLASH_H__
|
|
|
|
#define __SPI_FLASH_H__
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
SPI_FLASH_RESULT_OK,
|
|
|
|
SPI_FLASH_RESULT_ERR,
|
|
|
|
SPI_FLASH_RESULT_TIMEOUT
|
2015-05-30 09:11:04 +00:00
|
|
|
} sdk_SpiFlashOpResult;
|
2015-04-30 04:00:03 +00:00
|
|
|
|
|
|
|
#define SPI_FLASH_SEC_SIZE 4096
|
|
|
|
|
2015-05-30 09:11:04 +00:00
|
|
|
uint32_t sdk_spi_flash_get_id(void);
|
|
|
|
sdk_SpiFlashOpResult sdk_spi_flash_read_status(uint32_t *status);
|
|
|
|
sdk_SpiFlashOpResult sdk_spi_flash_write_status(uint32_t status_value);
|
|
|
|
sdk_SpiFlashOpResult sdk_spi_flash_erase_sector(uint16_t sec);
|
|
|
|
sdk_SpiFlashOpResult sdk_spi_flash_write(uint32_t des_addr, uint32_t *src_addr, uint32_t size);
|
|
|
|
sdk_SpiFlashOpResult sdk_spi_flash_read(uint32_t src_addr, uint32_t *des_addr, uint32_t size);
|
2015-04-30 04:00:03 +00:00
|
|
|
|
2015-08-06 01:37:34 +00:00
|
|
|
/* SDK uses this structure internally to account for flash size.
|
|
|
|
|
|
|
|
Based on RE work by @foogod at
|
|
|
|
http://esp8266-re.foogod.com/wiki/Flashchip_%28IoT_RTOS_SDK_0.9.9%29
|
|
|
|
|
|
|
|
Note that the only field the SDK actually uses appears to be chip_size
|
|
|
|
*/
|
|
|
|
typedef struct {
|
|
|
|
uint32_t device_id;
|
|
|
|
uint32_t chip_size; /* in bytes */
|
|
|
|
uint32_t block_size; /* in bytes */
|
|
|
|
uint32_t sector_size; /* in bytes */
|
|
|
|
uint32_t page_size; /* in bytes */
|
|
|
|
uint32_t status_mask;
|
|
|
|
} sdk_flashchip_t;
|
|
|
|
|
|
|
|
extern sdk_flashchip_t sdk_flashchip;
|
|
|
|
|
2015-04-30 04:00:03 +00:00
|
|
|
#endif
|