机智云上生成的固件下载进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,保存后重新运行脚本。
Cygwin
可以在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
使用安信可一体化开发环境最方便,教程在如何安装安信可一体化开发环境。
- Import 项目文件夹。



- 修改 Build 路径和选项。



这里的值为COMPLIE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4。 - 编译项目。


本文详细解析了在机智云平台上生成的ESP8266固件无法在NodeMCU开发板上正常运行的问题,并提供了解决方案。主要问题在于编译选项的不匹配,如spi_mode和spi_size_map等,文章给出了正确的编译选项和三种编译方法:VirtualBox、Cygwin和Eclipse。
3124

被折叠的 条评论
为什么被折叠?



