机智云上生成的固件下载进NodeMCU开发板一直不能正确运行,后来发现是编译选项的问题。
编译选项 ESP8266的SDK里的编译脚本ESP8266_RTOS_SDK\examples\project_template\gen_misc.sh
中,提供了如下编译选项。
STEP 1: choose boot version(0=boot_v1.1, 1=boot_v1.2+, 2=none)
STEP 2: choose bin generate(0=eagle.flash.bin+eagle.irom0text.bin, 1=user1.bin, 2=user2.bin)
STEP 3: choose spi speed(0=20MHz, 1=26.7MHz, 2=40MHz, 3=80MHz)
STEP 4: choose spi mode(0=QIO, 1=QOUT, 2=DIO, 3=DOUT)
STEP 5: choose spi size and map:
0= 512KB( 256KB+ 256KB)
2=1024KB( 512KB+ 512KB)
3=2048KB( 512KB+ 512KB)
4=4096KB( 512KB+ 512KB)
5=2048KB(1024KB+1024KB)
6=4096KB(1024KB+1024KB)
7=4096KB(2048KB+2048KB) not support ,just for compatible with nodeMCU board
8=8192KB(1024KB+1024KB)
9=16384KB(1024KB+1024KB)
SDK里的Default值分别为
1=boot_v1.2+(即boot=new)
,0=eagle.flash.bin+eagle.irom0text.bin
,2=40MHz
,0=QIO
,0=512KB(256KB+256KB)
。而在机智云上生成的固件里的编译脚本
SoC_ESP8266_8M_source\app\gen_misc_1.sh
中,注释了类似以上的编译选项,直接赋值默认值,Default值分别为boot=new
,app=1
,spi_speed=40
,spi_mode=QIO
,spi_size_map=2
。NodeMCU开发板固件编译时需要修改
spi_mode=DIO
,spi_size_map=4
。编译方法 重新编译固件可以使用以下三种方法。
VirtualBox
根据Espressif官网的文档
ESP8266 SDK 入门指南(2a-esp8266-sdk_getting_started_guide_cn.pdf)
的3.3. ESP8266 ?具集
,下载VirtualBox和虚拟机镜像,设置共享文件夹,在Lubuntu中运行编译脚本gen_misc.sh
,选择正确的编译选项。- 编译前需要在控制台设置路径变量,指向 SDK 和 BIN 文件。
# 例如
export SDK_PATH=~/Share/ESP8266_RTOS_SDK
export BIN_PATH=~/Share/ESP8266_RTOS_SDK/bin
- 如果脚本运行出错,很大可能是没有将脚本从DOS格式转为UNIX格式,在VIM中键入
:set ff=unix
,保存后重新运行脚本。
可以在Windows下安装Cygwin,然后在Cygwin中运行编译脚本,同Lubuntu中相同。
- Cygwin中也需要设置 SDK 和 BIN 的路径变量。
# 例如
export SDK_PATH=/cygdrive/e/ESP8266_RTOS_SDK/
export BIN_PATH=/cygdrive/e/ESP8266_RTOS_SDK/bin/
Eclipse
【#|ESP8266 编译固件下载到NodeMCU开发板需要注意的问题】使用安信可一体化开发环境最方便,教程在如何安装安信可一体化开发环境。
- Import 项目文件夹。
文章图片
文章图片
文章图片
- 修改 Build 路径和选项。
文章图片
文章图片
文章图片
这里的值为COMPLIE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4
。 - 编译项目。
文章图片
文章图片
推荐阅读
- 数据结构和算法|LeetCode 的正确使用方式
- #|7.分布式事务管理
- #|算法设计与分析(Java实现)——贪心算法(集合覆盖案例)
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- #|阿尔法点亮LED灯(一)汇编语言
- #|Multimedia
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控
- #|学习笔记 | Ch05 Pandas数据清洗 —— 缺失值、重复值、异常值
- win10|搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。