ESP32 Ubuntu开发环境搭建

在Ubuntu下搭建ESP32开发环境
文章目录

  • 在Ubuntu下搭建ESP32开发环境
    • 说明
    • 开发环境
    • 硬件准备
      • ESP32(NodeMCU-32S)
      • NodeMCU-32S 引脚图
    • 搭建步骤
      • 安装编译依赖工具
      • 下载并安装交叉编译工具链
      • 配置环境变量
      • 下载ESP-IDF源码
        • 源码目录说明
        • 主要目录说明
      • 配置工程-开始编译
      • 烧写测试
          • 测试验证
    • 环境搭建过程中遇到的问题记录
      • 安装 pip 和 python库
        • pip 安装
        • python 库依赖
    • 结尾

在 CSDN 上面查找ESP8266 系列的博文已经非常多了,但是查找ESP32的文章还是有点缺少,ESP32已经出来很长时间了,使用方法和ES8266非常类似,开发也非常简单。下面就对ESP32的做一些总结。
本篇文章先描述一下开发环境搭建过程。
说明
  1. 本片文章中的部分图片引用自安信可官方Wiki。
  2. 乐鑫官方也提供了ESP32的SDK的编程指南,参见ESP-IDF编程指南。
开发环境 该开发环境搭建是在 Ubuntu-14.04 (64-bit) 完成的。
硬件准备 ESP32(NodeMCU-32S)
嵌入式平台使用的是安信可科技提供的NodeMCU-32S。
ESP32 Ubuntu开发环境搭建
文章图片

NodeMCU-32S 引脚图
ESP32 Ubuntu开发环境搭建
文章图片

搭建步骤 在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.shCMakeLists.txtcomponentsCONTRIBUTING.rstdocsexamplesKconfigLICENSEmakeREADME.mdrequirements.txttools

主要目录说明 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-x8 root root 4.0K 12月4 12:46 .. drwxr-xr-x 26 root root 4.0K 12月4 12:46 bluetooth drwxr-xr-x3 root root 4.0K 12月4 12:46 build_system drwxr-xr-x4 root root 4.0K 12月4 12:46 ethernet drwxr-xr-x4 root root 4.0K 12月4 12:46 get-started drwxr-xr-x4 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-x6 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-x9 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-x4 root root 4.0K 12月4 12:46 . drwxr-xr-x 13 root root 4.0K 12月4 12:46 .. drwxr-xr-x3 root root 4.0K 12月4 12:46 blink drwxr-xr-x3 root root 4.0K 12月4 12:46 hello_world -rw-r--r--1 root root197 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 Ubuntu开发环境搭建
文章图片

进入 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 Jun8 2016 00:22:57rst: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 ExampleThis 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 #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 Ubuntu开发环境搭建】ESP32 的开发环境搭建完成了,下面就就开始正式的ESP32开发了。同样的,笔记教程会不断更新中…

    推荐阅读