ESP8266 建立Linux开发环境

ESP8266 建立Linux开发环境

Toolchain

官方提供的开发环境是利用虚拟环境再配合档案分享的方式让程式码在虚拟机器与实体机器间分享并且顺利编译程式码,此篇要利用已经预先编译好各平台的开发工具集直接放在自已的平台上执行,不需要在自已的平台上面重新编译好开发工具集才能使用。

安装相依套件

开发工具使用环境中,必需要具备一些套件或是函数库,像:make、git、autoconf…等,以下介绍以2个Linux分支示范安装

Ubuntu/Debian

更新套件列表

安装套件之前先更新套件列表,以免安装到旧版本的套件:


sudo apt update

执行完成后会看到返回讯息,如果需要套件更新列表就照讯息中的执行apt list --upgradable,在这不需要执行:

:
:
:
Fetched 9954 kB in 8s (1130 kB/s)                                              
Reading package lists... Done
Building dependency tree       
Reading state information... Done
22 packages can be upgraded. Run 'apt list --upgradable' to see them.



检查系统架构

某些套件安装时需要依照你安装系统架构进行安装,架构分为32bit(x86)、64bit(x64),执行uname确定你的版本:

uname -m


如果你是64bit版本会看到结果:

x86_64


32bit比较特别,可能会有两种:

i686


i386


安装套件

  • 32bit

apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
  • 64bit

apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev

Arch

Arch Linux具有套件群组安装套件,套件群组意指具备某些类型操作需要,像base-devel套件群组针对开发者安装开发时需要的基本套件,像gcc、autoconf已经包含,所以另外再安装二个套件有关pySerial、gpref:

pacman -S base-devel python-pyserial gperf


开发工具

ESP8266 Community Forum提供开发工具建置教学放在Github上的esp8266-wiki上,不过此次是利用该团队建立的ESP8266 Core for Arduino中有提供package_esp8266com_index.json给Arduino IDE当设定档,丹尼从里面解析出Linux平台开发工具(Toolchain)的下载位置,如此一来,不用照教学透过crosstool-NG重新编译ESP8266的开发工具。

64bit

http://arduino.esp8266.com/linux64-xtensa-lx106-elf-gb404fb9.tar.gz


32bit

http://arduino.esp8266.com/linux32-xtensa-lx106-elf.tar.gz


下载完后自行解开至自已的环境并记住路径。

标头档与函式库

开发工具并未包含ESP8266使用的函式库及标头档必需要先下载,首先先假设开发工具解压至xtensa-lx106-elf目录。

进入开发工具所在目录

cd xtensa-lx106-elf

查看目录结构,执行列表

ls -l


执行结果

    total 1660
    drwxrwxr-x 2 danny danny   4096  8月  4 14:47 bin
    -rw-rw-r-- 1 danny danny 691490  5月 13  2015 build.log.bz2
    drwxrwxr-x 7 danny danny   4096  8月  4 14:47 include
    -rw-rw-r-- 1 danny danny 979111  8月  2 13:50 include.tgz
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 lib
    drwxrwxr-x 3 danny danny   4096  8月  4 14:47 libexec
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 share
    drwxrwxr-x 9 danny danny   4096  8月  4 14:47 xtensa-lx106-elf

进入第二层目录xtensa-lx106-elf

    cd xtensa-lx106-elf


下载缺少的函式库至lib目录

    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


标头档下载并解压

wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar zxvf include.tgz


解压后会将标头档全部解压至include目录。

路径设定

开发环境建置完成后,接下来将开发工具移动至你存放的路径,并进入xtensa-lx106-elf/bin目录,并且执行


pwd

执行结果会回报路径


/opt/xtensa-lx106-elf/bin

丹尼将开发工具移至/opt目录,一般来说只要自行安装的都会建议移至此目录,此时将路径加到PATH变数,加到PATH环境变数提供二种

~/.bashrc

使用编辑器开启~/.bashrc档案

nano ~/.bashrc

并加入PATH环境变数

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

profile

进入/etc/profile.d,建立一个新档案名为xtensa-lx106-elf-env.sh


sudo nano /etc/profile.d/xtensa-lx106-elf-env.sh

并加入PATH环境变数后存档

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

以上完成后,路径生效时就能执行xtensa-lx106-elf-gcc -v测试一下路径有没有正确,正确会看到执行结果如:


Using built-in specs. COLLECT_GCC=xtensa-lx106-elf-gcc COLLECT_LTO_WRAPPER=/opt/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper Target: xtensa-lx106-elf Configured with: /opt/Espressif/crosstool-NG/.build/src/gcc-4.8.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=xtensa-lx106-elf --prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf --with-local-prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --disable-libmudflap --with-sysroot=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-cloog=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-libelf=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c Thread model: single gcc version 4.8.2 (crosstool-NG 1.20.0)

参考资料

关键字:

快速建立ESP8266 Linux开发环境