学习ESP8266_15_Flash
1、ESP8266-12F的Flash
ESP8266-12F的Flash共4M字节。【4096K字节】
根据手册,一个扇区大小:4096字节。
共有(4096*1024/4096)=1024=0x400个扇区,扇区地址0~0x3FF.
2、Flash布局
可以对Flash进行读写,但是要注意地址,不要用到有用的范围喽~
下图是不支持云端升级版本的Flash布局,我们可以用的就是“用户数据”这一区域。
那么具体来说,这几个部分的范围是多少呢?
我圈起来的就是ESP8266-12F模组对应的那一行。
再结合bin文件的下载地址,就可以得到最后一列,各bin文件的扇区编号范围。
因此,安全的用户数据区域,扇区是从208~1018,一共811个扇区,3244K字节。
bin文件 | 32Mbit下载地址 | 扇区 |
---|---|---|
eagle.flash.bin | 0x00000 | 0~15 |
eagle.irom0text.bin | 0x10000 | 16~207 |
blank.bin | 0x3FB000 | 1019 |
esp_init_data_default.bin | 0x3FC000 | 1020~1021 |
blank.bin | 0x3FE000 | 1022~1023 |
最后那几个扇区,与上图Flash布局有些许出入,估计是因为SDK版本问题导致的?欢迎留言。
2、API
主要是以下三个API,读、写、以及写之前的扇区擦除。
API是以32位,也就是4字节为数据类型,请让Flash读写是4字节对齐操作。
2.1、读-spi_flash_read
2.2、擦除-spi_flash_erase_sector
- 写Flash之前需要擦除。
- 参数是扇区号,不是内存地址。
2.3、写-spi_flash_write
3、代码&ESP8266的大小端模式
u8 read_buff[64];
u32 write_buff[16]={1,2,3,4,5,6,7,8, 9,10,11,12, 13,14,15,16};void ICACHE_FLASH_ATTR user_init(void)
{u8 i;uart_init(115200,115200);my_delay_ms(1000); //等待串口稳定,避免起始数据错误system_soft_wdt_feed(); //喂狗,防止复位spi_flash_erase_sector(0xFF); //擦除扇区spi_flash_write(0xFF*4096,(uint32 *)write_buff,16*4); //写16个32位数据spi_flash_read(0xFF*4096,(uint32 *)read_buff,16*4); //读16个32位数据for(i=0;i<16;i++){ //打印读出来的数据,8位数据格式os_printf("\r\nwrite[%d]=%d,read[%d]=%d\r\n",i,write_buff[i],i,read_buff[i]);my_delay_ms(10);}
}
串口输出结果如下,可以看到u32类型的1、2、3、4在内存中存放的顺序。
ESP8266为小端模式。
大端?小端?
从低地址到高地址,横着写出来,你一读就对的是大端,不符合我们习惯的是小端。(大端—大众、小端—小众,我是这样记的~)
比如这个read数组,前4的是"1000",而实际应该是1,不符合习惯,故为小端。
P.S.小端:低地址存放数据的低字节;
学习ESP8266_15_Flash相关推荐
- java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...
- FastAI 课程学习笔记 lesson 1:宠物图片分类
文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...
- 深度学习学习指南-工具篇
colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...
- Redis学习之路(一)--下载安装redis
redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- 前端Vue学习之路(一)-初识Vue
Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...
最新文章
- fastjson解析json简介
- Java中getResourceAsStream的用法小结
- objective-c 2.0编程语言,Objective-C 2.0程序设计(原书第2版) 中文PDF扫描版[15MB]
- XCTF(攻防世界)—新手web题Write Up
- vue项目接口地址暴露_vue项目打包后可以配置接口地址的方法
- boost::type_erasure::add_assignable相关的测试程序
- c语言释放整个链表,最简单的链表删除第一个节点时释放内存的问题
- 语法分析与中间代码生成
- SpykeTorch: Efficient Simulation of Convolutional Spiking Neural Networks With at Most One Spike per
- 《引爆点》读书笔记(一)
- 惊呆了!被公司辞退拿了22万补偿金,原东家称每月涨薪7000,只要退还22万
- 奖励名单表格模板_“我用一套表格,解决了孩子的拖延症,一路用到小学高年级!”...
- java 导出文件上传模板,上传Excel文件批量导入数据
- python magic_method
- win 8.1 安装framework3.5
- html文件转为其他格式文件格式,HTML文件转Word文件格式
- JAVA导出txt文件
- java poi 设置标题_java POI操作word2010简单实现多级标题结构
- iOS动态库重签名步骤
- 解密阿里云大规模深度学习性能优化实践