Linux下 ESP8266 开发环境搭建

Linux系统为Manjaro XFCE

打开终端,克隆crosstool-NG到本地,并编译生成xtensa-lx106-elf编译器

如果有代理,可以配置git代理提高下载速度

git config --global http.proxy 'http://127.0.0.1:1080'

git config --global https.proxy 'https://127.0.0.1:1080‘

cd ~

mkdir Espressif

cd Espressif

git clone https://github.com/jcmvbkbc/crosstool-NG.git

cd crosstool-NG        

./bootstrap && ./configure --prefix=`pwd` && make && make install

./ct-ng xtensa-lx106-elf

./ct-ng build

编译过程中可能会报错,在crosstool-NG/build.log查看报错原因

1)    文件下载失败:

            通过build.log文件中的地址手动下载文件并放入crosstool-NG/.build/tarballs文件夹下,推荐预先下载文件放入文件夹,编译过程中下载非常耗时。注意下载版本要与config一致。

            部分文件下载地址:

            gcc

            cloog

            binutils

            gdb

            gmp

            isl

            mpc

            mpfr

2)    error: too few arguments to function _PyImport_FixupBuiltin:    

            此函数在python3.7中是一个内部函数,使用gdb-8.2及以上版本,在crosstool-NG/config/debug/gdb.in文件添加

                config GDB_V_8_2

                bool

                prompt "8.2"

                select GDB_8_2_or_later

                config GDB_8_2_or_later

                bool

                select GDB_8_2_or_later

                default "8.2" if GDB_V_8_2

            以上内容参考源文件插入相应位置

编译成功后编译器位于builds文件夹下,将编译器加入环境变量

sudo cp -f builds/xtensa-lx106-elf /opt

cd ~

sudo nano .bashrc

export PATH=/opt/xtensa-lx106-elf/bin:$PATH

source .bashrc

编译工程

cd Espressif/ESP8266-NONOS_SDK/app

./gen_misc.sh

如果不能执行./gen_misc.sh  ->  chmod u+x gen_misc.sh 或者选中该文件->右键->属性->权限->选中允许此文件作为程序运行

1)提示缺少stdint.h文件 https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz 下载解压放入/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/

2)提示缺少libhal.a文件 https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a 下载放入/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/

3)提示SyntaxError: Missing parentheses in call to 'print'. Did you mean print('file_name cannot be none\n')?  python版本过高,需要搭建python虚拟环境使用低版本python

cd ~

sudo pip install virtualenvwrapper

mkdir .virtualenvs

sudo nano .bashrc

export WORKON_HOME=~/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.7

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv

source /usr/bin/virtualenvwrapper.sh

source .bashrc

mkvirtualenv -p /usr/bin/python2.7 env27

在终端中输入 workon env27即可在python2.7环境中编译工程

串口烧写bin文件到WiFi模块

安装esptool串口下载工具

sudo pip install esptool

擦除

esptool.py --port /dev/ttyUSB0 erase_flash

烧写全部bin文件

esptool.py --port /dev/ttyUSB0 -b 115200 write_flash 0x0000 ../bin/boot_v1.7.bin 0x1000 ../bin/upgrade/user1.2048.new.3.bin 0x1fc000 ../bin/esp_init_data_default_v05.bin 0x1fe000 ../bin/blank.bin

烧写user.bin文件

esptool.py --port /dev/ttyUSB0 -b 115200 write_flash 0x1000 ../bin/upgrade/user1.2048.new.3.bin

/dev/ttyUSB0表示第一个usb设备,如果电脑上接了多个usb设备,需要自行确定编号, 上述命令可编写为执行文件,例如 erase_flash.sh

#!/bin/bash

esptool.py --port /dev/ttyUSB0 erase_flash

修改权限为允许作为程序运行,终端输入 ./erase_flash.sh 即可擦除flash

如果烧写时报错 /dev/ttyUSB0 permission denied

ls -al /dev/ttyUSB0

crw-rw---- 1 root uucp 188, 0 10月 16 15:29 /dev/ttyUSB0

sudo gpasswd --add username uucp

列出ttyUSB0的工作组为uucp,然后把当前用户username加入uucp,重启后串口即可正常工作。

你可能感兴趣的:(Linux下 ESP8266 开发环境搭建)