前言
前段时间一直使用Windows进行ESP8266的Nonos SDK开发,由于使用的安信可提供的一体化开发工具,安装起来十分的简单粗暴.只需要下载下来之后配置一下就可以使用了,但是在Mac 上确没有明确的开发环境搭建教程,大部分是基于 Ardiuno IDE 进行开发ESP8266的,而 Ardiuno IDE 没有代码提醒以及高亮状态让我感到十分的不爽.所以就在网上搜寻了一番,发现了一个基于 VS Code 的环境搭建流程.这里就直接分享整理一下了.
安装交叉编译包
- 安装交叉编译包之前首先先确定是否已经安装了Mac的软件包管理工具 Homebrew,默认的话就是一行命令行指令即可完成.如下所示.如果发现下载太慢导致失败可以参考下HomeBrew 官方安装太慢而失败?这么搞就行.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 软件包管理工具安装完成之后,我们就要使用下面的命令开始下载我们所需的依赖.
brew install binutils coreutils automake autoconf wget gawk libtool help2man gperf gnu-sed grep
- 安装完成所需依赖之后,我们就要下载交叉编译包了,这里推荐的是2.3.0版本(网上说这个版本较好,具体没有测试过.).下载过程可能有点慢,耐心等待就好.下载完成之后进行解压操作.然后所以指令如下所示.
sudo mkdir -p /opt/esp8266
sudo chmod 777 /opt/esp8266
cd /opt/esp8266
wget https://github.com/esp8266/Arduino/releases/download/2.3.0/osx-xtensa-lx106-elf-gb404fb9-2.tar.gz
tar zxvf osx-xtensa-lx106-elf-gb404fb9-2.tar.gz
- 解压完成之后我们添加到环境参数PATH中,主要是vim指令,具体百度不解释了.指令如下所示.
添加到当前用户环境变量
~/.bash_profile
文件中.
如果要添加到全局,则修改/etc/bashrc
文件.
vi ~/.bash_profile
#添加如下两行:
export PATH=/usr/local/opt/gnu-sed/libexec/gnubin:$PATH
export PATH=/opt/esp8266/xtensa-lx106-elf/bin:$PATH
- 然后重新打开终端或者使用 source ~/.bash_profile 生效环境设置。
source ~/.bash_profile
- 当然了,我们还是要最后检查一下交叉编译包是否已经安装成功了.使用下面的指令即可.
xtensa-lx106-elf-gcc -v
- 当发现有如下的信息输出时,就代表着我们已经安装成功了.
VS Code 编译工程
- 在编译工程之前我们首先要下载一个Demo工程用于编译. cd到合适的文件夹位置,然后执行下面的指令.
#下载项目
wget http://wiki.ai-thinker.com/_media/esp8266/sdk/esp8266_nonos_sdk-2.2.0.zip
unzip esp8266_nonos_sdk-2.2.0.zip
cd ESP8266_NONOS_SDK-2.2.0
#将 driver_lib 和 examples/IoT_Demo 下的文件拷贝到 app目录下
mv driver_lib app
cp -rf examples/IoT_Demo/* app/
rm -rf examples
rm -rf third_party
- 在上面的一顿操作之后,我们还需要连接两个库.分别是libc.a和libhal.a,指令如下所示.
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
- 上面的操作完成之后,我们就通过VSCode 打开 我们下载好的工程了.在终端窗口执行下面的命令即可编译我们的Demo工程了.(其实是make clean 是清除编译文件,make COMPILE=gcc是进行编译)
make clean;make COMPILE=gcc
- 编译完成之后控制台打印信息如下所示.
烧录Flash
esp8266 NodeMCU 一共有两种形式的USB转串口芯片,一种是价格比较便宜的CH340,另外一种是CP2102,这时候我们直接用安卓数据线连接电脑,是读不出来的,所以我们需要安装着两种芯片的驱动,安装哪一个,大家看自己的板子上芯片型号即可.如下图所示就是一个CP2012的芯片的板子.
CH340 和 CP2012驱动下载传送门 提取码: rqa1
烧录之前我们需要看一个图表,这个图表就是用来说明我们需要烧录的地址.由于我们的NodeMCU是4Mb的内存,所以我们要按照图上的所示内存地址进行对应的烧录.这个图表可以在安信可官网的文档中找到.
具体可参照如何为 ESP 系列模组烧录固件
这里提供两种烧录方案,一种是使用Python,另外一种是使用图形化工具.
-
Python形式烧录
首先安装Python3 看清是Python3,安装过Python 3 的童鞋就可以跳过直接安装pip了.操作如下所示.由于已经安装过了,所以这里就不再截图说明了.
brew install python3
紧接着就是安装pip,pip是Python的包管理工具,类似于Java的Maven,iOS的CocoaPods等等.
#准备安装包
wget wget https://bootstrap.pypa.io/get-pip.py
#安装
sudo python3 get-pip.py
#安装成功,提示如下:
Installing collected packages: pip, wheel
Successfully installed pip-18.1 wheel-0.32.3
如果想要卸载 pip .使用下面的命令即可.
python -m pip uninstall pip
然后安装esptool,这个是烧录程序.
#安装esptool
pip3 install esptool
安装完成,使用安卓数据线连接NodeMCU开发板,然后使用下面命令查看对应的接口.
#查找usb serial 设备:
ls /dev/tty.wchusbserial*
可以查找到如下的串口信息.
这样我们整体的准备工作就完成了.我们接下来就开始进行烧录.前期怕其他文件损坏,所以是使用四个文件一起烧录,后期可以只烧录两个文件即可.注意需要根据上面来修改对应的串口信息.
# 只刷2个文件
esptool.py --port /dev/tty.wchusbserial1420 write_flash --flash_freq 40m --flash_mode dout --flash_size 4MB 0x0 bin/eagle.flash.bin 0x10000 bin/eagle.irom0text.bin
# 刷完整文件
esptool.py --port /dev/tty.wchusbserial1420 write_flash --flash_freq 40m --flash_mode dout --flash_size 4MB 0x0 bin/eagle.flash.bin 0x10000 bin/eagle.irom0text.bin 0x3FB000 bin/blank.bin 0x3FC000 bin/esp_init_data_default_v08.bin 0x3FE000 bin/blank.bin
-
图形化工具烧录
- 工程编译完成之后,我们就要去把编译好的文件烧录到Flash中去.这时候我们可以去App Store 下载 ESP8266 Flash 工具. ESP8266 Flash下载传送门
- 下载安装完成之后 打开ESP8266 Flash,首先我们需要选择 ESP8266 SDK, 然后会发现需要esptool.py这个文件路径.这里可以从 esptool 这个github中获取到工程,然后选择的时候指向文件夹即可.如下图所示.
- 这时候我们选择合适的烧录文件然后点击 Flash Firemware 按钮进行烧录,发现一个esptool.py导入操作.如下图所示.
- 这是因为可能Python版本过低的问题导致的,所以我们需要下载3.0以上的Python版本.
总结
整体上来说弄了一遍之后还是挺简单的,如果有任何问题欢迎在评论区评论或者私信我,谢谢大家.最后要附上转载博客的地址啦.
MacOS 下搭建esp8266交叉编译环境