FlashDemo Studio:FlashDemo Studio是一款非常强大的 Flash
演示制作工具,它可以让你在没有任何编程知识的情况下创建专业的演示和指南。它的操作非常简单,没有复杂的界面,你只需在几分钟的时间就可以将你的示范或演示文稿准备就绪。新版本重建了内置的 CD 烧录器,除能完美支持 Windows Vista 外,还加入了对 DVD R/RW的烧录、写入速度、快速抹除、弹出并关闭刻录机托盘等一些新功能的支持。
ESP- 12F模组的外部Flash = 4MB = 4096KB = 32Mbit
4MB Flash = 0x000 000 ~0x3FF FFF
扇区编号: 0x000 ~ 0x3FF [Flash扇区==4KB]|
1、定义:扇区(磁盘上划分的区域)
2、磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。硬盘的读写以扇区为基本单位。
3、磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。而每一个磁道又按512个字节为单位划分为等分,叫做扇区,在一些硬盘的参数列表上你可以看到描述每个磁道的扇区数的参数,它通常用一个范围标识,例如373~746,这表示,最外圈的磁道有746个扇区,而最里面的磁道有373个扇区,因此可以算出来,磁道的容量分别是从186.5KB到373KB(190976B–381952B)
4、磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。在磁盘上,DOS操作系统是以“簇”为单位为文件分配磁盘空间的。硬盘的簇通常为多个扇区,与磁盘的种类、DOS 版本及硬盘分区的大小有关。每个簇只能由一个文件占用,即使这个文件中有几个字节,决不允许两个以上的文件共用一个簇,否则会造成数据的混乱。这种以簇为最小分配单位的机制,使硬盘对数据的管理变得相对容易,但也造成了磁盘空间的浪费,尤其是小文件数目较多的情况下,一个上千兆的大硬盘,其浪费的磁盘空间可达上百兆字节。
Non——FOTA(不支持云端升级的Flash)
①[eagle. flash. bin]系统程序:存放运行系统必要的固件;
②[eagle. irom0. text. bin]系统程序:存放用户编写的程序;
③[用户数据] :存放用户的参数/数据;
④[RF_ CAL参数] :存放系统自动保存校准后的RF(射频)参数;
⑤[默认F参数] :存放默认的F参数信息(将[esp_ int_ data _default. bin]下载至该区);
⑥[系统参数] :存放系统参数信息(将[blank.bin]下载至该区)
FOTA(不支持云端升级的Flash)
在 Pin21 SD_CLK 管脚上串联⼀个串联电阻连接到 Flash CLK
管脚上。此电阻的作⽤主要为降低驱动电流,减⼩串扰和外部⼲扰,调节时序等。初始串联电阻⼤⼩为 200 Ω。
1、spi_ flash_ erase_ sector
SpiFlashOpResult spi_ flash_ erase_ sector (uint16 sec)
uint16 sec
-扇区号,从扇区0开始计数,每扇区4KBSpiFlashOpResult
2、spi_ flash_ write
spi flash_ erase_ sector
擦除待写区域,再写入数据。SpiFlashOpResult spi_ flash_ write (uint32 des_ addr ,uint32 *srC_ addr, uint32 size)
uint32 des_ addr
- 写入Flash的地址,起始位置。uint32 *src_ addr
- 写入Flash的数据指针。Uint32 size
- 写入数据长度,单位: byte。SpiFlashOpResult
3、spi_ flash_ read
SpiFlashOpResult spi_ flash_ read(uint32 src_ addr,uint32 * des_ addr, uint32 size)
uint32 src_ addr
-写入Flash的地址,起始位置。uint32 *des_ addr
- 写入Flash的数据指针。Uint32 size
-写入数据长度,单位: byte。SpiFlashOpResult
4、system_param_save_with_protect
bool system_param_save_with_protect (
uint16 start_sec,
void *param,
uint16 len
)
uint16 start_sec
:读写保护机制使⽤的 3 个 sector 的起始 sector 0 值。IOT_Demo
中可使⽤ 0x3D000 开始的 3 个 sector(3×4 KB)建⽴读写保护机制,则参数 start_sec
传 0x3D。 • void *param:写⼊数据的指针uint16 len
:数据⻓度,不能超过 1 个 sector ⼤⼩,即 4×10245、system_param_load
bool system_param_load (
uint16 start_sec,
uint16 offset,
void *param,
uint16 len
)
uint16 start_sec
:读写保护机制使⽤的 3 个 sector 的起始 sector 0 值。void *param
:读取数据的指针uint16 len
:数据⻓度,不能超过 1 个 sector ⼤⼩,即 offset+len ≤ 4*10246、spi_flash_erase_protect_enable
bool spi_flash_erase_protect_enable(void)
7、spi_flash_erase_protect_disable
bool spi_flash_erase_protect_disable(void)
向外部FIash [0x77 000]地址起【写入"1~16"】
从外部FIash [0x77 000] 地址起,读出16个数据
//宏定义
#def ine ProjectName "Flash" // 工程名宏定义
//全局变量
u16 N_ Data_ FLASH_ SEC = 0x77; //存储数据的扇区编号
u32 A_ W_ Data[16] = {1,2,3,4,5,6,7,8,9, 10, 11,12, 13, 14, 15, 16}; // 写入Flash的数据
u32 A_ R_ Data[16] = {0}; //缓存读F lash的数据
void ICACHE_ FLASH_ ATTR user_ init (void)
{
u8 C_loop = 0;
uart_ init(115200, 115200); // 初始化串口波特率
os_ delay_ us (10000) ;//等待串口稳定
os_ printf("\t Pro ject: \t%s\r\n",Pro jectName) ;
os_ pr intf("\t SDK version:\t%s", system_ get_ sdk_ _version()) ;
//向[0x77 000]地址起,写入16个数据(每个数据占4字节)
spi_ flash_ erase_ sector (0x77); // 擦除0x77扇区 参数== [扇区编号]
//向Flash写数据(参数1= [字节地址不、参数2=写入数据的指针(无符号32位整型指针、参数3=数据长度)
spi_ flash_ _wr ite (0x77*4096, (uint32 *)A_ W_ _Data, sizeof(A_ W_ _Data)) ;
//从[0x77 000] 地址起,读出16个数据(每个数据占4字节)
spi_ flash_ read (0x77*4096,(uint32 *)A_ R_ Data, sizeof(A_ W_ Data));
//串口打印读出的数据
for (C_ loop=0; C_ loop<16; C_ loop++)
{
os_ printf("Read Data = %d \r\n",A_ R _Data[C_ loop]) ;
delay_ ms(10) ;
}