• 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 Esp8266之 搭建开发环境,开始一个“hellow world”串口打印。
2、 Esp8266之 利用GPIO开始使用按钮点亮你的“第一盏灯”。
3、 Esp8266之 利用 "软件定时器 " 定时0.5秒闪烁点亮一盏LED。
4 、Esp8266之 了解PWM,更为深入地用PWM控制一盏LED的亮度变化。
5 、Esp8266之 原生乐鑫SDK高级使用之封装Post与Get请求云端,拿到“天气预报信息”。
6 、Esp8266之 了解 SmartConfig与Airkiss一键配网,给8266配网上云端。无需把wifi名字密码写在固件里。
7 、Esp8266之 了解 softAP热点配网模式原理,仿“机智云”定义自己的热点配网模式协议。
8、 Esp8266之 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。
9、 Esp8266进阶之路第1篇: [小实战上篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
10、 Esp8266进阶之路第2篇: [小实战下篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
11、 Esp8266进阶之路第3篇: 8266接入阿里智能,点亮一盏LED灯,期待天猫精灵语音控制的不约而至!
12、 Esp8266进阶之路第4篇: 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏LED。
13、 Esp8266进阶之路第5篇: 动手做个8266毕设小案例,smartConfig + MQTT协议轻松实现远程控制一盏LED。
14、 Esp8266进阶之路第6篇: esp8266的 FreeRtos系统学习的正确姿势 ------ 环境搭建、烧录。
15、 Esp8266进阶之路第7篇: esp8266的 物联网又一股清流,8266接入阿里云平台非阿里智能的SDS服务,点亮一盏LED灯。
16、 Esp8266进阶之路第8篇: esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。
17、 Esp8266进阶之路第9篇: esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。
18、 Esp8266进阶之路第10篇: esp8266 基于NONOS 实现 OTA 远程升级,实现无线“ 热修复 ”升级固件程序。
19、 Esp8266进阶之路第11篇: esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。
20、 Esp8266进阶之路第12篇: 深入学习esp8266的esp now模式,仿机智云做一个小网关,实现无需网络下轻松彼此连接通讯交互数据。
21、 Esp8266进阶之路第13篇: 浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。
22、 Esp8266进阶之路第14篇: esp8266的工程如何添加第三方静态库文件以及如何自定义文件夹,聊聊那些makeFile的事。。
23、 Esp8266进阶之路第15篇: 再来一波 esp8266 基于 freeRtos系统连接自己私有的服务器实现OTA远程升级,接触下 lwip的基本知识。。
24、 Esp8266进阶之路第16篇: 渗透学习回顾下esp8266的外置spi芯片25q系列,熟悉8266代码块在其的分布,得心应手放置图片或其他资料。
25、 Esp8266进阶之路第17篇: 深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。
26、 Esp8266进阶之路第18篇: RTOS分析 MQTT 实现过程,实现移植 MQTT协议在 esp8266 rtos实时系统,可断线重连。
27、 Esp8266进阶之路第19篇: 跟紧脚步,用VisualStudio Code开发 esp8266 rtos SDK v3.0版本,全新的 idf 框架,节省内存模块化开发。
28、 Esp8266进阶之路第20篇: 教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。
29、 Esp8266进阶之路第21篇: 百万条消息免费之乐鑫esp8266使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接支持阿里云规则引擎。
30、 Esp8266进阶之路第22篇: 乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。
31、 Esp8266进阶之路第23篇: 当esp8266遇到 Html,该怎么内置网页控制设备,理清内置网页的实现过程,实现无需路由器手机也可以控制esp8266。
32、 Esp8266进阶之路第24篇: 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。
33、 Esp8266进阶之路第25篇: 如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
34、 Esp8266进阶之路第26篇: 乐鑫esp8266 NONOS SDK 3.0编程使用 SPI 驱动基于Max7219芯片的八位数码管,显示日期信息。
35、 Esp8266进阶之路第27篇: 乐鑫esp8266芯片借助机智云平台做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚。
36、 Esp8266学习rtos3.0笔记第1篇: 认识esp8266 Rtos 3.0 sdk 工程结构,esp8266如何向esp-idf工程靠近的,如何自定义头文件编译?
37、 Esp8266学习rtos3.0笔记第2篇: 你要找的基本外设功能都在这里了,包括Gpio、Pwm 和 Uart 接口使用。
38、 Esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。
39、 Esp8266学习rtos3.0笔记第4篇: 带你捋一捋市面上的微信公众号配网智能设备 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。
40、 Esp8266学习rtos3.0笔记第5篇: 基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架!支持esp8266和esp32!
41、 Esp8266学习rtos3.0笔记第6篇: esp8266-12模块基于rtos3.1版本ota功能远程空中升级固件,官网基础之上增加dns域名解析!


  • 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:

玩转esp8266带你飞、加群付费QQ群,提高门槛,不喜的朋友勿喷勿加:434878850
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32

文章目录

  • 一、前言;
  • 二、认识 flash 分布;
  • 三、配置好远程固件下载的信息;
    • 第一步:拷贝一份官方示范到自己的文件夹;
    • 第二步:切进去修改远程的文件配置等;
  • 四、配置好芯片信息;
  • 五、升级过程概述;
  • 六、部分代码概述;
  • 七、其他;
    • 7.1 注意事项;

一、前言;


在人生的道路上,有很多十字路口,而最重要的,可能就那么一两条 。 这个是我最近看的《老师,好》电影里面一个经典台词。当第二次被邀请到乐鑫工作,我内心是热血狂澜的。但由于所处环境的和个人的本身原因,不得不放弃这个邀请。既然放弃了这个念头,那么就要好好地做好当前的工作,到人生后某一天想起,我也有信心勇气说起不负当年的决定。


当身边都是优秀的人,你也不得不被感染!他们接受新事物快,动手能力强,基础扎实,善于思考!大公司小公司都是需要这样的人才,所以为什么招聘高学历的人!qq群的大多数人的提问,让我不得不反思当前一个问题:不善于思考,这是个从小灌输的学习思想!如何去解决技术问题? 就拿我的qq群里面的群友来说,喜欢一上来就拿着工程去跑,比较多的问题是:编译失败,跑不通,连接服务器不成功!这类问题一般是对基础不扎实!


“前人种树后人乘凉”,我在 GitHub 或者这博客里面,放了很多的代码,里面的案列都是我亲手跑通才放上去的,这就是前人种树!但是 后人乘凉 ,需要你一个健全的人,一个可以把基本环境搭建好,把每个SDK版本的区别总体认识,最基础的是要有单片机入门基础!


总的来说,劝告那些在校大学生或者已就业的朋友,在开发单片机不管遇到什么问题,第一时间,看芯片log打印信息分析,此log绝大部分可以分析出处于什么问题才会这样的现象!包括我接触的 JavaScript 小程序、Android开发app,php服务器对接天猫精灵,都是喜欢打 log ,不断调试思考哪里问题!这都是作为一个标准程序员的技能!


最后说一句,以后大家提问题,一定要说明当前的硬件环境,sdk版本,代码截图,现象说明,日志打印信息!提问语气友好!不管在哪里,这样的提问方式,绝对让对方感到你虚心好学的态度。


二、认识 flash 分布;


以下的讨论都是基于 支持 ota 分区来说的,并非single factory app


3.0的版本,esp32esp8266的内存分布都是一样的,就拿我们的esp8266-12f模块来说,如下图片,我们一层层说下(全部手写,非翻译而来):


  1. 前面已经说到了 NVS是乐鑫自研的类似数据库的存储机制的 flash 操作技术,其位置大家在下面都可以看到了!
  2. PartitionTable 是分区表,字面意思是 每个用户编写的应用程序的位置定义。
  3. pyh_init就是 rf射频相关的了!
  4. coredump 是程序跑飞异常时候保存log信息的位置,这个在esp32有提到怎么使用,目前在 esp8266 是没提到的;
  5. ota-0ota-1 大家都应该看的懂了就是升级后的2个程序存储位置。
  6. factory app 就是初次烧录的用户程序的位置了!
  7. not use就是并没使用的部分,大家可以在这里存储自己的东西,比如字库!


还有另外几点我需要补充的是:

  • 这个分区并不是一味不变的,大家可以自定义的。换句话说,我可以自定义存储位置以及其存储大小,一般对于初学者来说别修改,否则会让你的程序跑不起来的!默认的采用分区文件是在:ESP8266_RTOS_SDK/components/partition_table/partitions_two_ota.csv

  • 这个存储的地方在哪里的呢?当有人问你的时候,别说存储在 esp8266芯片里面的,其实是在 它接的一个 flash 芯片上的,比如下面的 25q32 ;

  • not use部分的存储可以在代码读取出来,同样地,我们也可以通过 espTools 提供的工具把 数据转存为 NVS 数据格式存储在 NVS 位置,这个我以后会提到!


三、配置好远程固件下载的信息;


第一步:拷贝一份官方示范到自己的文件夹;


为什么要拷贝一份官方示范?因为我不喜欢动官方的源码,一方面为了对比自己后面修改的代码,二是可以直接pull官方最新的代码不发生冲突!这是我个人习惯!或者你直接进去其文件夹配置就好了,我的是基于 rtos3.1版本的,其路径是:

..\ESP8266_RTOS_SDK\examples\system\ota

第二步:切进去修改远程的文件配置等;


切进去后 make menuconfig , 找到 Example Configuration,其每项如下所示,具体输入看实际而定!

注意:如果你是直接使用官网的代码,下面的服务器地址只能是ip地址,如果你是用我下面提供的,必须是域名哈!


四、配置好芯片信息;


esp8266 的ota 不管在 哪个 SDK 版本,都是需要配置芯片信息的,3.0版本之前是在Makefile文件配置,但是 3.0 之后是在 shell 窗口打开make menuconfig 配置的!操作如下动态图所示:

 -->Partition Table--> Partition Table (选择第二个表示支持ota,采用默认的分区) --> Partition Table Offset set (输入0x8000就是上面说的分区表位置)


  • 注意看我的 烧录配置,尤其注意flash设置为 2MB !


五、升级过程概述;


这部分没啥好讲的,和 2.0 那些代码过程都是一样的!下面贴出我之前写的 一个博文链接,可以加深理解其过程:https://blog.csdn.net/xh870189248/article/details/80095139


六、部分代码概述;


  • 为了区分其固件版本,我加了一个宏表示当前版本定义,下面表示是 1.0 版本 :
#define  FW   "V1.0"

  • 在官网的基础上,我并没修改什么代码,仅仅加了下面的dns解析我们的域名:

static int connect_to_http_server()
{ESP_LOGI(TAG, "Server IP: %s Server Port:%d", EXAMPLE_SERVER_IP, EXAMPLE_SERVER_PORT);int ret;struct addrinfo hints, *addr_list, *cur;struct sockaddr_in serverAddr;memset(&hints, 0, sizeof(hints));hints.ai_family = AF_UNSPEC; // Allow IPv4 or IPv6hints.ai_flags = 0;hints.ai_protocol = 0;hints.ai_socktype = SOCK_STREAM;//域名解析得到ip地址ret = getaddrinfo(EXAMPLE_SERVER_IP, NULL, &hints, &addr_list);if (ret != 0){printf("DNS parsing failed!\r\n");return -1;}for (cur = addr_list; cur != NULL; cur = cur->ai_next){char ip[128];inet_ntop(AF_INET, &(((struct sockaddr_in *)cur->ai_addr)->sin_addr), ip, 128);printf("DNS IP: %s  \r\n", ip);socket_id = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字描述符if (socket_id < 0){ret = -1;printf("socket created failed!\r\n");continue;}bzero(&serverAddr, sizeof(struct sockaddr_in)); // 清零serverAddr.sin_family = AF_INET;//这个是设置ip地址serverAddr.sin_addr.s_addr = inet_addr((const char *)ip);//serverAddr.sin_addr.s_addr = inet_addr((const char*)("192.168.1.124"));serverAddr.sin_port = htons(EXAMPLE_SERVER_PORT); if (connect(socket_id, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) == 0){printf("connect server success!\r\n");ret = 0;break;}else  {printf("error = %d\r\n", errno); // #define EHOSTUNREACH 113 // No route to host 无法路由到主机}close(socket_id);ret = -1;}if (cur == NULL)ret = -1;freeaddrinfo(addr_list);return ret;
}

  • 我们在程序入口加如打印当前的版本:
    //打印版本ESP_LOGI(TAG, "Version : %s", FW);

七、其他;


7.1 注意事项;


  1. 每次手动烧录固件,请先make erase_flash,因为这样可以清除所有的信息,保证程序读取是在 factory app 区域!再烧录make flash
  2. 确保你的服务器上的固件地址正常访问,是http 请求访问,不是 https 哈!!!
  3. 为了区分是否正确ota升级,先修改下固件版本,比如v1.1,放去服务器,再修改低版本的通过本地烧录到硬件去。
  4. 放到服务器的固件本地位置是在编译后的 build文件夹下的ota.bin文件哈!
  • 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:

玩转esp8266带你飞、加群付费QQ群,提高门槛,干货多多,不喜的朋友勿喷勿加:434878850
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32


  • 下面是我动态录制的 gif 图片,正常运行即使为这样示范:
  • 本博文硬件代码工程下载:https://download.csdn.net/download/xh870189248/11171459

乐鑫esp8266学习rtos3.0笔记第6篇:esp8266-12模块基于rtos3.1版本ota功能远程空中升级固件,官网之上增加dns域名解析!(附带demo)相关推荐

  1. 乐鑫Esp32学习之旅 22 讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等,附带Demo;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  2. 乐鑫esp8266学习rtos3.0笔记第11篇:详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  3. 乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

  4. 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  5. 乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于C SDK的ESP8266开发技术全系列笔记 一.N ...

  6. 乐鑫esp8266学习rtos3.0笔记第5篇:基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架,支持esp8266和esp32!(附带链接)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

  7. 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  8. 乐鑫esp8266学习rtos3.0笔记第4篇:带你捋一捋微信公众号 airkiss 配网 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  9. 乐鑫esp8266学习rtos3.0笔记:仅1M flash 的安信可 ESP-01S 模块,如何二次开发?如何对其 OTA 远程升级固件!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

最新文章

  1. thymeleaf+layui 展示table 报500
  2. mysql 隐式失误_评“MySQL 隐式转换引起的执行结果错误”
  3. RxJava2 / RxAndroid2的merge操作合并多个Observable
  4. 【响应式Web前端设计】H5原生表单验证
  5. 各种视频编码器的命令行格式
  6. 使用反射处理protobuf数据结构
  7. 铁钉的blog地址 http://nails.blog.51cto.com
  8. python程序员专用壁纸_代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
  9. matlab导入txt生成曲面,求助:怎样将txt的数据导入到Matlab中并根据参数画出波形...
  10. Rhel5 之NTP服务配置
  11. EXCEL的底层实现
  12. 从底层来看函数的调用和返回
  13. python学习手册-python学习手册第5版pdf
  14. Java程序员职业规划
  15. 【ML】线性分类器和非线性分类器的区别
  16. Matlab中滤波操作的相关函数
  17. iView的表格做一个带斜线的表头
  18. python时间序列进行线性插值_精解Python实现线性插值法——一看就会
  19. 数仓指标体系--建设方法
  20. 【Linux】【操作】Linux操作集锦系列之三——进程管理系列之(一) 进程信息查看

热门文章

  1. charles设置:抓取小程序的请求包
  2. 2021年电工(初级)考试及电工(初级)考试资料
  3. 【进制转换】十进制到二、八、十六进制
  4. 应用噪声函数制作火焰特效
  5. Python知识冲顶大会
  6. 计算机应用基础论坛贴子怎么发,大家请进·帮助小弟·计算机应用基础
  7. Flex AS3数据类型转换成Fluorine数据类型
  8. 【机器学习】集成学习—Boosting—GBM(Gradient Boosting Machine)解析
  9. 测试人员如何进行需求评审
  10. TokenGazer《一问到底》第54期:研究员 vs Bision