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.bin
和eagle.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.bin
和eagle.irom0text.bin
,但由于硬件参数可能会被破坏过,所以才烧入其他参数文件。
8.附录
给大家提供一个串口工具吧,自己感觉还不错。
RS232 Tool 软件Fork自:GitHub
下载地址(版本效果如下图所示):gitee下载
</div>
来源:CSDN
作者:Eric_Jhon
链接:https://blog.csdn.net/Eric_Jhon/article/details/103523906