esp32 nat数据包_arduino



前言

前段时间一直使用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
  • 当发现有如下的信息输出时,就代表着我们已经安装成功了.

esp32 nat数据包_esp32 nat数据包_02



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.alibhal.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
  • 编译完成之后控制台打印信息如下所示.

esp32 nat数据包_esp8266_03



烧录Flash

esp8266 NodeMCU 一共有两种形式的USB转串口芯片,一种是价格比较便宜的CH340,另外一种是CP2102,这时候我们直接用安卓数据线连接电脑,是读不出来的,所以我们需要安装着两种芯片的驱动,安装哪一个,大家看自己的板子上芯片型号即可.如下图所示就是一个CP2012的芯片的板子.

CH340 和 CP2012驱动下载传送门 提取码: rqa1

esp32 nat数据包_Python_04

烧录之前我们需要看一个图表,这个图表就是用来说明我们需要烧录的地址.由于我们的NodeMCU是4Mb的内存,所以我们要按照图上的所示内存地址进行对应的烧录.这个图表可以在安信可官网的文档中找到.

esp32 nat数据包_Python_05


这里提供两种烧录方案,一种是使用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*

可以查找到如下的串口信息.

esp32 nat数据包_esp32 nat数据包_06

这样我们整体的准备工作就完成了.我们接下来就开始进行烧录.前期怕其他文件损坏,所以是使用四个文件一起烧录,后期可以只烧录两个文件即可.注意需要根据上面来修改对应的串口信息.

# 只刷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下载传送门

esp32 nat数据包_esp8266_07

  • 下载安装完成之后 打开ESP8266 Flash,首先我们需要选择 ESP8266 SDK, 然后会发现需要esptool.py这个文件路径.这里可以从 esptool 这个github中获取到工程,然后选择的时候指向文件夹即可.如下图所示.

esp32 nat数据包_arduino_08

  • 这时候我们选择合适的烧录文件然后点击 Flash Firemware 按钮进行烧录,发现一个esptool.py导入操作.如下图所示.

esp32 nat数据包_arduino_09

  • 这是因为可能Python版本过低的问题导致的,所以我们需要下载3.0以上的Python版本.


总结

整体上来说弄了一遍之后还是挺简单的,如果有任何问题欢迎在评论区评论或者私信我,谢谢大家.最后要附上转载博客的地址啦.