99A-ESP8266__Flash_RW_Operation__CN_v0.2
时间:2025-04-19
时间:2025-04-19
8266 flash
ESP8266 Flash 读写说明
Version 0.2
Espressif Systems IOT Team
8266 flash
免责申明和版权公告
本 文中的信息,包括供参考的URL地址,如有变更,恕不另 行通知。
文档“按现状”提供,不负任何担保责任,包括对适销性、适 用于特定 用途或 非侵权性的任何担保,和任何提案、规格或样品在他处提到的任何担保。本 文档不负任何责任,包括使 用本 文档内信息产 生的侵犯任何专利权 行为的责任。本 文档在此未以禁 止反 言或其他 方式授予任何知识产权使 用许可,不管是明 示许可还是暗 示许可。
Wi-Fi联盟成员标志归Wi-Fi联盟所有。
文中提到的所有商标名称、商标和注册商标均属其各 自所有者的财产,特此声明。
版权归© 2015 乐鑫信息科技(上海)有限公司所有。保留所有权利。
8266 flash
Table of Contents
1.
2.前 言 ...............................................................................................................4 Flash 读写接 口 ..............................................................................................4
2.1.spi_ ash_erase_sector ..................................................................4
2.2.spi_ ash_write ..............................................................................4
2.3.spi_ ash_read ...............................................................................5
Flash layout ..................................................................................................5
Flash 读写保护 示例 .......................................................................................6
4.1.问题描述 ........................................................................................6
4.2.实现原理 ........................................................................................6
4.3.软件 示例 ........................................................................................7
4.4.其他建议 ........................................................................................8
1.
2.Flash 读写保护参考 一 ....................................................................8 Flash 读写保护参考 二 ....................................................................83.4.
8266 flash
1.前 言
本 文介绍 ESP8266 的 Flash 读写接 口,Flash 读写时的注意事项,以及 esp_iot_sdk 中 IOT_Demo 提供的 Flash 读写保护 示例。
2.
Flash 读写接 口 spi_flash_erase_sector : spi_flash_write spi_flash_read 一个扇区(sector)为 4KB,从扇区 0 开始计数,以下接 口可读写整个 Flash 的任意区域: 擦除 Flash 的某个扇区(sector)。 将数据写 入Flash。 读取Flash中的数据。 : :
返回值:
Typedef enum{
SPI_FLASH_RESULT_OK, SPI_FLASH_RESULT_ERR, SPI_FLASH_RESULT_TIMEOUT }SpiFlashOpResult;
2.1.
spi_ ash_erase_sector 2.2.
spi_ ash_write
8266 flash
"
2.3.
spi_ ash_read
3.
Flash layout 由于上述软件接 口,可以读写 Flash 的整个区域,请注意 Flash 以下三个区域划分: 程序区:代码编译 生成的 bin 文件,烧录到 Flash 占 用的区域,请勿改写; 系统参数区:esp_iot_sdk 中底层 用于存放系统参数的区域,请勿改写; 用户参数区:上层应 用程序存储 用户参数的区域,在 IOT_Demo 中定义为 0x3C000 开始的 16KBytes, 用户可以 自 行更改
8266 flash
" 补充说明:
1.上表程序区仅表明起始位置,占 用空间由编译烧录的 bin 大 小决定。
2.系统参数区,存储系统级数据:
esp_init_data_default.bin :位于 Flash 倒数第 4 个 sector
3.blank.bin :位于 Flash 倒数第 2 个 sector 例如,对于 512KB Flash, esp_init_data_default.bin 烧到 0x7C000; blank.bin 烧到 0x7E000 Flash 读写编程可参考 IOT_Demo 中 user_light.c,在 IoT_Demo 将应 用级数据存储在了
0x3C000 开始的 4 x 4 KB (4 个扇区)区域。
例如,master_device_key.bin ( 用户参数,仅在需使 用 Espressif Cloud 的情况需烧录) 烧录在 0x3E000地址
4.Flash 读写保护 示例
4.1.问题描述
Flash 擦除的最 小单位为 一个扇区(4KB),当存储在某个扇区的数据需要改写时,流程是先擦掉整个扇区,再将该扇区的数据写回去。
那么,如果在扇区的擦写过程中突然断电,就有可能导致该扇区的数据丢失。
针对上述问题,Espressif 提供了Flash 读写保护机制的 示例,并给出其他读写保护 方法的建议。客户可以直接使 用 Espressif 提供的 Flash 读写保护机制,也可以实现 自 己的 Flash 读写保护机制。 在 IOT_Demo 中 user_esp_platform.c 提供了 Flash 读写保护的样例。
4.2.实现原理
Espressif Flash 读写保护 示例,使 用三个 sector(扇区)实现(每 sector 4KB),提供 4KB 的可靠存储空间。
将 sector 1 和 sector 2 作为数据 sector,轮流读写,始终分别存放“本次”数据和“前 一次”数据,确保了 至少有 一份数据存储安全;sector 3 作为 ag sector,标志最新的数据存储 sector。
8266 flash
"保护机制如下: …… 此处隐藏:3595字,全部文档内容请下载后查看。喜欢就下载吧 ……