微處理器 - Espressif ESP8266MOD (NodeMCU ESP8266) - Build esp-idf



參考資訊:
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html#introduction

步驟如下:

$ sudo apt-get update
$ sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools

$ cd
$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
$ tar xvf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
$ sudo mv xtensa-esp32-elf /opt/esp32

$ cd
$ git clone --recursive https://github.com/espressif/esp-idf.git
$ export IDF_PATH=~/esp-idf
$ cd esp-idf
$ python -m pip install --user -r requirements.txt
$ cd examples/get-started/hello_world
$ export PATH=$PATH:/opt/esp32/bin
$ make menuconfig



編譯

$ make

插入USB後,執行如下命令燒錄

$ make flash
    Toolchain path: /opt/esp32/bin//xtensa-esp32-elf-gcc
    Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
    Compiler version: 5.2.0
    Python requirements from /home/steward/Downloads/esp-idf/requirements.txt are satisfied.

    App "hello-world" version: v4.0-dev-478-gdf61612f8
    Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...
    esptool.py v2.7-dev
    Serial port /dev/ttyUSB0
    Connecting....
    Chip is ESP32D0WDQ6 (revision 1)
    Features: WiFi, BT, Dual Core, Coding Scheme None
    MAC: 30:ae:a4:1c:68:ec
    Uploading stub...
    Running stub...
    Stub running...
    Configuring flash size...
    Auto-detected Flash size: 4MB
    Flash params set to 0x0220
    Compressed 24464 bytes to 14609...
    Wrote 24464 bytes (14609 compressed) at 0x00001000 in 1.3 seconds (effective 151.3 kbit/s)...
    Hash of data verified.
    Compressed 146464 bytes to 70368...
    Wrote 146464 bytes (70368 compressed) at 0x00010000 in 6.2 seconds (effective 188.0 kbit/s)...
    Hash of data verified.
    Compressed 3072 bytes to 103...
    Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 1762.2 kbit/s)...
    Hash of data verified.

    Leaving...
    Hard resetting via RTS pin...

接著連接UART的RX、TX就可以看到輸出(Baudrate: 115200bps)

OPTIONS: I18n 
Compiled on Apr 22 2017, 09:14:19.
Port /dev/ttyUSB0, 14:56:04

Press CTRL-A Z for help on special keys

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_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:6364
load:0x40078000,len:11304
load:0x40080400,len:6700
entry 0x40080764
I (29) boot: ESP-IDF v4.0-dev-478-gdf61612f8 2nd stage bootloader
I (29) boot: compile time 14:51:07
I (29) boot: Enabling RNG early entropy source...
I (35) boot: SPI Speed      : 40MHz
I (39) boot: SPI Mode       : DIO
I (43) boot: SPI Flash Size : 4MB
I (47) boot: Partition Table:
I (51) boot: ## Label            Usage          Type ST Offset   Length
I (58) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (66) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (73) boot:  2 factory          factory app      00 00 00010000 00100000
I (81) boot: End of partition table
I (85) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x07794 ( 30612) map
I (104) esp_image: segment 1: paddr=0x000177bc vaddr=0x3ffb0000 size=0x01eac (  7852) load
I (108) esp_image: segment 2: paddr=0x00019670 vaddr=0x40080000 size=0x00400 (  1024) load
I (112) esp_image: segment 3: paddr=0x00019a78 vaddr=0x40080400 size=0x06598 ( 26008) load
I (131) esp_image: segment 4: paddr=0x00020018 vaddr=0x400d0018 size=0x1258c ( 75148) map
I (158) esp_image: segment 5: paddr=0x000325ac vaddr=0x40086998 size=0x01650 (  5712) load
I (165) boot: Loaded app from partition at offset 0x10000
I (165) boot: Disabling RNG early entropy source...
I (167) cpu_start: Pro cpu up.
I (171) cpu_start: Application information:
I (176) cpu_start: Project name:     hello-world
I (181) cpu_start: App version:      v4.0-dev-478-gdf61612f8
I (187) cpu_start: Compile time:     May  6 2019 14:51:10
I (193) cpu_start: ELF file SHA256:  b0132b11b757dd84...
I (199) cpu_start: ESP-IDF:          v4.0-dev-478-gdf61612f8
I (206) cpu_start: Starting app cpu, entry point is 0x40080fdc
I (0) cpu_start: App cpu up.
I (216) heap_init: Initializing. RAM available for dynamic allocation:
I (223) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (229) heap_init: At 3FFB2ED8 len 0002D128 (180 KiB): DRAM
I (235) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (242) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (248) heap_init: At 40087FE8 len 00018018 (96 KiB): IRAM
I (254) cpu_start: Pro cpu start user code
I (272) 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

假如無法燒錄,則可以使用esptool.py進行燒錄

$ cd $IDF_PATH/components/esptool_py/esptool
$ ./esptool.py --baud 920600 write_flash --flash_mode dio --flash_size 4MB 0 hello-world.bin