MacOS 下搭建esp8266环境

大憨熊 提交于 2019-12-15 04:04:48

MacOS 下搭建esp8266交叉编译环境

自己是搞ARM嵌入式开发的,但手头又是一台Mac,对于Mac里面跑window虚拟机已是家常便饭。但如果可以直接用Mac开发,我是一定要尝试的,毕竟体验好这么多。这次,一个偶然机会,在参考网上教程后,顺利搭建成功,故记录一下。
总体步骤和网上众多Linux安装步骤类似。
不知道esp8266是什么?请看这里

1.安装Homebrew

Homebrew是Mac下的软件包管理工具。如果安装了的就跳过这步。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 1

2.安装所需依赖

brew install binutils coreutils automake autoconf wget gawk libtool help2man gperf gnu-sed --with-default-names grep
  • 1

3.准备交叉编译包

toolchain来源(找到的最新编译好的Mac版是2.3.0):https://github.com/esp8266/Arduino/releases

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
  • 1
  • 2
  • 3
  • 4
  • 5

4.添加到环境参数PATH

添加到当前用户环境变量,如果要添加到全局,则修改/etc/bashrc文件!

vi ~/.bash_profile
#添加如下两行:
export PATH=/opt/esp8266/xtensa-lx106-elf/bin:$PATH
  • 1
  • 2
  • 3

然后重新打开terminal或者使用source ~/.bash_profile生效环境设置。

5.查看安装状态

#查看版本号
xtensa-lx106-elf-gcc -v
#可以看到如下内容,便是安装成功:
Using built-in specs.
COLLECT_GCC=xtensa-lx106-elf-gcc
COLLECT_LTO_WRAPPER=/opt/esp8266/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper
Target: xtensa-lx106-elf
省略...
gcc version 4.8.2 (crosstool-NG 1.20.0) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.Visual Studio Code下测试

Visual Studio Code下载:https://code.visualstudio.com
测试项目来着安信可官方教程:http://wiki.ai-thinker.com/ai_ide_use
项目文件:esp8266_nonos_sdk-2.2.0.zip

#下载项目
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
#补充两个链接库
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

好了,将项目导入Visual Studio Code。
然后执行make clean;make COMPILE=gcc即可看到编译结果。

在这里插入图片描述

7.烧录flash

这里使用的是esptool。可参考:
https://github.com/nodemcu/nodemcu-devkit/wiki/Getting-Started-on-OSX
https://github.com/espressif/esptool
esp8266主要使用CH34X和CP210X两种uart转usb模块,驱动下载:https://download.csdn.net/download/kxwinxp/10926261

首先安装python3 看清是python3,不是python,安装过的请往下看。

brew install python3
  • 1

接着安装pip,pip是python的包管理工具,如果已经安装请跳过。

想卸掉pip?python -m pip uninstall pip

#准备安装包
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如果你python2安装过,那么python3的pip则为pip3.

然后使用pip安装esptool。

#安装esptool
pip3 install esptool
#查找usb serial 设备:
ls /dev/tty.wchusbserial*
  • 1
  • 2
  • 3
  • 4

自己找到一下tty.wchusbserial*的列表,我的是tty.wchusbserial1420

根据ESP8266 SDK官方文档,对应我的是4MB的flash。
在这里插入图片描述

补充一些小知识:4MB的flash分为1024个sector,每个sector占4k。
0x1000:(1)x4096+(0)x256+(0)x16+(0)x1=4096/1024=4k
所以,为了对齐,应该从0x1000为最小单位。
0x10000:(1)x64k=64k
0x3FC000:(3)x1024k+(15)x64k+(12)x4k=4080k

我们需要刷入2个(必须)和2个(可选)文件。

/bin目录下:
eagle.flash.bin-------->bootloader
eagle.irom0text.bin-------->code

esp_init_data_default_v8.bin------->基带参数
blank.bin------->空白填充

烧入时,先摁住flash键,再摁一下reset键,即重启进入烧入状态。

# 只刷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_v8.bin 0x3FE000 bin/blank.bin
  • 1
  • 2
  • 3
  • 4

烧入结果:
在这里插入图片描述

当然,其实并不需要同时烧入这么多文件,一般只烧入eagle.flash.bineagle.irom0text.bin,但由于硬件参数可能会被破坏过,所以才烧入其他参数文件。

8.附录

给大家提供一个串口工具吧,自己感觉还不错。
RS232 Tool 软件Fork自:GitHub
下载地址(版本效果如下图所示):gitee下载

在这里插入图片描述

                                </div>

MacOS 下搭建esp8266交叉编译环境

自己是搞ARM嵌入式开发的,但手头又是一台Mac,对于Mac里面跑window虚拟机已是家常便饭。但如果可以直接用Mac开发,我是一定要尝试的,毕竟体验好这么多。这次,一个偶然机会,在参考网上教程后,顺利搭建成功,故记录一下。
总体步骤和网上众多Linux安装步骤类似。
不知道esp8266是什么?请看这里

1.安装Homebrew

Homebrew是Mac下的软件包管理工具。如果安装了的就跳过这步。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 1

2.安装所需依赖

brew install binutils coreutils automake autoconf wget gawk libtool help2man gperf gnu-sed --with-default-names grep
  • 1

3.准备交叉编译包

toolchain来源(找到的最新编译好的Mac版是2.3.0):https://github.com/esp8266/Arduino/releases

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
  • 1
  • 2
  • 3
  • 4
  • 5

4.添加到环境参数PATH

添加到当前用户环境变量,如果要添加到全局,则修改/etc/bashrc文件!

vi ~/.bash_profile
#添加如下两行:
export PATH=/opt/esp8266/xtensa-lx106-elf/bin:$PATH
  • 1
  • 2
  • 3

然后重新打开terminal或者使用source ~/.bash_profile生效环境设置。

5.查看安装状态

#查看版本号
xtensa-lx106-elf-gcc -v
#可以看到如下内容,便是安装成功:
Using built-in specs.
COLLECT_GCC=xtensa-lx106-elf-gcc
COLLECT_LTO_WRAPPER=/opt/esp8266/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper
Target: xtensa-lx106-elf
省略...
gcc version 4.8.2 (crosstool-NG 1.20.0) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.Visual Studio Code下测试

Visual Studio Code下载:https://code.visualstudio.com
测试项目来着安信可官方教程:http://wiki.ai-thinker.com/ai_ide_use
项目文件:esp8266_nonos_sdk-2.2.0.zip

#下载项目
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
#补充两个链接库
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

好了,将项目导入Visual Studio Code。
然后执行make clean;make COMPILE=gcc即可看到编译结果。

在这里插入图片描述

7.烧录flash

这里使用的是esptool。可参考:
https://github.com/nodemcu/nodemcu-devkit/wiki/Getting-Started-on-OSX
https://github.com/espressif/esptool
esp8266主要使用CH34X和CP210X两种uart转usb模块,驱动下载:https://download.csdn.net/download/kxwinxp/10926261

首先安装python3 看清是python3,不是python,安装过的请往下看。

brew install python3
  • 1

接着安装pip,pip是python的包管理工具,如果已经安装请跳过。

想卸掉pip?python -m pip uninstall pip

#准备安装包
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如果你python2安装过,那么python3的pip则为pip3.

然后使用pip安装esptool。

#安装esptool
pip3 install esptool
#查找usb serial 设备:
ls /dev/tty.wchusbserial*
  • 1
  • 2
  • 3
  • 4

自己找到一下tty.wchusbserial*的列表,我的是tty.wchusbserial1420

根据ESP8266 SDK官方文档,对应我的是4MB的flash。
在这里插入图片描述

补充一些小知识:4MB的flash分为1024个sector,每个sector占4k。
0x1000:(1)x4096+(0)x256+(0)x16+(0)x1=4096/1024=4k
所以,为了对齐,应该从0x1000为最小单位。
0x10000:(1)x64k=64k
0x3FC000:(3)x1024k+(15)x64k+(12)x4k=4080k

我们需要刷入2个(必须)和2个(可选)文件。

/bin目录下:
eagle.flash.bin-------->bootloader
eagle.irom0text.bin-------->code

esp_init_data_default_v8.bin------->基带参数
blank.bin------->空白填充

烧入时,先摁住flash键,再摁一下reset键,即重启进入烧入状态。

# 只刷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_v8.bin 0x3FE000 bin/blank.bin
  • 1
  • 2
  • 3
  • 4

烧入结果:
在这里插入图片描述

当然,其实并不需要同时烧入这么多文件,一般只烧入eagle.flash.bineagle.irom0text.bin,但由于硬件参数可能会被破坏过,所以才烧入其他参数文件。

8.附录

给大家提供一个串口工具吧,自己感觉还不错。
RS232 Tool 软件Fork自:GitHub
下载地址(版本效果如下图所示):gitee下载

在这里插入图片描述

                                </div>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!