ESP8266 Flash

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Flash Memory Map)
(系统参数区 (System param))
 
(未显示1个用户的10个中间版本)
第1行: 第1行:
 
==  概述 ==
 
==  概述 ==
  
4KB 为一个扇区 (Sector)
+
4KB 为一个扇区 (Sector), The last 16 sectors is the paramter area!
 +
 
 +
1MB flash is start at  0xF0000
 +
 
 +
4MB flash is start at 0x3F0000
  
 
<br>
 
<br>
第9行: 第13行:
 
始终为 Flash 的最后 16KB
 
始终为 Flash 的最后 16KB
  
* 8KB 为初始化射频参数 (esp_init_data_default.bin),4MB Flash 为:0x3FC000 - 0x3FDFFF
+
* 4KB 为初始化射频参数 (esp_init_data_default.bin); The last sector 12; 4MB Flash 为:0x3FC000 - 0x3FCFFF
* 8KB 为初始化系统参数 (blank.bin),4MB Flash 为:0x3FE000 - 0x3FFFFF
+
* 8KB 为初始化系统参数 (blank.bin); The last sector 13 and 14, 4KB + 4KB mirror; 4MB Flash 为:0x3FD000 - 0x3FEFFF
 +
* 4KB is bootloader parameters area; The last sector 15; 4MB flash is at: 0x3FF000
 +
 
 +
皆由 SDK 提供。
 +
 
 +
从 SDK 1.5.4.1 开始,增加一个 sector 用于 RF Cal Sector,其为 The last secotor 11;4MB Flash 为: 0x3FB000 - 0x3FBFFF
 +
 
 +
 
 +
For MJYUN:
  
皆由  SDK 提供
+
* 8KB is MJYUN parameter area; The last sector 4 and 5, 4KB + 4KB mirror; 4MB flash is: 0x3F4000 - 0x3F5FFF
  
 
<br>
 
<br>
第111行: 第123行:
 
<source lang=c>
 
<source lang=c>
 
/*
 
/*
  * Memory map first 8Mbit of flash
+
  * Memory map first 8Mbit of flash
 
  * address space is: 0x4020 0000 - 0x402F FFFF
 
  * address space is: 0x4020 0000 - 0x402F FFFF
 
  */
 
  */

2016年7月9日 (六) 22:35的最后版本

目录

[编辑] 1 概述

4KB 为一个扇区 (Sector), The last 16 sectors is the paramter area!

1MB flash is start at 0xF0000

4MB flash is start at 0x3F0000


[编辑] 1.1 系统参数区 (System param)

始终为 Flash 的最后 16KB

  • 4KB 为初始化射频参数 (esp_init_data_default.bin); The last sector 12; 4MB Flash 为:0x3FC000 - 0x3FCFFF
  • 8KB 为初始化系统参数 (blank.bin); The last sector 13 and 14, 4KB + 4KB mirror; 4MB Flash 为:0x3FD000 - 0x3FEFFF
  • 4KB is bootloader parameters area; The last sector 15; 4MB flash is at: 0x3FF000

皆由 SDK 提供。

从 SDK 1.5.4.1 开始,增加一个 sector 用于 RF Cal Sector,其为 The last secotor 11;4MB Flash 为: 0x3FB000 - 0x3FBFFF


For MJYUN:

  • 8KB is MJYUN parameter area; The last sector 4 and 5, 4KB + 4KB mirror; 4MB flash is: 0x3F4000 - 0x3F5FFF


[编辑] 1.2 用户参数区 (User param)

指 Espressif 提供的示例 (IOT_Demo / AT) 中设定的用户参数区

iBaihe 的参数: 0x3C * 4KB = 0x3C000

COS Platform 参数:

(0x3C + 1) * 4KB = 0x3D000 (SAVE_0)
(0x3C + 2) * 4KB = 0x3E000 (SAVE_1)
(0x3C + 3) * 4KB = 0x3F000 (PARAM_FLAG)



[编辑] 2 Layout Without OTA

Esp8266-flash-layout-no-ota.png

Esp8266-flash-layout-no-ota-4m.png

Esp8266-flash-layout-no-ota-512.png

Esp8266-flash-layout-no-ota-1024.png

Esp8266-flash-layout-no-ota-4096.png

Address	Size	Name	                        Description
00000h	4k	boot.bin	                Bootloader
 
3C000h	14k	Param Start Sector
3D000h  1x4k    Param Saved 0
3E000h  1x4k    Param Saved 1
3F000h  1x4k    Param Flag

40000h	240k	app.v6.irom0text.bin	        SDK libraries
7C000h	8k	esp_init_data_default.bin	Default configuration
7E000h	8k	blank.bin	                Filled with FFh. May be WiFi configuration



[编辑] 3 Layout With OTA

[编辑] 3.1 512 和 1024KB

Esp8266-flash-layout-ota.png

Esp8266-flash-layout-ota-512.png

Esp8266-flash-layout-ota-1024.png


[编辑] 3.2 4096KB

Esp8266-flash-layout-ota-4m.png

Esp8266-flash-layout-ota-4096.png



[编辑] 4 SPI Flash Format



[编辑] 5 SPI Flash Mode

  • QIO , for flash that support quad r/w operation(e.g. W25Q)
  • QOUT, for flash that support quad read operation(e.g. W25Q)
  • DIO, for flash that support dual r/w operation(e.g. W25Q &W25X)
  • DOUT, for flash that support dual read operation(e.g. W25Q &W25X)


经测试:

  • Winbond 25Q32B 可工作于 DIO / DOUT / QIO /QOUT (Noduino Falcon)
  • BergMicro 25Q32A 只可工作于 DIO / DOUT (NodeMCU V1.0 可能是 ESP-12E 接线的问题)
  • MXIC 25L80 (小 K mini)只可工作于 DOUT



[编辑] 6 Flash Memory Map

Map the flash
/*
 * Memory map first 8Mbit of flash
 * address space is: 0x4020 0000 - 0x402F FFFF
 */
Cache_Read_Enable (0, 0, 0);


Unmap the flash
Cache_Read_Disable();



[编辑] 6.1 Cache_Read_Enable

void Cache_Read_Enable(uint8 odd_even, uint8 mb_count, unt8 no_idea);

Valid values for odd_even:

 0 – clears bits 24 & 25 of control register 0x3FF0000C
 1 – clears bit 24, sets bit 25

other – clears bit 25, sets bit 24


Function of odd_even:

 0 – allows access to even numbered mb
 1 – allow access to odd numbered mb

other – appears to do the same as 1, there must be a difference but I haven’t worked out what it it


Valid values for mb_count:

 0-7 – set bits 16, 17 & 18 of control register 0x3FF0000C


Function of mb_count:

Which odd or even bank to map (according to odd_even option)

 e.g. mb_count = 0, odd_even = 0 -> map first 8Mbit of flash
 e.g. mb_count = 0, odd_even = 1 -> map second 8Mbit of flash
 e.g. mb_count = 1, odd_even = 0 -> map third 8Mbit of flash
 e.g. mb_count = 1, odd_even = 1 -> map fourth 8Mbit of flash

Valid values for no_idea:

 0 – sets bit 3 of 0x3FF00024
 1 – sets bit 26 of 0x3FF0000C and sets bits 3 & 4 of 0x3FF00024


Function of no_idea:

The clue is in the name, I can’t work out what this does from my experiments, but the SDK always sets this to 1.




[编辑] 7 Reference

















个人工具
名字空间

变换
操作
导航
工具箱