nodemcu固件编译
by HYH | 2017 年 10 月 10 日 下午 8:27
一.编译环境搭建
1.下载
百度云盘:https://pan.baidu.com/s/1dEOw8bZ 下载密码:v81b
下载vbox及ova虚拟机包。
里面也有安装文档。
2.安装及必要软件安装
安装vbox时一路next即可,安装完成后双击.ova文件,点击导入即可。导入后虚拟机所有文件在 用户目录\VirtualBox VMs 下
设置共享文件夹(主要是用于文件传输)
设置->共享文件夹(新建或更改共享文件夹为一个存在的目录)
接下来运行虚拟机,注意用户密码是espressif
运行sudo -s后输入此密码。
安装git,python,python-serial.
apt-get install git python python-serial
下载头文件
wget https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
解压头文件
tar –directory=/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.2/ -xvf include.tgz
下载sdk头文件
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git extra_include/xtensa
复制sdk头文件
cd extra_include/xtensa/extra_include/xtensa
cp -r * /opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.2/include/xtensa/
二.nodemcu 0.9x固件下载及编译
1.下载
git clone -b old-master https://github.com/nodemcu/nodemcu-firmware.git
下载完成后,当前目录下的nodemcu-firmware文件夹即为源码文件夹。
2.编译
下面几个文件是可由用户配置
app/include/user_config.h:nodemcu配置
app/include/user_version.h:版本信息配置
app/include/user_modules.h:模块配置
以上配置均为注释define或取消注释来配置
若采用默认配置,直接编译即可(如果编译失败,请尝试注释掉user_module.h中的部分模块)
make
编译成功后,会重新生成
0x00000.bin
0x10000.bin
下面直接烧录到nodemcu上即可。
备用下载:https://github.com/HEYAHONG/nodemcu-firmware/tree/old-master/bin
如果会把usb设备中的串口设备接入虚拟机,或使用实机。在直接接入一个USB串口转设备且设备且为nodemcu,可直接在源码目录使用make flash烧写。
三.nodemcu最新版编译
1.说明
最新版的配置方式和0.9x版一样。
由于编译环境限制,需要修改源码中esp-gdbstub组件,而且需要调整cc.h。
2.下载
如果下了nodemcu的源码,需要把原来的源码删除或者移动到别的地方。
git clone https://github.com/nodemcu/nodemcu-firmware.git
2.下载libm.a:
wget https://github.com/nodemcu/nodemcu-firmware/raw/old-master/lib/libm.a
先make一下,下载sdk。
make
移动libm.a到sdk目录。
3.修改esp-gdbstub
nano app/esp-gdbstub/gdbstub.c
在头部添加一下行:
#ifndef XCHAL_DEBUGLEVEL
#define XCHAL_DEBUGLEVEL 2
#endif
4.调整cc.h
此时如果直接编译,会出现以下错误
重复定义,实际两个定义的最终值都是14,所以只需要注释掉其中一个重复定义。最好注释掉源码中的那一个。
nano app/include/arch/cc.h
注释掉:
#define EFAULT 14
或者改为(1.5.4版所用方式)
#ifndef EFAULT
#define EFAULT 14
#endif
注释掉之后,就能正常编译了。
5.编译
make
6.烧录(直接接入nodemcu开发板,本人板子不是4m的)
make flash512k
https://hyhsystem.cn/wordpress/
Copyright ?2018 何亚红的博客 unless otherwise noted.