ESP32 Ubuntu开发环境搭建

在Ubuntu下搭建ESP32开发环境

在 CSDN 上面查找ESP8266 系列的博文已经非常多了,但是查找ESP32的文章还是有点缺少,ESP32已经出来很长时间了,使用方法和ES8266非常类似,开发也非常简单。下面就对ESP32的做一些总结。

本篇文章先描述一下开发环境搭建过程。

说明

  1. 本片文章中的部分图片引用自安信可官方Wiki
  2. 乐鑫官方也提供了ESP32的SDK的编程指南,参见ESP-IDF编程指南

开发环境

该开发环境搭建是在 Ubuntu-14.04 (64-bit) 完成的。

硬件准备

ESP32(NodeMCU-32S)

嵌入式平台使用的是安信可科技提供的NodeMCU-32S。
nodemcu-32s

NodeMCU-32S 引脚图

nodemcu-32s-pinmaps

搭建步骤

在Ubuntu-14.04 上搭建ESP32开发环境的步骤可以分为以下六步:

  1. 安装编译依赖工具
  2. 下载并安装交叉编译工具链
  3. 配置环境变量
  4. 下载ESP-IDF源码
  5. 配置工程-开始编译
  6. 烧写测试

安装编译依赖工具

ESP32 的编译开发主要依赖两大核心工具,一个是乐鑫官方提供的ESP32交叉编译工具链,另外一个是python2.7,注意是python2.7。

ESP32 交叉编译工具链能够正常运行,依赖于 make gcc libncurses5-dev flex bison gperf 等工具,此外还需要使用git 下载源码,使用python-serial 进行烧写。

  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial

下载并安装交叉编译工具链

在下载交叉编译工具链之前,首先创建一下ESP32专用的开发目录。

  sudo mkdir /esp32
  cd /esp32
  mkdir crossTools demos sources

然后进入 crossTools 目录,下载官方交叉编译工具链。

cd crossTools
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
tar xzvf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

配置环境变量

export PATH=$PATH:/esp32/crossTools/xtensa-esp32-elf/bin

环境变量配置完成后,需要检查一下系统是否能找到交叉编译工具链所在的路径。

xtensa-esp32-elf-gcc -v

如果能够看到版本信息,那说明已经正确安装了。

root@qiao-virtual-machine:/esp32/crosstools# xtensa-esp32-elf-gcc -v
Using built-in specs.
COLLECT_GCC=xtensa-esp32-elf-gcc
COLLECT_LTO_WRAPPER=/esp32/crosstools/xtensa-esp32-elf/bin/../libexec/gcc/xtensa-esp32-elf/5.2.0/lto-wrapper
Target: xtensa-esp32-elf
Configured with: /builds/idf/crosstool-NG/.build/src/gcc-5.2.0/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=xtensa-esp32-elf --prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/sysroot --with-sysroot=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG crosstool-ng-1.22.0-80-g6c4433a' --disable-__cxa_atexit --enable-cxx-flags='-fno-rtti -ffunction-sections' --with-gmp=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-cloog=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-libelf=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-libgomp --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-nls --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio
Thread model: posix
gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) 

下载ESP-IDF源码

ESP32的SDK由乐鑫官方提供,官方命名为ESP-IDF,该SDK可以从乐鑫官方网站下载,也可以通过github下载。

将ESP-IDF 下载到 sources 目录下。

cd /esp32/sources
git clone --recursive https://github.com/espressif/esp-idf.git
源码目录说明

ESP-IDF的目录结构如下所示。

  root@qiao-virtual-machine:/esp32/sources/esp-idf# ls
add_path.sh  CMakeLists.txt  components  CONTRIBUTING.rst  docs  examples  Kconfig  LICENSE  make  README.md  requirements.txt  tools
主要目录说明

components:ESP-IDF的核心组件

examples:ESP-IDF提供的实例程序

make:ESP-IDF工程管理目录

tools:ESP-IDF提供的工具集

docs:ESP-IDF相关文档

这里,笔者着重说明一下 examples目录,其目录结构如下所示。

root@qiao-virtual-machine:/esp32/sources/esp-idf/examples# ls -alh
total 56K
drwxr-xr-x 13 root root 4.0K 12月  4 12:46 .
drwxr-xr-x  8 root root 4.0K 12月  4 12:46 ..
drwxr-xr-x 26 root root 4.0K 12月  4 12:46 bluetooth
drwxr-xr-x  3 root root 4.0K 12月  4 12:46 build_system
drwxr-xr-x  4 root root 4.0K 12月  4 12:46 ethernet
drwxr-xr-x  4 root root 4.0K 12月  4 12:46 get-started
drwxr-xr-x  4 root root 4.0K 12月  4 12:46 mesh
drwxr-xr-x 26 root root 4.0K 12月  4 12:46 peripherals
drwxr-xr-x 21 root root 4.0K 12月  4 12:46 protocols
drwxr-xr-x  6 root root 4.0K 12月  4 12:46 provisioning
-rw-r--r--  1 root root 2.4K 12月  4 12:46 README.md
drwxr-xr-x  9 root root 4.0K 12月  4 12:46 storage
drwxr-xr-x 19 root root 4.0K 12月  4 12:46 system
drwxr-xr-x 11 root root 4.0K 12月  4 12:46 wifi

从这里面可以看出来,ESP-IDF 已经为开发者提供了多种SDK实例,在编译环境搭建完成之后,这些实例就可以直接编译然后下载到ESP32上面看效果了。可以看到乐鑫官方已经为每一个目录下面编写了markdown文件,对这些工程文件进行详细的说明,因此注意查看每一个目录下的 markdown 文件非常重要。

其中,最简单的实例在 gat-started 目录下。

  root@qiao-virtual-machine:/esp32/sources/esp-idf/examples/get-started# ls -alh
total 20K
drwxr-xr-x  4 root root 4.0K 12月  4 12:46 .
drwxr-xr-x 13 root root 4.0K 12月  4 12:46 ..
drwxr-xr-x  3 root root 4.0K 12月  4 12:46 blink
drwxr-xr-x  3 root root 4.0K 12月  4 12:46 hello_world
-rw-r--r--  1 root root  197 12月  4 12:46 README.md

配置工程-开始编译

下面就从一个最简单的 hello_world 工程开始进行编译。

将 /esp32/sources/esp-idf/examples/get-started/ 目录下的 hello_world 实例拷贝到 /esp32/demos/ 下。

root@qiao-virtual-machine:/esp32/sources/esp-idf/examples/get-started# cp -fr hello_world /esp32/demos/

配置 IDF_PATH 环境变量。该环境变量是用来指向 ESP-IDF 的实际路径的,用于make编译使用。

export IDF_PATH=/esp32/sources/esp-idf

进入 /esp32/demos/hello_world 目录,开始配置工程。

cd /esp32/demos/hello_world/
make menuconfig

使用 make menuconfig 命令可以进入到工程配置页面,如下。
ESP32工程配置

进入 SDK tool configuration 中,配置 python版本为python2

进入 Bootloader config 中,配置bootloader的打印日志显示信息等级为warning

进入 Secure boot configuration,开发阶段建议关闭secure boot功能

进入 Serial flasher config,指定用于烧写程序的串口设备,一般使用USB转串口的选择/dev/ttyUSB0即可,设置默认的波特率为115200,Flash的SPI模式为DIO,SPI速率为40MHz,Flash的大小为2MB

进入 Partition Table设置分区表,为了更好的管理SPI Flash,ESP-IDF引入了分区表的概念,默认使用Single factory app,no OTA制作分区BIN

进入 Component config ,该配置选项是对ESP-IDF的内核进行的更加详细的配置

配置完成后,保存并退出,将会在工程根目录下新生成一个build文件夹和sdkconfig文件。

在工程根目录下输入make all将会编译所有的BIN文件,默认会编译bootloader、partition_table、app文件,并且还会提示如何进行烧写。下面贴出来一个基本配置工程的完整编译日志,仅供参考。

笔者的的编译日志之所以这么多,是因为在 配置工程 时 Component config 采用了默认配置。

root@qiao-virtual-machine:/esp32/demos/hello_world# make all
Toolchain path: /esp32/crosstools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
Compiler version: 5.2.0
Python requirements from /esp32/sources/esp-idf/requirements.txt are satisfied.
Building partitions from /esp32/sources/esp-idf/components/partition_table/partitions_singleapp.csv...
/bin/sh: 1: [: !=: unexpected operator
/bin/sh: 1: [: !=: unexpected operator
CC build/bootloader/bootloader_support/src/bootloader_clock.o
CC build/bootloader/bootloader_support/src/bootloader_common.o
CC build/bootloader/bootloader_support/src/bootloader_flash.o
CC build/bootloader/bootloader_support/src/bootloader_init.o
CC build/bootloader/bootloader_support/src/bootloader_random.o
CC build/bootloader/bootloader_support/src/bootloader_sha.o
CC build/bootloader/bootloader_support/src/bootloader_utility.o
CC build/bootloader/bootloader_support/src/efuse.o
CC build/bootloader/bootloader_support/src/esp_image_format.o
CC build/bootloader/bootloader_support/src/flash_encrypt.o
CC build/bootloader/bootloader_support/src/flash_partitions.o
CC build/bootloader/bootloader_support/src/flash_qio_mode.o
CC build/bootloader/bootloader_support/src/secure_boot.o
CC build/bootloader/bootloader_support/src/secure_boot_signatures.o
AR build/bootloader/bootloader_support/libbootloader_support.a
CC build/bootloader/log/log.o
AR build/bootloader/log/liblog.a
CC build/bootloader/spi_flash/spi_flash_rom_patch.o
AR build/bootloader/spi_flash/libspi_flash.a
CC build/bootloader/micro-ecc/micro-ecc/uECC.o
AR build/bootloader/micro-ecc/libmicro-ecc.a
CC build/bootloader/soc/esp32/cpu_util.o
CC build/bootloader/soc/esp32/gpio_periph.o
CC build/bootloader/soc/esp32/rtc_clk.o
CC build/bootloader/soc/esp32/rtc_clk_init.o
CC build/bootloader/soc/esp32/rtc_init.o
CC build/bootloader/soc/esp32/rtc_periph.o
CC build/bootloader/soc/esp32/rtc_pm.o
CC build/bootloader/soc/esp32/rtc_sleep.o
CC build/bootloader/soc/esp32/rtc_time.o
CC build/bootloader/soc/esp32/rtc_wdt.o
CC build/bootloader/soc/esp32/sdio_slave_periph.o
CC build/bootloader/soc/esp32/sdmmc_periph.o
CC build/bootloader/soc/esp32/soc_memory_layout.o
CC build/bootloader/soc/esp32/spi_periph.o
CC build/bootloader/soc/src//memory_layout_utils.o
AR build/bootloader/soc/libsoc.a
CC build/bootloader/main/bootloader_start.o
AR build/bootloader/main/libmain.a
LD build/bootloader/bootloader.elf
esptool.py v2.6-beta1
CC build/app_trace/app_trace.o
CC build/app_trace/app_trace_util.o
CC build/app_trace/host_file_io.o
CC build/app_trace/gcov/gcov_rtio.o
AR build/app_trace/libapp_trace.a
CC build/app_update/esp_ota_ops.o
AR build/app_update/libapp_update.a
CXX build/asio/asio/asio/src/asio.o
AR build/asio/libasio.a
AR build/aws_iot/libaws_iot.a
CC build/bootloader_support/src/bootloader_clock.o
CC build/bootloader_support/src/bootloader_common.o
CC build/bootloader_support/src/bootloader_flash.o
CC build/bootloader_support/src/bootloader_random.o
CC build/bootloader_support/src/bootloader_sha.o
CC build/bootloader_support/src/bootloader_utility.o
CC build/bootloader_support/src/efuse.o
CC build/bootloader_support/src/esp_image_format.o
CC build/bootloader_support/src/flash_encrypt.o
CC build/bootloader_support/src/flash_partitions.o
CC build/bootloader_support/src/flash_qio_mode.o
CC build/bootloader_support/src/secure_boot.o
CC build/bootloader_support/src/secure_boot_signatures.o
AR build/bootloader_support/libbootloader_support.a
CC build/bt/bt.o
AR build/bt/libbt.a
CC build/coap/libcoap/src/address.o
CC build/coap/libcoap/src/async.o
CC build/coap/libcoap/src/block.o
CC build/coap/libcoap/src/coap_time.o
CC build/coap/libcoap/src/debug.o
CC build/coap/libcoap/src/encode.o
CC build/coap/libcoap/src/hashkey.o
CC build/coap/libcoap/src/mem.o
CC build/coap/libcoap/src/net.o
CC build/coap/libcoap/src/option.o
CC build/coap/libcoap/src/pdu.o
CC build/coap/libcoap/src/resource.o
CC build/coap/libcoap/src/str.o
CC build/coap/libcoap/src/subscribe.o
CC build/coap/libcoap/src/uri.o
CC build/coap/port/coap_io_socket.o
AR build/coap/libcoap.a
CC build/console/linenoise/linenoise.o
CC build/console/argtable3/argtable3.o
CC build/console/commands.o
CC build/console/split_argv.o
AR build/console/libconsole.a
CXX build/cxx/cxx_exception_stubs.o
CXX build/cxx/cxx_guards.o
AR build/cxx/libcxx.a
CC build/driver/can.o
CC build/driver/gpio.o
CC build/driver/i2c.o
CC build/driver/i2s.o
CC build/driver/ledc.o
CC build/driver/mcpwm.o
CC build/driver/pcnt.o
CC build/driver/periph_ctrl.o
CC build/driver/rmt.o
CC build/driver/rtc_module.o
CC build/driver/sdio_slave.o
CC build/driver/sdmmc_host.o
CC build/driver/sdmmc_transaction.o
CC build/driver/sdspi_crc.o
CC build/driver/sdspi_host.o
CC build/driver/sdspi_transaction.o
CC build/driver/sigmadelta.o
CC build/driver/spi_common.o
CC build/driver/spi_master.o
CC build/driver/spi_slave.o
CC build/driver/timer.o
CC build/driver/uart.o
AR build/driver/libdriver.a
CC build/esp-tls/esp_tls.o
AR build/esp-tls/libesp-tls.a
CC build/esp32/brownout.o
CC build/esp32/cache_err_int.o
CC build/esp32/cache_sram_mmu.o
CC build/esp32/clk.o
CC build/esp32/coexist.o
CC build/esp32/core_dump.o
CC build/esp32/cpu_start.o
CC build/esp32/crosscore_int.o
CC build/esp32/dbg_stubs.o
CC build/esp32/dport_access.o
CC build/esp32/esp_err_to_name.o
CC build/esp32/esp_himem.o
CC build/esp32/esp_timer.o
CC build/esp32/esp_timer_esp32.o
CC build/esp32/ets_timer_legacy.o
CC build/esp32/event_default_handlers.o
CC build/esp32/event_loop.o
CC build/esp32/fast_crypto_ops.o
CC build/esp32/freertos_hooks.o
CC build/esp32/gdbstub.o
CC build/esp32/hw_random.o
CC build/esp32/intr_alloc.o
CC build/esp32/int_wdt.o
CC build/esp32/ipc.o
CC build/esp32/lib_printf.o
CC build/esp32/panic.o
CC build/esp32/phy_init.o
CC build/esp32/pm_esp32.o
CC build/esp32/pm_locks.o
CC build/esp32/pm_trace.o
CC build/esp32/reset_reason.o
CC build/esp32/restore.o
CC build/esp32/sleep_modes.o
CC build/esp32/spiram.o
CC build/esp32/spiram_psram.o
CC build/esp32/stack_check.o
CC build/esp32/system_api.o
CC build/esp32/task_wdt.o
CC build/esp32/wifi_init.o
CC build/esp32/wifi_os_adapter.o
CC build/esp32/hwcrypto/aes.o
CC build/esp32/hwcrypto/sha.o
AS build/esp32/dport_panic_highint_hdl.o
AR build/esp32/libesp32.a
CC build/esp_adc_cal/esp_adc_cal.o
AR build/esp_adc_cal/libesp_adc_cal.a
CC build/esp_event/default_event_loop.o
CC build/esp_event/esp_event.o
CC build/esp_event/esp_event_private.o
AR build/esp_event/libesp_event.a
CC build/esp_http_client/esp_http_client.o
CC build/esp_http_client/lib/http_auth.o
CC build/esp_http_client/lib/http_header.o
CC build/esp_http_client/lib/http_utils.o
AR build/esp_http_client/libesp_http_client.a
CC build/esp_http_server/src/httpd_main.o
CC build/esp_http_server/src/httpd_parse.o
CC build/esp_http_server/src/httpd_sess.o
CC build/esp_http_server/src/httpd_txrx.o
CC build/esp_http_server/src/httpd_uri.o
CC build/esp_http_server/src/util/ctrl_sock.o
AR build/esp_http_server/libesp_http_server.a
CC build/esp_https_ota/src/esp_https_ota.o
AR build/esp_https_ota/libesp_https_ota.a
CC build/esp_https_server/src/https_server.o
AR build/esp_https_server/libesp_https_server.a
CC build/esp_ringbuf/ringbuf.o
AR build/esp_ringbuf/libesp_ringbuf.a
CC build/ethernet/emac_dev.o
CC build/ethernet/emac_main.o
CC build/ethernet/eth_phy/phy_common.o
CC build/ethernet/eth_phy/phy_lan8720.o
CC build/ethernet/eth_phy/phy_tlk110.o
AR build/ethernet/libethernet.a
CC build/expat/expat/expat/lib/loadlibrary.o
CC build/expat/expat/expat/lib/xmlparse.o
CC build/expat/expat/expat/lib/xmlrole.o
CC build/expat/expat/expat/lib/xmltok.o
CC build/expat/expat/expat/lib/xmltok_impl.o
CC build/expat/expat/expat/lib/xmltok_ns.o
AR build/expat/libexpat.a
CC build/fatfs/src/diskio.o
CC build/fatfs/src/diskio_rawflash.o
CC build/fatfs/src/diskio_sdmmc.o
CC build/fatfs/src/diskio_wl.o
CC build/fatfs/src/ff.o
CC build/fatfs/src/ffsystem.o
CC build/fatfs/src/ffunicode.o
CC build/fatfs/src/vfs_fat.o
CC build/fatfs/src/vfs_fat_sdmmc.o
CC build/fatfs/src/vfs_fat_spiflash.o
AR build/fatfs/libfatfs.a
CC build/freemodbus/modbus/mb.o
CC build/freemodbus/port/portevent.o
CC build/freemodbus/port/portother.o
CC build/freemodbus/port/portserial.o
CC build/freemodbus/port/porttimer.o
CC build/freemodbus/modbus/ascii/mbascii.o
CC build/freemodbus/modbus/functions/mbfunccoils.o
CC build/freemodbus/modbus/functions/mbfuncdiag.o
CC build/freemodbus/modbus/functions/mbfuncdisc.o
CC build/freemodbus/modbus/functions/mbfuncholding.o
CC build/freemodbus/modbus/functions/mbfuncinput.o
CC build/freemodbus/modbus/functions/mbfuncother.o
CC build/freemodbus/modbus/functions/mbutils.o
CC build/freemodbus/modbus/rtu/mbcrc.o
CC build/freemodbus/modbus/rtu/mbrtu.o
CC build/freemodbus/modbus_controller/mbcontroller.o
AR build/freemodbus/libfreemodbus.a
CC build/freertos/croutine.o
CC build/freertos/event_groups.o
CC build/freertos/FreeRTOS-openocd.o
CC build/freertos/list.o
CC build/freertos/port.o
CC build/freertos/queue.o
CC build/freertos/tasks.o
CC build/freertos/timers.o
CC build/freertos/xtensa_init.o
CC build/freertos/xtensa_intr.o
CC build/freertos/xtensa_overlay_os_hook.o
AS build/freertos/portasm.o
AS build/freertos/xtensa_context.o
AS build/freertos/xtensa_intr_asm.o
AS build/freertos/xtensa_vector_defaults.o
AS build/freertos/xtensa_vectors.o
AR build/freertos/libfreertos.a
CC build/heap/heap_caps_init.o
CC build/heap/heap_caps.o
CC build/heap/multi_heap.o
CC build/heap/heap_trace.o
AR build/heap/libheap.a
AR build/idf_test/libidf_test.a
CC build/jsmn/src//jsmn.o
AR build/jsmn/libjsmn.a
CC build/json/cJSON/cJSON.o
CC build/json/cJSON/cJSON_Utils.o
AR build/json/libjson.a
CC build/libsodium/port/randombytes_esp32.o
CC build/libsodium/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.o
CC build/libsodium/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.o
CC build/libsodium/libsodium/src/libsodium/crypto_auth/crypto_auth.o
CC build/libsodium/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.o
CC build/libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.o
CC build/libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.o
CC build/libsodium/libsodium/src/libsodium/crypto_box/crypto_box.o
CC build/libsodium/libsodium/src/libsodium/crypto_box/crypto_box_easy.o
CC build/libsodium/libsodium/src/libsodium/crypto_box/crypto_box_seal.o
CC build/libsodium/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.o
CC build/libsodium/libsodium/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.o
CC build/libsodium/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.o
CC build/libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.o
CC build/libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.o
CC build/libsodium/libsodium/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/crypto_generichash.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/generichash_blake2.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.o
CC build/libsodium/libsodium/src/libsodium/crypto_hash/crypto_hash.o
CC build/libsodium/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256.o
CC build/libsodium/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512.o
CC build/libsodium/libsodium/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.o
CC build/libsodium/libsodium/src/libsodium/crypto_kdf/crypto_kdf.o
CC build/libsodium/libsodium/src/libsodium/crypto_kx/crypto_kx.o
CC build/libsodium/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.o
CC build/libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.o
CC build/libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/crypto_pwhash.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.o
CC build/libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.o
CC build/libsodium/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.o
CC build/libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.o
CC build/libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.o
CC build/libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.o
CC build/libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.o
CC build/libsodium/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.o
CC build/libsodium/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.o
CC build/libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.o
CC build/libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.o
CC build/libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/crypto_sign.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.o
CC build/libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/crypto_stream.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.o
CC build/libsodium/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.o
CC build/libsodium/libsodium/src/libsodium/crypto_verify/sodium/verify.o
CC build/libsodium/libsodium/src/libsodium/randombytes/randombytes.o
CC build/libsodium/libsodium/src/libsodium/sodium/core.o
CC build/libsodium/libsodium/src/libsodium/sodium/runtime.o
CC build/libsodium/libsodium/src/libsodium/sodium/utils.o
CC build/libsodium/libsodium/src/libsodium/sodium/version.o
CC build/libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.o
CC build/libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.o
AR build/libsodium/liblibsodium.a
CC build/log/log.o
AR build/log/liblog.a
CC build/lwip/apps/dhcpserver/dhcpserver.o
CC build/lwip/apps/ping/esp_ping.o
CC build/lwip/apps/ping/ping.o
CC build/lwip/lwip/src/api/api_lib.o
CC build/lwip/lwip/src/api/api_msg.o
CC build/lwip/lwip/src/api/err.o
CC build/lwip/lwip/src/api/netbuf.o
CC build/lwip/lwip/src/api/netdb.o
CC build/lwip/lwip/src/api/netifapi.o
CC build/lwip/lwip/src/api/sockets.o
CC build/lwip/lwip/src/api/tcpip.o
CC build/lwip/lwip/src/apps/sntp/sntp.o
CC build/lwip/lwip/src/core/def.o
CC build/lwip/lwip/src/core/dns.o
CC build/lwip/lwip/src/core/inet_chksum.o
CC build/lwip/lwip/src/core/init.o
CC build/lwip/lwip/src/core/ip.o
CC build/lwip/lwip/src/core/mem.o
CC build/lwip/lwip/src/core/memp.o
CC build/lwip/lwip/src/core/netif.o
CC build/lwip/lwip/src/core/pbuf.o
CC build/lwip/lwip/src/core/raw.o
CC build/lwip/lwip/src/core/stats.o
CC build/lwip/lwip/src/core/sys.o
CC build/lwip/lwip/src/core/tcp.o
CC build/lwip/lwip/src/core/tcp_in.o
CC build/lwip/lwip/src/core/tcp_out.o
CC build/lwip/lwip/src/core/timeouts.o
CC build/lwip/lwip/src/core/udp.o
CC build/lwip/lwip/src/core/ipv4/autoip.o
CC build/lwip/lwip/src/core/ipv4/dhcp.o
CC build/lwip/lwip/src/core/ipv4/etharp.o
CC build/lwip/lwip/src/core/ipv4/icmp.o
CC build/lwip/lwip/src/core/ipv4/igmp.o
CC build/lwip/lwip/src/core/ipv4/ip4_addr.o
CC build/lwip/lwip/src/core/ipv4/ip4.o
CC build/lwip/lwip/src/core/ipv4/ip4_frag.o
CC build/lwip/lwip/src/core/ipv6/dhcp6.o
CC build/lwip/lwip/src/core/ipv6/ethip6.o
CC build/lwip/lwip/src/core/ipv6/icmp6.o
CC build/lwip/lwip/src/core/ipv6/inet6.o
CC build/lwip/lwip/src/core/ipv6/ip6_addr.o
CC build/lwip/lwip/src/core/ipv6/ip6.o
CC build/lwip/lwip/src/core/ipv6/ip6_frag.o
CC build/lwip/lwip/src/core/ipv6/mld6.o
CC build/lwip/lwip/src/core/ipv6/nd6.o
CC build/lwip/lwip/src/netif/ethernet.o
CC build/lwip/lwip/src/netif/ethernetif.o
CC build/lwip/lwip/src/netif/lowpan6.o
CC build/lwip/lwip/src/netif/slipif.o
CC build/lwip/port/esp32/vfs_lwip.o
CC build/lwip/port/esp32/freertos/sys_arch.o
CC build/lwip/port/esp32/netif/dhcp_state.o
CC build/lwip/port/esp32/netif/ethernetif.o
CC build/lwip/port/esp32/netif/wlanif.o
CC build/lwip/port/esp32/debug/lwip_debug.o
AR build/lwip/liblwip.a
CC build/main/hello_world_main.o
AR build/main/libmain.a
CC build/mbedtls/mbedtls/library/aes.o
CC build/mbedtls/mbedtls/library/aesni.o
CC build/mbedtls/mbedtls/library/arc4.o
CC build/mbedtls/mbedtls/library/aria.o
CC build/mbedtls/mbedtls/library/asn1parse.o
CC build/mbedtls/mbedtls/library/asn1write.o
CC build/mbedtls/mbedtls/library/base64.o
CC build/mbedtls/mbedtls/library/bignum.o
CC build/mbedtls/mbedtls/library/blowfish.o
CC build/mbedtls/mbedtls/library/camellia.o
CC build/mbedtls/mbedtls/library/ccm.o
CC build/mbedtls/mbedtls/library/certs.o
CC build/mbedtls/mbedtls/library/chacha20.o
CC build/mbedtls/mbedtls/library/chachapoly.o
CC build/mbedtls/mbedtls/library/cipher.o
CC build/mbedtls/mbedtls/library/cipher_wrap.o
CC build/mbedtls/mbedtls/library/cmac.o
CC build/mbedtls/mbedtls/library/ctr_drbg.o
CC build/mbedtls/mbedtls/library/debug.o
CC build/mbedtls/mbedtls/library/des.o
CC build/mbedtls/mbedtls/library/dhm.o
CC build/mbedtls/mbedtls/library/ecdh.o
CC build/mbedtls/mbedtls/library/ecdsa.o
CC build/mbedtls/mbedtls/library/ecjpake.o
CC build/mbedtls/mbedtls/library/ecp.o
CC build/mbedtls/mbedtls/library/ecp_curves.o
CC build/mbedtls/mbedtls/library/entropy.o
CC build/mbedtls/mbedtls/library/entropy_poll.o
CC build/mbedtls/mbedtls/library/error.o
CC build/mbedtls/mbedtls/library/gcm.o
CC build/mbedtls/mbedtls/library/havege.o
CC build/mbedtls/mbedtls/library/hkdf.o
CC build/mbedtls/mbedtls/library/hmac_drbg.o
CC build/mbedtls/mbedtls/library/md2.o
CC build/mbedtls/mbedtls/library/md4.o
CC build/mbedtls/mbedtls/library/md5.o
CC build/mbedtls/mbedtls/library/md.o
CC build/mbedtls/mbedtls/library/md_wrap.o
CC build/mbedtls/mbedtls/library/memory_buffer_alloc.o
CC build/mbedtls/mbedtls/library/nist_kw.o
CC build/mbedtls/mbedtls/library/oid.o
CC build/mbedtls/mbedtls/library/padlock.o
CC build/mbedtls/mbedtls/library/pem.o
CC build/mbedtls/mbedtls/library/pk.o
CC build/mbedtls/mbedtls/library/pkcs11.o
CC build/mbedtls/mbedtls/library/pkcs12.o
CC build/mbedtls/mbedtls/library/pkcs5.o
CC build/mbedtls/mbedtls/library/pkparse.o
CC build/mbedtls/mbedtls/library/pk_wrap.o
CC build/mbedtls/mbedtls/library/pkwrite.o
CC build/mbedtls/mbedtls/library/platform.o
CC build/mbedtls/mbedtls/library/platform_util.o
CC build/mbedtls/mbedtls/library/poly1305.o
CC build/mbedtls/mbedtls/library/ripemd160.o
CC build/mbedtls/mbedtls/library/rsa.o
CC build/mbedtls/mbedtls/library/rsa_internal.o
CC build/mbedtls/mbedtls/library/sha1.o
CC build/mbedtls/mbedtls/library/sha256.o
CC build/mbedtls/mbedtls/library/sha512.o
CC build/mbedtls/mbedtls/library/ssl_cache.o
CC build/mbedtls/mbedtls/library/ssl_ciphersuites.o
CC build/mbedtls/mbedtls/library/ssl_cli.o
CC build/mbedtls/mbedtls/library/ssl_cookie.o
CC build/mbedtls/mbedtls/library/ssl_srv.o
CC build/mbedtls/mbedtls/library/ssl_ticket.o
CC build/mbedtls/mbedtls/library/ssl_tls.o
CC build/mbedtls/mbedtls/library/threading.o
CC build/mbedtls/mbedtls/library/timing.o
CC build/mbedtls/mbedtls/library/version.o
CC build/mbedtls/mbedtls/library/version_features.o
CC build/mbedtls/mbedtls/library/x509.o
CC build/mbedtls/mbedtls/library/x509_create.o
CC build/mbedtls/mbedtls/library/x509_crl.o
CC build/mbedtls/mbedtls/library/x509_crt.o
CC build/mbedtls/mbedtls/library/x509_csr.o
CC build/mbedtls/mbedtls/library/x509write_crt.o
CC build/mbedtls/mbedtls/library/x509write_csr.o
CC build/mbedtls/mbedtls/library/xtea.o
CC build/mbedtls/port/esp_bignum.o
CC build/mbedtls/port/esp_hardware.o
CC build/mbedtls/port/esp_mem.o
CC build/mbedtls/port/esp_sha1.o
CC build/mbedtls/port/esp_sha256.o
CC build/mbedtls/port/esp_sha512.o
CC build/mbedtls/port/mbedtls_debug.o
CC build/mbedtls/port/net_sockets.o
AR build/mbedtls/libmbedtls.a
CC build/mdns/mdns.o
CC build/mdns/mdns_console.o
CC build/mdns/mdns_networking.o
AR build/mdns/libmdns.a
CC build/micro-ecc/micro-ecc/uECC.o
AR build/micro-ecc/libmicro-ecc.a
CC build/mqtt/esp-mqtt/mqtt_client.o
CC build/mqtt/esp-mqtt/lib/mqtt_msg.o
CC build/mqtt/esp-mqtt/lib/mqtt_outbox.o
CC build/mqtt/esp-mqtt/lib/platform_esp32_idf.o
AR build/mqtt/libmqtt.a
CC build/newlib/locks.o
CC build/newlib/pthread.o
CC build/newlib/random.o
CC build/newlib/reent_init.o
CC build/newlib/select.o
CC build/newlib/syscalls.o
CC build/newlib/syscall_table.o
CC build/newlib/termios.o
CC build/newlib/time.o
CC build/newlib/utime.o
AR build/newlib/libnewlib.a
CC build/nghttp/nghttp2/lib/nghttp2_buf.o
CC build/nghttp/nghttp2/lib/nghttp2_callbacks.o
CC build/nghttp/nghttp2/lib/nghttp2_debug.o
CC build/nghttp/nghttp2/lib/nghttp2_frame.o
CC build/nghttp/nghttp2/lib/nghttp2_hd.o
CC build/nghttp/nghttp2/lib/nghttp2_hd_huffman.o
CC build/nghttp/nghttp2/lib/nghttp2_hd_huffman_data.o
CC build/nghttp/nghttp2/lib/nghttp2_helper.o
CC build/nghttp/nghttp2/lib/nghttp2_http.o
CC build/nghttp/nghttp2/lib/nghttp2_map.o
CC build/nghttp/nghttp2/lib/nghttp2_mem.o
CC build/nghttp/nghttp2/lib/nghttp2_npn.o
CC build/nghttp/nghttp2/lib/nghttp2_option.o
CC build/nghttp/nghttp2/lib/nghttp2_outbound_item.o
CC build/nghttp/nghttp2/lib/nghttp2_pq.o
CC build/nghttp/nghttp2/lib/nghttp2_priority_spec.o
CC build/nghttp/nghttp2/lib/nghttp2_queue.o
CC build/nghttp/nghttp2/lib/nghttp2_rcbuf.o
CC build/nghttp/nghttp2/lib/nghttp2_session.o
CC build/nghttp/nghttp2/lib/nghttp2_stream.o
CC build/nghttp/nghttp2/lib/nghttp2_submit.o
CC build/nghttp/nghttp2/lib/nghttp2_version.o
CC build/nghttp/port/http_parser.o
AR build/nghttp/libnghttp.a
CXX build/nvs_flash/src/nvs_api.o
CXX build/nvs_flash/src/nvs_encr.o
CXX build/nvs_flash/src/nvs_item_hash_list.o
CXX build/nvs_flash/src/nvs_ops.o
CXX build/nvs_flash/src/nvs_page.o
CXX build/nvs_flash/src/nvs_pagemanager.o
CXX build/nvs_flash/src/nvs_storage.o
CXX build/nvs_flash/src/nvs_types.o
AR build/nvs_flash/libnvs_flash.a
CC build/openssl/library/ssl_cert.o
CC build/openssl/library/ssl_lib.o
CC build/openssl/library/ssl_methods.o
CC build/openssl/library/ssl_pkey.o
CC build/openssl/library/ssl_stack.o
CC build/openssl/library/ssl_x509.o
CC build/openssl/platform/ssl_pm.o
CC build/openssl/platform/ssl_port.o
AR build/openssl/libopenssl.a
CC build/protobuf-c/protobuf-c/protobuf-c/protobuf-c.o
AR build/protobuf-c/libprotobuf-c.a
CC build/protocomm/src/common/protocomm.o
CC build/protocomm/src/security/security0.o
CC build/protocomm/src/security/security1.o
CC build/protocomm/proto-c/constants.pb-c.o
CC build/protocomm/proto-c/sec0.pb-c.o
CC build/protocomm/proto-c/sec1.pb-c.o
CC build/protocomm/proto-c/session.pb-c.o
CC build/protocomm/src/transports/protocomm_console.o
CC build/protocomm/src/transports/protocomm_httpd.o
AR build/protocomm/libprotocomm.a
CC build/pthread/pthread.o
CC build/pthread/pthread_cond_var.o
CC build/pthread/pthread_local_storage.o
AR build/pthread/libpthread.a
CC build/sdmmc/sdmmc_cmd.o
CC build/sdmmc/sdmmc_common.o
CC build/sdmmc/sdmmc_init.o
CC build/sdmmc/sdmmc_io.o
CC build/sdmmc/sdmmc_mmc.o
CC build/sdmmc/sdmmc_sd.o
AR build/sdmmc/libsdmmc.a
CC build/smartconfig_ack/smartconfig_ack.o
AR build/smartconfig_ack/libsmartconfig_ack.a
CC build/soc/esp32/cpu_util.o
CC build/soc/esp32/gpio_periph.o
CC build/soc/esp32/rtc_clk.o
CC build/soc/esp32/rtc_clk_init.o
CC build/soc/esp32/rtc_init.o
CC build/soc/esp32/rtc_periph.o
CC build/soc/esp32/rtc_pm.o
CC build/soc/esp32/rtc_sleep.o
CC build/soc/esp32/rtc_time.o
CC build/soc/esp32/rtc_wdt.o
CC build/soc/esp32/sdio_slave_periph.o
CC build/soc/esp32/sdmmc_periph.o
CC build/soc/esp32/soc_memory_layout.o
CC build/soc/esp32/spi_periph.o
CC build/soc/src//memory_layout_utils.o
AR build/soc/libsoc.a
CC build/spi_flash/cache_utils.o
CC build/spi_flash/flash_mmap.o
CC build/spi_flash/flash_ops.o
CC build/spi_flash/partition.o
CC build/spi_flash/spi_flash_rom_patch.o
AR build/spi_flash/libspi_flash.a
CC build/spiffs/esp_spiffs.o
CC build/spiffs/spiffs_api.o
CC build/spiffs/spiffs/src/spiffs_cache.o
CC build/spiffs/spiffs/src/spiffs_check.o
CC build/spiffs/spiffs/src/spiffs_gc.o
CC build/spiffs/spiffs/src/spiffs_hydrogen.o
CC build/spiffs/spiffs/src/spiffs_nucleus.o
AR build/spiffs/libspiffs.a
CC build/tcp_transport/transport.o
CC build/tcp_transport/transport_ssl.o
CC build/tcp_transport/transport_tcp.o
CC build/tcp_transport/transport_utils.o
CC build/tcp_transport/transport_ws.o
AR build/tcp_transport/libtcp_transport.a
CC build/tcpip_adapter/tcpip_adapter_lwip.o
AR build/tcpip_adapter/libtcpip_adapter.a
CC build/ulp/ulp.o
CC build/ulp/ulp_macro.o
AR build/ulp/libulp.a
CC build/unity/unity/src/unity.o
CC build/unity/unity_port_esp32.o
CC build/unity/unity_runner.o
AR build/unity/libunity.a
CC build/vfs/vfs.o
CC build/vfs/vfs_uart.o
AR build/vfs/libvfs.a
CXX build/wear_levelling/crc32.o
CXX build/wear_levelling/Partition.o
CXX build/wear_levelling/SPI_Flash.o
CXX build/wear_levelling/wear_levelling.o
CXX build/wear_levelling/WL_Ext_Perf.o
CXX build/wear_levelling/WL_Ext_Safe.o
CXX build/wear_levelling/WL_Flash.o
AR build/wear_levelling/libwear_levelling.a
CC build/wifi_provisioning/src/wifi_config.o
CC build/wifi_provisioning/proto-c/wifi_config.pb-c.o
CC build/wifi_provisioning/proto-c/wifi_constants.pb-c.o
AR build/wifi_provisioning/libwifi_provisioning.a
CC build/wpa_supplicant/src/crypto/aes-cbc.o
CC build/wpa_supplicant/src/crypto/aes-internal.o
CC build/wpa_supplicant/src/crypto/aes-internal-dec.o
CC build/wpa_supplicant/src/crypto/aes-internal-enc.o
CC build/wpa_supplicant/src/crypto/aes-unwrap.o
CC build/wpa_supplicant/src/crypto/aes-wrap.o
CC build/wpa_supplicant/src/crypto/bignum.o
CC build/wpa_supplicant/src/crypto/crypto_internal.o
CC build/wpa_supplicant/src/crypto/crypto_internal-cipher.o
CC build/wpa_supplicant/src/crypto/crypto_internal-modexp.o
CC build/wpa_supplicant/src/crypto/crypto_internal-rsa.o
CC build/wpa_supplicant/src/crypto/crypto_mbedtls.o
CC build/wpa_supplicant/src/crypto/des-internal.o
CC build/wpa_supplicant/src/crypto/dh_group5.o
CC build/wpa_supplicant/src/crypto/dh_groups.o
CC build/wpa_supplicant/src/crypto/md4-internal.o
CC build/wpa_supplicant/src/crypto/md5.o
CC build/wpa_supplicant/src/crypto/md5-internal.o
CC build/wpa_supplicant/src/crypto/ms_funcs.o
CC build/wpa_supplicant/src/crypto/rc4.o
CC build/wpa_supplicant/src/crypto/sha1.o
CC build/wpa_supplicant/src/crypto/sha1-internal.o
CC build/wpa_supplicant/src/crypto/sha1-pbkdf2.o
CC build/wpa_supplicant/src/crypto/sha256.o
CC build/wpa_supplicant/src/crypto/sha256-internal.o
CC build/wpa_supplicant/port/os_xtensa.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-cbc.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-unwrap.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-wrap.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal-modexp.o
CC build/wpa_supplicant/src/fast_crypto/fast_sha256.o
CC build/wpa_supplicant/src/fast_crypto/fast_sha256-internal.o
CC build/wpa_supplicant/src/wpa2/eap_peer/chap.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_common.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_mschapv2.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_peap.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_peap_common.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_tls.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_tls_common.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_ttls.o
CC build/wpa_supplicant/src/wpa2/eap_peer/mschapv2.o
CC build/wpa_supplicant/src/wpa2/tls/asn1.o
CC build/wpa_supplicant/src/wpa2/tls/bignum.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs1.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs5.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs8.o
CC build/wpa_supplicant/src/wpa2/tls/rsa.o
CC build/wpa_supplicant/src/wpa2/tls/tls_internal.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client_read.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client_write.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_common.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_cred.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_record.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server_read.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server_write.o
CC build/wpa_supplicant/src/wpa2/tls/x509v3.o
CC build/wpa_supplicant/src/wpa2/utils/base64.o
CC build/wpa_supplicant/src/wpa2/utils/ext_password.o
CC build/wpa_supplicant/src/wps/eap_common.o
CC build/wpa_supplicant/src/wps/uuid.o
CC build/wpa_supplicant/src/wps/wps_attr_build.o
CC build/wpa_supplicant/src/wps/wps_attr_parse.o
CC build/wpa_supplicant/src/wps/wps_attr_process.o
CC build/wpa_supplicant/src/wps/wps.o
CC build/wpa_supplicant/src/wps/wps_common.o
CC build/wpa_supplicant/src/wps/wps_dev_attr.o
CC build/wpa_supplicant/src/wps/wps_enrollee.o
CC build/wpa_supplicant/src/wps/wps_registrar.o
CC build/wpa_supplicant/src/wps/wps_validate.o
AR build/wpa_supplicant/libwpa_supplicant.a
CC build/xtensa-debug-module/eri.o
CC build/xtensa-debug-module/trax.o
AR build/xtensa-debug-module/libxtensa-debug-module.a
Generating libapp_trace.a.sections_info
Generating libapp_update.a.sections_info
Generating libasio.a.sections_info
Generating libaws_iot.a.sections_info
Generating libbootloader_support.a.sections_info
Generating libbt.a.sections_info
Generating libcoap.a.sections_info
Generating libconsole.a.sections_info
Generating libcxx.a.sections_info
Generating libdriver.a.sections_info
Generating libesp-tls.a.sections_info
Generating libesp32.a.sections_info
Generating libesp_adc_cal.a.sections_info
Generating libesp_event.a.sections_info
Generating libesp_http_client.a.sections_info
Generating libesp_http_server.a.sections_info
Generating libesp_https_ota.a.sections_info
Generating libesp_https_server.a.sections_info
Generating libesp_ringbuf.a.sections_info
Generating libethernet.a.sections_info
Generating libexpat.a.sections_info
Generating libfatfs.a.sections_info
Generating libfreemodbus.a.sections_info
Generating libfreertos.a.sections_info
Generating libheap.a.sections_info
Generating libidf_test.a.sections_info
Generating libjsmn.a.sections_info
Generating libjson.a.sections_info
Generating liblibsodium.a.sections_info
Generating liblog.a.sections_info
Generating liblwip.a.sections_info
Generating libmain.a.sections_info
Generating libmbedtls.a.sections_info
Generating libmdns.a.sections_info
Generating libmicro-ecc.a.sections_info
Generating libmqtt.a.sections_info
Generating libnewlib.a.sections_info
Generating libnghttp.a.sections_info
Generating libnvs_flash.a.sections_info
Generating libopenssl.a.sections_info
Generating libprotobuf-c.a.sections_info
Generating libprotocomm.a.sections_info
Generating libpthread.a.sections_info
Generating libsdmmc.a.sections_info
Generating libsmartconfig_ack.a.sections_info
Generating libsoc.a.sections_info
Generating libspi_flash.a.sections_info
Generating libspiffs.a.sections_info
Generating libtcp_transport.a.sections_info
Generating libtcpip_adapter.a.sections_info
Generating libulp.a.sections_info
Generating libunity.a.sections_info
Generating libvfs.a.sections_info
Generating libwear_levelling.a.sections_info
Generating libwifi_provisioning.a.sections_info
Generating libwpa_supplicant.a.sections_info
Generating libxtensa-debug-module.a.sections_info
Generating esp32.common.ld
LD build/hello-world.elf
esptool.py v2.6-beta1
To flash all build output, run 'make flash' or:
python /esp32/sources/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 /esp32/demos/hello_world/build/bootloader/bootloader.bin 0x10000 /esp32/demos/hello_world/build/hello-world.bin 0x8000 /esp32/demos/hello_world/build/partitions_singleapp.bin

编译完成后,就会在 /esp32/demos/hello_world/build 目录下生成 partitions_singleapp.bin 烧写文件,下面就可以将该烧写文件烧录到ESP32中了。

烧写测试

将 NodeMCU-32S接入到电脑上。如果在 /dev/ 目录识别到 ttyUSB0 则代表已经识别出 NodeMCU-32S的串口了。

root@qiao-virtual-machine:/dev# ls ttyUSB*
ttyUSB0

开始烧写

首先长按Boot键,同时按 reset键,系统将会进入下载模式,然后 make flash.

root@qiao-virtual-machine:/esp32/demos/hello_world# make flash
Toolchain path: /esp32/crosstools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
Compiler version: 5.2.0
Python requirements from /esp32/sources/esp-idf/requirements.txt are satisfied.
/bin/sh: 1: [: !=: unexpected operator
/bin/sh: 1: [: !=: unexpected operator
Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...
esptool.py v2.6-beta1
Serial port /dev/ttyUSB0
Connecting........___
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
MAC: 24:0a:c4:12:2f:4c
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 21104 bytes to 12616...
Wrote 21104 bytes (12616 compressed) at 0x00001000 in 1.1 seconds (effective 151.5 kbit/s)...
Hash of data verified.
Compressed 151008 bytes to 73625...
Wrote 151008 bytes (73625 compressed) at 0x00010000 in 6.5 seconds (effective 185.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 103...
Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 1698.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
测试验证

烧写完成后,使用 minicom 工具打开 /dev/ttyUSB0 串口,就能看到打印信息了 :)。

Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...
Restarting in 3 seconds...
Restarting in 2 seconds...
Restarting in 1 seconds...
Restarting in 0 seconds...
Restarting now.
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:5060
load:0x40078000,len:9768
load:0x40080400,len:6180
entry 0x4008070c
I (91) cpu_start: Pro cpu up.
I (92) cpu_start: Starting app cpu, entry point is 0x40080e90
I (77) cpu_start: App cpu up.
I (94) heap_init: Initializing. RAM available for dynamic allocation:
I (101) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (107) heap_init: At 3FFB2ED0 len 0002D130 (180 KiB): DRAM
I (113) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (120) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (126) heap_init: At 4008944C len 00016BB4 (90 KiB): IRAM
I (132) cpu_start: Pro cpu start user code
I (150) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...

因为 hello_world 工程中最后会对esp32进行重启,因此查看的打印日志也会不断的看到 ESP32在重启。

  /* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"


void app_main()
{
printf("Hello world!\n");

/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is ESP32 chip with %d CPU cores, WiFi%s%s, ",
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

printf("silicon revision %d, ", chip_info.revision);

printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

for (int i = 10; i >= 0; i--) {
printf("Restarting in %d seconds...\n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
printf("Restarting now.\n");
fflush(stdout);
esp_restart();
}

环境搭建过程中遇到的问题记录

安装 pip 和 python库

pip 安装

由于我搭建的 ESP32 开发环境是在新装的ubuntu上面搭建的,系统中缺少一些 python 必备的库,需要使用 pip 安装。因此需要在ubuntu上安装python-2.7 的 pip。

安装方法

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py
python 库依赖
# This is a list of python packages needed for ESP-IDF. This file is used with pip.
# Please see the Get Started section of the ESP-IDF Programming Guide for further information.
#
setuptools
# The setuptools package is required to install source distributions and on some systems is not installed by default.
# Please keep it as the first item of this list.
#
pyserial>=3.0
future>=0.15.2
cryptography>=2.1.4

结尾

ESP32 的开发环境搭建完成了,下面就就开始正式的ESP32开发了。同样的,笔记教程会不断更新中…

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘雪冰峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值