Programming the ESP32 With an ARM Cortex-M USB CDC Gateway

The Espressif ESP32 devices are everywhere: They are inexpensive, readily available, and the Espressif IDF environment and build system actually is pretty good, working well for me, including Eclipse (see “Building and Flashing ESP32 Applications with Eclipse“). The default way to program an ESP32 is to a) enter UART bootloader by pressing some pushbuttons, and b) flash the application with ESP-IDF using a USB cable.

You may also like: The Ultimate IoT Hardware Comparison Guide

That works fine if the ESP32 is directly connected to the host PC. But in my case, it is behind an NXP Kinetis K22FX512 ARM Cortex-M4F microcontroller and not directly accessible by the host PC. So, I had to find a way how to allow boot loading the ESP32 through the ARM Cortex-M which is the topic of this article.

Create a BOOT.bin, Program an SD Card, and Boot a ZC706 Using Windows

This post shows you how to create a BOOT.bin with a Hello World bare-metal application and a bitstream created in [Run Hello World on a ZC702], how to program the BOOT.bin onto the SD Card using Windows (copy it to the SD card), and how to boot the ZC702 from the SD card and see output from the serial port.

Before You Get Started

Generate Bitstreams, Hello World Binaries, and Test Everything

This post assumes you've generated the bitstreams, Hello World binaries, and have tested everything as listed in [Run Hello World on a ZC702], but on the ZC706. All of the instructions are the same except for two things: