ESP8266_NONOS_SDK开发环境搭建及验证

2023-05-16

ESP8266_NONOS_SDK开发环境搭建及验证

    • 视频教程:
    • 芯片资料
      • 芯片:ESP8266EX
      • 模组:ESP-12F
      • 开发板:NodeMCU
    • 启动模式
    • 安装AiThinkerIDE
      • 编译报错问题No rule to make target 'all'.
      • 手把手教你搭建安信可开发环境,编译源码、烧录固件到ESP8266
    • 烧录
      • 查看user_main.c代码及SPI_FLASH_SIZE_MAP问题
      • 烧录小结:
      • 修改代码测试
  • NodeMCU固件烧录及测试
      • 定制固件
      • 烧录
      • 调试lua

视频教程:

技小新-视频教程,在哔哩哔哩可以免费观看了
已学习《物联网教程_13_UART.mp4》
物联网开发板-ESP8266
相关网站:技新网 立创开源硬件 立创商城 立创EDA(lceda.cn)

小马哥ESP8266基于乐鑫官方SDK裸机开发开发入门教程(DragonFly四轴飞行器课程配套) 介绍了具体方法。

芯片资料


芯片:ESP8266EX

是Tensilica L106 32位 RISC 处理器 厂家乐鑫 官网:https://www.espressif.com
ESP8266EX技术规格书 0a-esp8266ex_datasheet_cn.pdf
ESP8266 NONOS SDK 最新版V3.0.2(已停止更新),另外有RTOS SDK
Flash 下载工具(ESP8266 & ESP32 & ESP32-S2)

模组:ESP-12F

​ 加了4MB的SPI Flash、晶振、天线、LED灯并引出引脚,厂家安信可 官网: https://www.ai-thinker.com
​ 各模组比较,文档、固件、SDK、对接云平台教程、等资源 https://docs.ai-thinker.com/esp8266
​ 工具汇总 https://docs.ai-thinker.com/tools 包含windows版本的“SDK一体化开发环境”,但是没有找到使用指南。

开发板:NodeMCU

PDD上买的大板,无厂家标记,增加了CH340/ASM1117,左右各有15各引脚,可以直接USB刷固件,有reset和flash按钮。
​ 根据老板提供的《ESP8266 CH340原理图.jpg》:
​ esp8266,内部封装了,可以不用关注。
​ Power部分:ASM1117实现了5V的USB口到3.3V的转换。
​ USB to UART部分:miniUSB通过CH340实现了自动编程电路。
​ IO-PIN部分:开发最重要的外部接线说明,左右各15各引脚。

ESP8266 快速入门指南 – 了解
https://www.espressif.com/sites/default/files/documentation/esp8266_quick_start_guide_cn.pdf
开发环境:基于虚拟机 VirtualBox 的 Lubuntu 镜像
包含:附录—学习资源

启动模式

程序运行模式3–按reboot
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
程序下载模式1–按住flash按钮,然后按下reboot并松开,再松开flash。
ets Jan 8 2013,rst cause:2, boot mode:(1,7)

重新刷入安信可的出厂默认AT固件
特性:一条指令即可连接到安信可云服务,操作简单,任何mcu均可直接接入
下载地址: ai-thinker_esp8266_at_firmware_dout_v1.5.4.1-a_20171130.rar
有多个bin文件,但是没有说明写入哪个地址,无法刷入

安装AiThinkerIDE

安装后点击开始菜单的AiThinkerIDE_V1.0图标,出现1个welcome 和1个Goodbye窗口,无运行界面。

老的0.5版本 AiThinkerIDE_V0.5_Setup.exe 提取码:xfzs

最新版本1.5 安信可windows一体化环境IDE V1.5 版本降临,体积更小,兼容新旧版本SDK编译

Esp8266—SDK—固件烧录—个人反思

编译报错问题No rule to make target ‘all’.

ide安装了2遍都无法编译,直接运行的eclipse.exe,导入工程,编译报错:
console窗口
make: *** No rule to make target ‘all’. Stop.
Problem窗口

Description	Resource	Path	Location	Type
make: *** No rule to make target 'all'.  Stop.	ESP8266_NONOS_SDK		 	C/C++ Problem

安信可邮件回复,建议升级最新的1.5版本。

手把手教你搭建安信可开发环境,编译源码、烧录固件到ESP8266

参考资料:【安信可IDE教程专题 ①】手把手教你搭建安信可开发环境,编译源码、烧录固件到ESP8266。

原创 Ai-Thinker-徐宏 [ 安信可科技 ] 2月18日

第7遍导入项目,“在Properties --> C/C++ Build --> Build directory 选择编译的工程路径,比如根目录下的 IoT_Demo工程。”
在这个步骤直接啥都不修改,编译成功。

D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\opt\arm-nono-eabi-gcc\bin\xtensa-lx106-elf-ar.exe: creating .output/eagle/debug/lib/libdriver.a
make[2]: Leaving directory '/home/aithinker/ESP8266_NONOS_SDK/IoT_Demo/driver'
xtensa-lx106-elf-gcc  -L../lib -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -Wl,--gc-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lcrypto -lmain -ljson -lupgrade -lssl -lpwm -lsmartconfig user/.output/eagle/debug/lib/libuser.a driver/.output/eagle/debug/lib/libdriver.a -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out 

!!!
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin.
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000
!!!
make[1]: Leaving directory '/home/aithinker/ESP8266_NONOS_SDK/IoT_Demo'

16:24:05 Build Finished (took 21s.286ms)
Build directory 默认的工程路径 ${workspace_loc:/ESP8266_NONOS_SDK}/ 实际上是
D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\home\aithinker\ESP8266_NONOS_SDK\IoT_Demo
这个目录下要存在Makefile文件。

烧录

生成文件目录

​ D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\home\aithinker\ESP8266_NONOS_SDK\bin

参考《2a-esp8266-sdk_getting_started_guide_cn.pdf》

根据Flash布局的图和描述,2个分区格式的第一个后最后3个分区地址是一样的。

4.1.2. 下载地址
表 4-2. Non-FOTA 的下载地址(单位:KB)
对于4096KB=32Mbit
eagle.flash.bin 0x00000 各容量相同
eagle.irom0text.bin 0x10000 各容量相同
blank.bin 0x3FB000
esp_init_data_default.bin 0x3FC000
blank.bin 0x3FE000

先按照Non-FOTA烧录,注意一定要勾选文件前面的框,先擦除erase,再烧录start

–这里对比参考书的表格里的数据时搞错了,导致下面的报错

使用putty连接串口,默认的打印波特率 为 74880 ,按板子的reset按键,串口打印

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 28100, room 16
tail 4
chksum 0x51
load 0x3ffe8000, len 3384, room 4
tail 4
chksum 0xab
load 0x3ffe8d40, len 4104, room 4
tail 4
chksum 0x9d
csum 0x9d
mismatch map 6,spi_size_map 4
system_partition_table_regist fail

oled屏还是显示这hello world。

表 4-4. FOTA 的下载地址(单位:KB)

对于4096KB=32Mbit
boot.bin 0x00000 实际为eagle.flash.bin
user1.bin 0x01000 实际为eagle.irom0text.bin
user2.bin 0x81000(512+512) 0x101000(1024+1024) 无需下载
blank.bin 0x3FB000
esp_init_data_default.bin 0x3FC000
blank.bin 0x3FE000
无变化

不勾选blank.bin 0x3FB000,选择Flash Size为32Mbit-C1,擦除、烧录、重启。


 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 28100, room 16
tail 4
chksum 0x51
load 0x3ffe8000, len 3384, room 4
tail 4
chksum 0xab
load 0x3ffe8d40, len 4104, room 4
tail 4
chksum 0x9d
csum 0x9d
rf cal sector: 1019
freq trace enable 0
rf[112] : 00
rf[113] : 00
rf[114] : 01
w_flash

SDK ver: 3.0.1(78a3e33) compiled @ Jul 15 2019 17:20:05
phy ver: 1145_0, pp ver: 10.2

SDK version:3.0.1(78a3e33)
IOT VERSION = v1.0.5t45772(a)
reset reason: 6
LIGHT PARAM: R: -1
LIGHT PARAM: G: -1
LIGHT PARAM: B: -1
LIGHT PARAM: CW: -1
LIGHT PARAM: WW: -1
LIGHT PARAM: P: 1000
malloc:1
prd:1000  r : 22222  g: 22222  b: 22222  cw: 22222  ww: 22222
free:0
PWM version : 00000003
mode : sta(10:52:1c:ef:b8:8a) + softAP(12:52:1c:ef:b8:8a)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
finish

除了mode行的sta和softAP和文档不同外,其他都相同。

烧录成功,oled屏还是显示hello world,arduino的代码顽强的运行着,重启后屏不亮。

查看user_main.c代码及SPI_FLASH_SIZE_MAP问题

根据串口打印“system_partition_table_regist fail”可以看到user_pre_init初始化函数调用system_partition_table_regist时执行失败了

查看编译中的error报错,
Description Resource Path Location Type
Symbol ‘SPI_FLASH_SIZE_MAP’ could not be resolved user_main.c /ESP8266_NOSPI_FLASH_SIZE_MAPNOS_SDK/examples/IoT_Demo/user line 94 Semantic Error

结合手册《2c-esp8266_non_os_sdk_api_reference_cn.pdf》的system_partition_table_regist要求:

flash map;必须与编译烧录时选择的 flash map ⼀一致,否则将会启动异
常;建议直接传⼊入宏 SPI_FLASH_SIZE_MAP,它是系统在编译时记录的 flash map 值。

在37行增加SPI_FLASH_SIZE_MAP宏定义,结合我们实际的烧录地址对比,都不能完全匹配,最多能匹配的十和6,就选4吧。

#define SPI_FLASH_SIZE_MAP 4

重新编译前面error错误了,出现新的warnning告警,提示新增的size-map重复了

​ user_main.c:37:0: warning: “SPI_FLASH_SIZE_MAP” redefined

参考之前的指导书可以看到 SPI_SIZE_MAP=6 是在编译规则里面带进来的,所以应该去掉这个宏定义。

​ 选择Properties --> C/C++ Build --> Build command 中添加编译规则,当前硬件是 32Mbit的模块,所以这样填:( make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6 );

但是去掉宏定义又会出现error,把编译规则去掉了SPI_SIZE_MAP=6,重新烧录2个文件后,串口打印正常,电脑连接wifi后ping 8266地址正常。

此时打开网页http://192.168.4.1/是空白的,这其实说明网页服务也是正常的。

另外有8个warning告警,忽略。

Description	Resource	Path	Location	Type
Description	Resource	Path	Location	Type
implicit declaration of function 'user_esp_platform_init' [-Wimplicit-function-declaration]	user_main.c	/ESP8266_NONOS_SDK/IoT_Demo/user	line 122	C/C++ Problem
Invalid project path: Include path not found (\usr\include).	ESP8266_NONOS_SDK		pathentry	Path Entry Problem
... 6个路径错误

另外把example目录上移了一级目录。

烧录小结:

​ 如果不是OTA时,软件应该写入0和0x10000处; 可以只烧录这2个文件,可以不擦除

​ 而支持OTA时写入boot到0处且软件到0x1000处,注意这里少1个0。

ESP12需要选择6 32Mbit-C1,新的SDK3.0已经去掉了512K+512K的模式,这在乐鑫RTOS的readme资料有说明。

如果其他系统参数(最后3个分区的bin文件)被损坏,可以按照下面一章《NodeMCU固件烧录及测试》进行烧录来恢复。

修改代码测试

在user_main.c文件的子函数user_init(void)中修改

这里不小心输入的中文句号也正常打印了。

    // Add test code here
    os_printf("\nBegin test mychar。。。\n");
    char myName;
    myName='B';
    os_printf("myName is %c\n",myName);
    os_printf("\nhello Here!\n");
编译,烧录(未擦除),复位,串口打印
PWM version : 00000003 

Begin test mychar。。。
myName is B

hello Here!
mode : sta(10:52:1c:ef:b8:8a) + softAP(12:52:1c:ef:b8:8a)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
finish

建议客户使用新版 ESP8266_RTOS_SDK。 https://github.com/espressif/ESP8266_NONOS_SDK


NodeMCU固件烧录及测试

定制固件

到网站https://nodemcu-build.com输入邮箱,全部默认会报错,定制固件时只勾选了MQTT

烧录

收到邮件的内容
Your NodeMCU custom build finished successfully. You may now download the firmware:

  • float: https://nodemcu-build.com/builds/nodemcu-master-8-modules-2020-09-12-09-25-40-float.bin
  • integer: https://nodemcu-build.com/builds/nodemcu-master-8-modules-2020-09-12-09-25-40-integer.bin

This was built against the master branch and includes the following modules: file, gpio, mqtt, net, node, tmr, uart, wifi.
The files are guaranteed to be available for download for 24h.

I invite you to try my standalone desktop tool to flash firmware binaries: https://github.com/marcelstoer/nodemcu-pyflasher

Learn how to flash the firmware: https://nodemcu.readthedocs.io/en/master/en/flash/. If you’re upgrading from a previous version you should carefully study the “Upgrading Firmware” instructions on that page.

Please help keep this service alive: http://nodemcu-build.com/faq.php#support

下载烧录工具:NodeMCU-PyFlasher-4.0-x86.exe
https://github.com/marcelstoer/nodemcu-pyflasher/releases
插入nodemcu到usb口,
刷新选择端口COM5,
固件选择刚才下载的nodemcu-master-8-modules-2020-09-12-09-25-40-float.bin
默认波特率115200,
Flash mode,默认Dual I/O(DIO) (红色i提示选择方法,比如ESP12是DIO)之前用其他工具烧录的时候可能都没有选对。
Erase flash选择yes,wipes all data
Flash NodeMCU按钮开始刷固件
Console窗口打印

Command: esptool.py --port COM5 --baud 115200 --after no_reset write_flash --flash_mode dio 0x00000 D:\迅雷下载\ESP8266\nodemcu-build资料\nodemcu-master-8-modules-2020-09-12-09-25-40-float.bin

esptool.py v2.6
Serial port COM5
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 10:52:1c:ef:b8:8a
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 462848 bytes to 302014...
Wrote 462848 bytes (302014 compressed) at 0x00000000 in 26.8 seconds (effective 138.4 kbit/s)...
Hash of data verified.

Leaving...
Staying in bootloader.

Firmware successfully flashed. Unplug/replug or reset device 
to switch back to normal boot mode.

根据提示插拔或者复位设备。
设备管理器中的COM口时有时无,最终win10出现一次蓝屏死机

调试lua

wifi连接到ESP-XXXXXX正常

工具 ESPlorer V0.2.0-rc3

选择115200,Open,然后在右侧窗口依次点击

底部的Chip info,Chip ID,Flash ID;右侧FS info

PORT OPEN 115200

Communication with MCU...
Got answer! AutoDetect firmware...
Communication with MCU established.
NodeMCU firmware detected.
=node.heap()
> =node.info()
Warning, deprecated API! node.info() without parameter. It will be removed in the next version. See documentation for details.
3	0	0	15710346	1458208	4096	2	40000000
> =node.chipid()
15710346
> =node.flashid()
1458208
> 
Total : 3509482 bytes
Used  : 0 bytes
Remain: 3509482 bytes

使用串口工具SSCOM3.3以115200速率连接

AT
>> AT
Lua error: 	stdin:2: '=' expected near 'AT'
> print(node.info'hw'.flash_size)
4096
> 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266_NONOS_SDK开发环境搭建及验证 的相关文章

  • 【ROS入门】双系统安装和ros安装踩坑

    记录一下安装Ubuntu双系统和和ros过程中踩的坑 xff0c 防止下次再犯错 一 双系统安装与删除 双系统的安装比一开始想的说实话要简单得多 xff0c 随便用u盘制作一个系统安装盘 xff0c 或者在u盘里面放需要的Ubuntu镜像
  • 【ROS入门】TF与URDF

    一 什么是TF TF全程就是transform xff0c 就是一个坐标系的转换 在ROS中坐标的转换是一个很重要的内容 xff0c 主要还是因为机器的不灵活性 xff0c 如果是人 xff0c 完全可以灵活地控制手臂去抓取一个物体 xff
  • 树莓派3B+——系统安装及显示

    树莓派3B 43 系统安装及显示 目录 树莓派3B 43 系统安装及显示系统安装显示显示器显示3 5寸显示屏显示pc显示 树莓派3B 43 系统安装及显示 初次接触树莓派 xff0c 花了差不多一天的时间把系统的安装和显示全部搞定 xff0
  • VSLAM 相关知识点总结

    VSLAM 相关知识点 这篇文章是对VSLAM涉及的知识点进行系统性的总结和更新 xff0c 一些内容来源至VSLAM经典教材 xff0c 博客 xff0c 和开源项目 引用材料如下表 SLAM十四讲高博古月老师的技术博客崔神的github
  • Windows下CLion中文乱码最有效的解决方式

    作者开发环境 Windows 10 Clion 18 3 MinGW W64 很多人都遇到了Clion的中文乱码问题 xff0c 然后在CSDN上面寻找解决办法 比如这篇很有代表性https blog csdn net Cbk XLL ar
  • Neutron复盘及学习笔记

    前言 对于openstack neutron xff0c 曾花费很多的时间去看它的源码 xff0c 结果啥都没有看出来 openstack代码风格是 xff0c 为了实现plugin的可插拔 xff0c 运用了很多设计模式 xff0c 设计
  • 匿名飞控底层PID代码解析

    大半年就快过去了 大二上学期转瞬即逝 xff0c 离上一次博客也有一段时间了 xff0c 没错 xff0c 庆幸的是我又回来了 xff0c 其实本来第二篇博客是想着写一下两轮平衡车来着 xff0c 代码早就写好了 xff0c 但是硬件不给力
  • IAR、KEIL常见编译报错警告的解决方法(持续更新中)

    Warning Pe550 variable 变量 was set but never used 原因 xff1a 变量定义赋值了但从未使用 解决 xff1a 变量定义删了就可以 xff0c 编译器也不会真的给这个变量分配空间 Warnin
  • VS2019 未能正确加载”balabal.........Package“

    修复VS2019不能自动补全Unity脚本代码时 xff0c 更新了下面这个东西 导致一直蹦下面这些警告 嘣 嘣 嘣 嘣 嘣 网上有很多博客说重置用户数据 禁用Live Share 分析Log信息等等 xff0c 最后看到一个博文说检查更新
  • 51单片机 | 蜂鸣器实验

    文章目录 一 蜂鸣器介绍二 硬件设计三 软件设计四 实验现象 通过单片机的一个 IO 口控制 板载无源蜂鸣器 xff0c 实现蜂鸣器控制 一 蜂鸣器介绍 蜂鸣器是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用
  • Vue 中WebSocket的使用

    span class token function data span span class token punctuation span span class token punctuation span span class token
  • npm版本与node版本不对应

    npm与node版本不对应 导致无法npm i 报错提示 WARNING You are likely using a version of node tar or npm that is incompatible with this ve
  • 吴恩达阅读文献步骤

    接下来 xff0c 就集中介绍一下如何研究一篇论文 吴恩达认为 xff0c 要理解一篇论文 xff0c 一次将一篇论文从第一个字读到最后一个字 xff0c 可能并不是最佳方式 正确的打开方式是 xff0c 一篇论文至少要看三遍 第一遍 xf
  • 更新docker

    以下是做为前端开发如何更新docker xff0c 萌新操作 1 xff0c 使用工具Finalshell xff0c 连接到ssh 2 xff0c 连接到服务器 xff0c 选择ssh xff0c 并配置服务名称 主机 服务地址 xff0
  • 计算机视觉理论笔记 (11) - 运动估计 (Motion Estimation)

    运动估计 光流法 Optical Flow 限制Horn xff06 Schunck 全局方法 global method 光流法约束等式 Constrain Equation 小幅度动作问题全局方法和局部方法的比较全局方法局部方法 基于块
  • 嵌入式,面试题目网页搜集

    指针笔试题 嵌入式面试
  • Java第一天笔记02——eclipse的常用快捷键

    1 main方法 main 43 Alt 43 2 System out println syso 43 Alt 43 3 批量修改 Alt 43 Shift 43 R 4 for for 43 Alt 43 5 代码格式化 Ctrl 43
  • FREERTOS源码解析——heap4.c

    目录 内存管理heap4无法解决的内存碎片 xff1a HEAP4简析分配内存在哪 xff0c 大小多少如何管理 重要源码解析 内存管理 freertos目前提供了以下5种内存管理 xff0c 特点如下 heap1 xff1a 最简单的内存
  • vscode + clangd 开发 c\c++

    目录标题 背景LSPClangdquick fixIWYUclang tidy 环境配置插件配置语言服务器下载自定义配置生成compile command jsonmakefile生成compile command json 强烈推荐cla
  • echarts世界地图(含中国省份地图),中国省份下钻到县,点击按钮返回上一级

    效果图 中国地图高亮显示 并且地图中国地图在可视范围的中心 中国地图下钻 省份下钻 小站 www flot top 在线预览地址 https guangshizhao github io world map 需要源码的同学可以自行去本人的仓

随机推荐