ESP8266_RTOS_SDK V3を使ってみる

makeのオプション


makeのオプションは以下で確認する事ができます。
全く分からないオプションもいくつかあります。
$ make help
Toolchain path: /home/nop/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: esp-2020r3-49-gd5524c1
Compiler version: 8.4.0
Python requirements from /home/nop/ESP8266_RTOS_SDK/requirements.txt are satisfied.
Welcome to Espressif IDF build system. Some useful make targets:

make menuconfig - Configure IDF project
make defconfig - Set defaults for all new configuration options

make all - Build app, bootloader, partition table
make flash - Flash app, bootloader, partition table to a chip
make clean - Remove all build output
make size - Display the static memory footprint of the app
make size-components, size-files - Finer-grained memory footprints
make size-symbols - Per symbol memory footprint. Requires COMPONENT=<component>
make erase_flash - Erase entire flash contents
make erase_otadata - Erase ota_data partition; First bootable partition (factory or OTAx) will be used on next boot.
                     This assumes this project's partition table is the one flashed on the device.
make monitor - Run idf_monitor tool to monitor serial output from app
make simple_monitor - Monitor serial output on terminal console
make list-components - List all components in the project

make app - Build just the app
make app-flash - Flash just the app
make app-clean - Clean just the app
make print_flash_cmd - Print the arguments for esptool when flash
make check_python_dependencies - Check that the required python packages are installed

See also 'make bootloader', 'make bootloader-flash', 'make bootloader-clean',
'make partition_table', etc, etc.



make defconfigの説明がこ ちらにありました。

Custom sdkconfig defaults
For example projects or other projects where you don’t want to specify a full sdkconfig configuration, but you do want to override some key values from the esp-idf defaults, it is possible to create a file sdkconfig.
defaults in the project directory.
This file will be used when running make defconfig, or creating a new config from scratch.

Google君にお願いしました。

カスタムsdkconfigのデフォルト
たとえば、完全なsdkconfig設定を指定したくないが、esp-idfのデフォルト値からいくつかのキー値を上書きしたいプロジェクトやそ の他のプロジェクトでは、ファイルsdkconfigを作成することが可能です。
プロジェクトディレクトリ内のデフォルト。
このファイルは、make defconfigを実行するとき、または新しい設定を最初から作成するときに使用されます。

プロジェクトのビルドはsdkconfigの内容に従って行われます。
普通はmake menuconfigでsdkconfigを作成しますが、このコマンドでもsdkconfigを作ってくれます。
カレントディレクトリにsdkconfig.defaultsが有るときは、その内容が反映されます。



make sizeを実行してみました。
どうやら書き込むイメージのサイズを表示するようです。
$ make size
Toolchain path: /home/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: esp-2020r3-49-gd5524c1
Compiler version: 8.4.0
Python requirements from /home/esp8266/ESP8266_RTOS_SDK/requirements.txt are satisfied.
App "hello-world" version: v3.4-dev-415-ge09f004f
Total sizes:
 DRAM .data size:    1364 bytes
 DRAM .bss  size:    6448 bytes
Used static DRAM:    7812 bytes (  90492 available, 7.9% used)
Used static IRAM:   22232 bytes (  26920 available, 45.2% used)
      Flash code:  111186 bytes
    Flash rodata:   28376 bytes
Total image size:~ 163158 bytes (.bin may be padded larger)



make erase_flashを実行してみました。
Flashが全てクリアされます。
$ make erase_flash
Toolchain path: /home/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: esp-2020r3-49-gd5524c1
Compiler version: 8.4.0
Python requirements from /home/esp8266/ESP8266_RTOS_SDK/requirements.txt are satisfied.
Erasing entire flash...
esptool.py v2.4.0
Connecting....
Chip is ESP8266EX
Features: WiFi
MAC: 84:0d:8e:8c:f4:00
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 1.3s
Hard resetting via RTS pin...



make list-componentsを実行してみました。
インストールされているコンポーネントの一覧が表示されます。
jsonやmqttのライブラリが含まれていることが分かります。
$ make list-components
Toolchain path: /home/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: esp-2020r3-49-gd5524c1
Compiler version: 8.4.0
Python requirements from /home/esp8266/ESP8266_RTOS_SDK/requirements.txt are satisfied.
*******************************************************************************
COMPONENT_DIRS (components searched for here)
/home/esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/components
/home/esp8266/ESP8266_RTOS_SDK/components
/home/esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/main
*******************************************************************************
TEST_COMPONENTS (list of test component names)

*******************************************************************************
TEST_EXCLUDE_COMPONENTS (list of test excluded names)

*******************************************************************************
COMPONENT_PATHS (paths to all components):
/home/esp8266/ESP8266_RTOS_SDK/components/app_update
/home/esp8266/ESP8266_RTOS_SDK/components/bootloader
/home/esp8266/ESP8266_RTOS_SDK/components/bootloader_support
/home/esp8266/ESP8266_RTOS_SDK/components/coap
/home/esp8266/ESP8266_RTOS_SDK/components/console
/home/esp8266/ESP8266_RTOS_SDK/components/esp-tls
/home/esp8266/ESP8266_RTOS_SDK/components/esp-wolfssl
/home/esp8266/ESP8266_RTOS_SDK/components/esp8266
/home/esp8266/ESP8266_RTOS_SDK/components/esp_common
/home/esp8266/ESP8266_RTOS_SDK/components/esp_event
/home/esp8266/ESP8266_RTOS_SDK/components/esp_gdbstub
/home/esp8266/ESP8266_RTOS_SDK/components/esp_http_client
/home/esp8266/ESP8266_RTOS_SDK/components/esp_http_server
/home/esp8266/ESP8266_RTOS_SDK/components/esp_https_ota
/home/esp8266/ESP8266_RTOS_SDK/components/esp_ringbuf
/home/esp8266/ESP8266_RTOS_SDK/components/esptool_py
/home/esp8266/ESP8266_RTOS_SDK/components/fatfs
/home/esp8266/ESP8266_RTOS_SDK/components/freemodbus
/home/esp8266/ESP8266_RTOS_SDK/components/freertos
/home/esp8266/ESP8266_RTOS_SDK/components/heap
/home/esp8266/ESP8266_RTOS_SDK/components/http_parser
/home/esp8266/ESP8266_RTOS_SDK/components/jsmn
/home/esp8266/ESP8266_RTOS_SDK/components/json
/home/esp8266/ESP8266_RTOS_SDK/components/libsodium
/home/esp8266/ESP8266_RTOS_SDK/components/log
/home/esp8266/ESP8266_RTOS_SDK/components/lwip
/home/esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/main
/home/esp8266/ESP8266_RTOS_SDK/components/mbedtls
/home/esp8266/ESP8266_RTOS_SDK/components/mdns
/home/esp8266/ESP8266_RTOS_SDK/components/mqtt
/home/esp8266/ESP8266_RTOS_SDK/components/newlib
/home/esp8266/ESP8266_RTOS_SDK/components/nvs_flash
/home/esp8266/ESP8266_RTOS_SDK/components/openssl
/home/esp8266/ESP8266_RTOS_SDK/components/partition_table
/home/esp8266/ESP8266_RTOS_SDK/components/protobuf-c
/home/esp8266/ESP8266_RTOS_SDK/components/protocomm
/home/esp8266/ESP8266_RTOS_SDK/components/pthread
/home/esp8266/ESP8266_RTOS_SDK/components/spi_flash
/home/esp8266/ESP8266_RTOS_SDK/components/spi_ram
/home/esp8266/ESP8266_RTOS_SDK/components/spiffs
/home/esp8266/ESP8266_RTOS_SDK/components/tcp_transport
/home/esp8266/ESP8266_RTOS_SDK/components/tcpip_adapter
/home/esp8266/ESP8266_RTOS_SDK/components/vfs
/home/esp8266/ESP8266_RTOS_SDK/components/wear_levelling
/home/esp8266/ESP8266_RTOS_SDK/components/wifi_provisioning
/home/esp8266/ESP8266_RTOS_SDK/components/wpa_supplicant



make simple_monitorを実行してみました。

簡易モニター
ESP-IDFの以前のバージョンはシリアルコンソールプログラムとしてpySerialコマンドラインプログラムminitermを使用してい ました。
このプログラムはmake simple_monitorを介して実行することができます。
IDFモニターはminitermに基づいており、同じ基本的なキーボードショートカットを共有しています。

コンソール起動時の表示が違うだけで、それ以外の違いは無いようです。

simple_monitorの起動時の表示
$ make flash simple_monitor



Hard resetting via RTS pin...
--- forcing DTR inactive
--- forcing RTS inactive
--- Miniterm on /dev/ttyUSB0  74880,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---




monitorの起動時の表示
$ make flash monitor



Hard resetting via RTS pin...
MONITOR
--- idf_monitor on /dev/ttyUSB0 74880 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---




続く....