【M5Stack_Core2】備忘録

Arduinoの中身

Arduinoというカプセルの中で何が行われているかということを調べるための資料 initArduino()か何やっているんだろうなぁ

setupとloopの関係

/Arduino15/packages/m5stack/hardware/esp32/1.0.4/cores/esp32/main.cpp

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_task_wdt.h"
#include "Arduino.h"

TaskHandle_t loopTaskHandle = NULL;

#if CONFIG_AUTOSTART_ARDUINO

bool loopTaskWDTEnabled;

void loopTask(void *pvParameters)
{
    setup();
    for(;;) {
        if(loopTaskWDTEnabled){
            esp_task_wdt_reset();
        }
        loop();
    }
}

extern "C" void app_main()
{
    loopTaskWDTEnabled = false;
    initArduino();
    xTaskCreateUniversal(loopTask, "loopTask", 8192, NULL, 1, &loopTaskHandle, CONFIG_ARDUINO_RUNNING_CORE);
}

#endif

Arduinoのボード情報
Arduino15/packages/m5stack/hardware/esp32/1.0.4/boards.txt

m5stack-core2.name=M5Stack-Core2

m5stack-core2.upload.tool=esptool_py
m5stack-core2.upload.maximum_size=6553600
m5stack-core2.upload.maximum_data_size=4521984
m5stack-core2.upload.wait_for_upload_port=true

m5stack-core2.serial.disableDTR=true
m5stack-core2.serial.disableRTS=true

m5stack-core2.build.mcu=esp32
m5stack-core2.build.core=esp32
m5stack-core2.build.variant=m5stack_core2
m5stack-core2.build.board=M5STACK_Core2

m5stack-core2.build.f_cpu=240000000L
m5stack-core2.build.flash_size=16MB
m5stack-core2.build.flash_freq=80m
m5stack-core2.build.flash_mode=dio
m5stack-core2.build.boot=dio
m5stack-core2.build.partitions=default_16MB
m5stack-core2.build.defines=

m5stack-core2.menu.PSRAM.enabled=Enabled
m5stack-core2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue
m5stack-core2.menu.PSRAM.disabled=Disabled
m5stack-core2.menu.PSRAM.disabled.build.defines=

m5stack-core2.menu.PartitionScheme.default=Default (2 x 6.5 MB app, 3.6 MB SPIFFS)
m5stack-core2.menu.PartitionScheme.default.build.partitions=default_16MB
m5stack-core2.menu.PartitionScheme.default.upload.maximum_size=6553600
m5stack-core2.menu.PartitionScheme.large_spiffs=Large SPIFFS (7 MB)
m5stack-core2.menu.PartitionScheme.large_spiffs.build.partitions=large_spiffs_16MB
m5stack-core2.menu.PartitionScheme.large_spiffs.upload.maximum_size=4685824

m5stack-core2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
m5stack-core2.menu.PartitionScheme.minimal.build.partitions=minimal
m5stack-core2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
m5stack-core2.menu.PartitionScheme.no_ota.build.partitions=no_ota
m5stack-core2.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
m5stack-core2.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
m5stack-core2.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
m5stack-core2.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
m5stack-core2.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
m5stack-core2.menu.PartitionScheme.huge_app.build.partitions=huge_app
m5stack-core2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
m5stack-core2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
m5stack-core2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
m5stack-core2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080

m5stack-core2.menu.CPUFreq.240=240MHz (WiFi/BT)
m5stack-core2.menu.CPUFreq.240.build.f_cpu=240000000L
m5stack-core2.menu.CPUFreq.160=160MHz (WiFi/BT)
m5stack-core2.menu.CPUFreq.160.build.f_cpu=160000000L
m5stack-core2.menu.CPUFreq.80=80MHz (WiFi/BT)
m5stack-core2.menu.CPUFreq.80.build.f_cpu=80000000L
m5stack-core2.menu.CPUFreq.40=40MHz (40MHz XTAL)
m5stack-core2.menu.CPUFreq.40.build.f_cpu=40000000L
m5stack-core2.menu.CPUFreq.26=26MHz (26MHz XTAL)
m5stack-core2.menu.CPUFreq.26.build.f_cpu=26000000L
m5stack-core2.menu.CPUFreq.20=20MHz (40MHz XTAL)
m5stack-core2.menu.CPUFreq.20.build.f_cpu=20000000L
m5stack-core2.menu.CPUFreq.13=13MHz (26MHz XTAL)
m5stack-core2.menu.CPUFreq.13.build.f_cpu=13000000L
m5stack-core2.menu.CPUFreq.10=10MHz (40MHz XTAL)
m5stack-core2.menu.CPUFreq.10.build.f_cpu=10000000L

m5stack-core2.menu.UploadSpeed.921600=921600
m5stack-core2.menu.UploadSpeed.921600.upload.speed=921600
m5stack-core2.menu.UploadSpeed.115200=115200
m5stack-core2.menu.UploadSpeed.115200.upload.speed=115200
m5stack-core2.menu.UploadSpeed.256000.windows=256000
m5stack-core2.menu.UploadSpeed.256000.upload.speed=256000
m5stack-core2.menu.UploadSpeed.230400.windows.upload.speed=256000
m5stack-core2.menu.UploadSpeed.230400=230400
m5stack-core2.menu.UploadSpeed.230400.upload.speed=230400
m5stack-core2.menu.UploadSpeed.460800.linux=460800
m5stack-core2.menu.UploadSpeed.460800.macosx=460800
m5stack-core2.menu.UploadSpeed.460800.upload.speed=460800
m5stack-core2.menu.UploadSpeed.512000.windows=512000
m5stack-core2.menu.UploadSpeed.512000.upload.speed=512000
m5stack-core2.menu.UploadSpeed.1500000=1500000
m5stack-core2.menu.UploadSpeed.1500000.upload.speed=1500000

m5stack-core2.menu.DebugLevel.none=None
m5stack-core2.menu.DebugLevel.none.build.code_debug=0
m5stack-core2.menu.DebugLevel.error=Error
m5stack-core2.menu.DebugLevel.error.build.code_debug=1
m5stack-core2.menu.DebugLevel.warn=Warn
m5stack-core2.menu.DebugLevel.warn.build.code_debug=2
m5stack-core2.menu.DebugLevel.info=Info
m5stack-core2.menu.DebugLevel.info.build.code_debug=3
m5stack-core2.menu.DebugLevel.debug=Debug
m5stack-core2.menu.DebugLevel.debug.build.code_debug=4
m5stack-core2.menu.DebugLevel.verbose=Verbose
m5stack-core2.menu.DebugLevel.verbose.build.code_debug=5

プラットフォーム情報(コンパイル・ビルドするときに必要な情報)
/Arduino15/packages/m5stack/hardware/esp32/1.0.4/platform.txt

name=M5Stack Arduino
version=



tools.esptool_py.path={runtime.tools.esptool_py.path}
tools.esptool_py.cmd=esptool
tools.esptool_py.cmd.linux=esptool.py
tools.esptool_py.cmd.windows=esptool.exe

tools.esptool_py.network_cmd=python "{runtime.platform.path}/tools/espota.py"
tools.esptool_py.network_cmd.windows="{runtime.platform.path}/tools/espota.exe"

tools.gen_esp32part.cmd=python "{runtime.platform.path}/tools/gen_esp32part.py"
tools.gen_esp32part.cmd.windows="{runtime.platform.path}/tools/gen_esp32part.exe"

compiler.warning_flags=-w
compiler.warning_flags.none=-w
compiler.warning_flags.default=
compiler.warning_flags.more=-Wall -Werror=all
compiler.warning_flags.all=-Wall -Werror=all -Wextra

compiler.path={runtime.tools.xtensa-esp32-elf-gcc.path}/bin/
compiler.sdk.path={runtime.platform.path}/tools/sdk
compiler.cpreprocessor.flags=-DESP_PLATFORM -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-I{compiler.sdk.path}/include/config" "-I{compiler.sdk.path}/include/app_trace" "-I{compiler.sdk.path}/include/app_update" "-I{compiler.sdk.path}/include/asio" "-I{compiler.sdk.path}/include/bootloader_support" "-I{compiler.sdk.path}/include/bt" "-I{compiler.sdk.path}/include/coap" "-I{compiler.sdk.path}/include/console" "-I{compiler.sdk.path}/include/driver" "-I{compiler.sdk.path}/include/esp-tls" "-I{compiler.sdk.path}/include/esp32" "-I{compiler.sdk.path}/include/esp_adc_cal" "-I{compiler.sdk.path}/include/esp_event" "-I{compiler.sdk.path}/include/esp_http_client" "-I{compiler.sdk.path}/include/esp_http_server" "-I{compiler.sdk.path}/include/esp_https_ota" "-I{compiler.sdk.path}/include/esp_ringbuf" "-I{compiler.sdk.path}/include/ethernet" "-I{compiler.sdk.path}/include/expat" "-I{compiler.sdk.path}/include/fatfs" "-I{compiler.sdk.path}/include/freemodbus" "-I{compiler.sdk.path}/include/freertos" "-I{compiler.sdk.path}/include/heap" "-I{compiler.sdk.path}/include/idf_test" "-I{compiler.sdk.path}/include/jsmn" "-I{compiler.sdk.path}/include/json" "-I{compiler.sdk.path}/include/libsodium" "-I{compiler.sdk.path}/include/log" "-I{compiler.sdk.path}/include/lwip" "-I{compiler.sdk.path}/include/mbedtls" "-I{compiler.sdk.path}/include/mdns" "-I{compiler.sdk.path}/include/micro-ecc" "-I{compiler.sdk.path}/include/mqtt" "-I{compiler.sdk.path}/include/newlib" "-I{compiler.sdk.path}/include/nghttp" "-I{compiler.sdk.path}/include/nvs_flash" "-I{compiler.sdk.path}/include/openssl" "-I{compiler.sdk.path}/include/protobuf-c" "-I{compiler.sdk.path}/include/protocomm" "-I{compiler.sdk.path}/include/pthread" "-I{compiler.sdk.path}/include/sdmmc" "-I{compiler.sdk.path}/include/smartconfig_ack" "-I{compiler.sdk.path}/include/soc" "-I{compiler.sdk.path}/include/spi_flash" "-I{compiler.sdk.path}/include/spiffs" "-I{compiler.sdk.path}/include/tcp_transport" "-I{compiler.sdk.path}/include/tcpip_adapter" "-I{compiler.sdk.path}/include/ulp" "-I{compiler.sdk.path}/include/vfs" "-I{compiler.sdk.path}/include/wear_levelling" "-I{compiler.sdk.path}/include/wifi_provisioning" "-I{compiler.sdk.path}/include/wpa_supplicant" "-I{compiler.sdk.path}/include/xtensa-debug-module" "-I{compiler.sdk.path}/include/esp-face" "-I{compiler.sdk.path}/include/esp32-camera" "-I{compiler.sdk.path}/include/esp-face" "-I{compiler.sdk.path}/include/fb_gfx"

compiler.c.cmd=xtensa-esp32-elf-gcc
compiler.c.flags=-std=gnu99 -Os -g3 -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -Wpointer-arith {compiler.warning_flags} -Wno-maybe-uninitialized -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -Wno-old-style-declaration -MMD -c

compiler.cpp.cmd=xtensa-esp32-elf-g++
compiler.cpp.flags=-std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib {compiler.warning_flags} -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -MMD -c

compiler.S.cmd=xtensa-esp32-elf-gcc
compiler.S.flags=-c -g3 -x assembler-with-cpp -MMD -mlongcalls

compiler.c.elf.cmd=xtensa-esp32-elf-gcc
compiler.c.elf.flags=-nostdlib "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiram_incompatible_fns.ld -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority  -u __cxa_guard_dummy -u __cxx_fatal_exception
compiler.c.elf.libs=-lgcc -lesp32 -lphy -lesp_http_client -lmbedtls -lrtc -lesp_http_server -lbtdm_app -lspiffs -lbootloader_support -lmdns -lnvs_flash -lfatfs -lpp -lnet80211 -ljsmn -lface_detection -llibsodium -lvfs -ldl_lib -llog -lfreertos -lcxx -lsmartconfig_ack -lxtensa-debug-module -lheap -ltcpip_adapter -lmqtt -lulp -lfd -lfb_gfx -lnghttp -lprotocomm -lsmartconfig -lm -lethernet -limage_util -lc_nano -lsoc -ltcp_transport -lc -lmicro-ecc -lface_recognition -ljson -lwpa_supplicant -lmesh -lesp_https_ota -lwpa2 -lexpat -llwip -lwear_levelling -lapp_update -ldriver -lbt -lespnow -lcoap -lasio -lnewlib -lconsole -lapp_trace -lesp32-camera -lhal -lprotobuf-c -lsdmmc -lcore -lpthread -lcoexist -lfreemodbus -lspi_flash -lesp-tls -lwpa -lwifi_provisioning -lwps -lesp_adc_cal -lesp_event -lopenssl -lesp_ringbuf -lfr  -lstdc++

compiler.as.cmd=xtensa-esp32-elf-as

compiler.ar.cmd=xtensa-esp32-elf-ar
compiler.ar.flags=cru

compiler.size.cmd=xtensa-esp32-elf-size

# This can be overriden in boards.txt
build.flash_size=4MB
build.flash_mode=dio
build.boot=bootloader
build.code_debug=0
build.defines=
build.extra_flags=-DESP32 -DCORE_DEBUG_LEVEL={build.code_debug} {build.defines}

# These can be overridden in platform.local.txt
compiler.c.extra_flags=
compiler.c.elf.extra_flags=
compiler.S.extra_flags=
compiler.cpp.extra_flags=
compiler.ar.extra_flags=
compiler.objcopy.eep.extra_flags=
compiler.elf2hex.extra_flags=

## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Create archives
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"

## Combine gc-sections, archives, and objects
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -Wl,--start-group {object_files} "{archive_file_path}" {compiler.c.elf.libs} -Wl,--end-group -Wl,-EL -o "{build.path}/{build.project_name}.elf"

## Create eeprom
recipe.objcopy.eep.pattern={tools.gen_esp32part.cmd} -q "{runtime.platform.path}/tools/partitions/{build.partitions}.csv" "{build.path}/{build.project_name}.partitions.bin"

## Create hex
recipe.objcopy.hex.pattern="{tools.esptool_py.path}/{tools.esptool_py.cmd}" --chip esp32 elf2image --flash_mode "{build.flash_mode}" --flash_freq "{build.flash_freq}" --flash_size "{build.flash_size}" -o "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.elf"
recipe.objcopy.hex.pattern.linux=python "{tools.esptool_py.path}/{tools.esptool_py.cmd}" --chip esp32 elf2image --flash_mode "{build.flash_mode}" --flash_freq "{build.flash_freq}" --flash_size "{build.flash_size}" -o "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.elf"

## Save hex
recipe.output.tmp_file={build.project_name}.bin
recipe.output.save_file={build.project_name}.{build.variant}.bin

## Compute size
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
recipe.size.regex=^(?:\.iram0\.text|\.iram0\.vectors|\.dram0\.data|\.flash\.text|\.flash\.rodata|)\s+([0-9]+).*
recipe.size.regex.data=^(?:\.dram0\.data|\.dram0\.bss|\.noinit)\s+([0-9]+).*

# ------------------------------

tools.esptool_py.upload.protocol=esp32
tools.esptool_py.upload.params.verbose=
tools.esptool_py.upload.params.quiet=
tools.esptool_py.upload.pattern="{path}/{cmd}" --chip esp32 --port "{serial.port}" --baud {upload.speed}  --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size detect 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 "{runtime.platform.path}/tools/sdk/bin/bootloader_{build.boot}_{build.flash_freq}.bin" 0x10000 "{build.path}/{build.project_name}.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin"
tools.esptool_py.upload.pattern.linux=python "{path}/{cmd}" --chip esp32 --port "{serial.port}" --baud {upload.speed}  --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size detect 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 "{runtime.platform.path}/tools/sdk/bin/bootloader_{build.boot}_{build.flash_freq}.bin" 0x10000 "{build.path}/{build.project_name}.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin"
tools.esptool_py.upload.network_pattern={network_cmd} -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"

ピンコネ情報

/Arduino15/packages/m5stack/hardware/esp32/1.0.4/variants/m5stack_core2/pins_arduino.h

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

#define EXTERNAL_NUM_INTERRUPTS 16
#define NUM_DIGITAL_PINS        20
#define NUM_ANALOG_INPUTS       16

#define analogInputToDigitalPin(p)  (((p)<20)?(esp32_adc2gpio[(p)]):-1)
#define digitalPinToInterrupt(p)    (((p)<40)?(p):-1)
#define digitalPinHasPWM(p)         (p < 34)

static const uint8_t TX = 1;
static const uint8_t RX = 3;

static const uint8_t TXD2 = 14;
static const uint8_t RXD2 = 13;

static const uint8_t SDA = 32;
static const uint8_t SCL = 33;

static const uint8_t SS    = 5;
static const uint8_t MOSI  = 23;
static const uint8_t MISO  = 38;
static const uint8_t SCK   = 18;

static const uint8_t G23 = 23;
static const uint8_t G38 = 38;
static const uint8_t G18 = 18;
static const uint8_t G3 = 3;
static const uint8_t G13 = 13;
static const uint8_t G21 = 21;
static const uint8_t G32 = 32;
static const uint8_t G27 = 27;
static const uint8_t G2 = 2;
static const uint8_t G35 = 35;
static const uint8_t G36 = 36;
static const uint8_t G25 = 25;
static const uint8_t G26 = 26;
static const uint8_t G1 = 1;
static const uint8_t G14 = 14;
static const uint8_t G22 = 22;
static const uint8_t G33 = 33;
static const uint8_t G19 = 19;
static const uint8_t G0 = 0;
static const uint8_t G34 = 34;

static const uint8_t G12 = 12;
static const uint8_t G15 = 15;
static const uint8_t G17 = 17;
static const uint8_t G5 = 5;

static const uint8_t DAC1 = 25;
static const uint8_t DAC2 = 26;

static const uint8_t ADC1 = 35;
static const uint8_t ADC2 = 36;

#endif /* Pins_Arduino_h */

まとめ

  • グローバルで沢山の定数を定義していて使っているので上書きするとまずい場合がある。なので、なるべくコンパイル時のワーニングを見てコンフリクトしてないか確認が必要。
  • /Arduino15/packages/m5stack/hardware/esp32/1.0.4/tools/sdk/includeこの辺がコンパイル時にインクルードされている。sourceはまた別の場所なので2倍必要?
  • defineもあるのでこの辺を処理するとVisual studio codeで幸せ?

VisualStudioCode の.vscodeファイルのc_cpp_properties.jsondefinesを追加してみた。コンソールのワーニングが1つ減った。

{
    "env" : {
        "Arduino15Packages" : "C:\\Users\\ユーザ名\\AppData\\Local\\Arduino15\\packages",
        "ArduinoEsp32Sdk" : "C:\\Users\\ユーザ名\\AppData\\Local\\Arduino15\\packages\\m5stack\\hardware\\esp32\\1.0.4\\tools\\sdk",
        "ArduinoMyLibraries" : "C:\\Users\\ユーザ名\\Documents\\Arduino\\libraries",
        "espidf33" : "C:\\home\\esp-idf-3.3",
        "newlib_src" : "C:\\home\\newlib\\newlib-3.3.0\\newlib"
    },
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                // M5Core2 Librarie soruce/include
                "${ArduinoMyLibraries}\\M5Core2\\src",
                // ESP32 SDK include
                "${ArduinoEsp32Sdk}\\include\\app_trace",
                "${ArduinoEsp32Sdk}\\include\\app_update",
                "${ArduinoEsp32Sdk}\\include\\asio",
                "${ArduinoEsp32Sdk}\\include\\bootloader_support",
                "${ArduinoEsp32Sdk}\\include\\bt",
                "${ArduinoEsp32Sdk}\\include\\coap",
                "${ArduinoEsp32Sdk}\\include\\config",
                "${ArduinoEsp32Sdk}\\include\\console",
                "${ArduinoEsp32Sdk}\\include\\driver",
                "${ArduinoEsp32Sdk}\\include\\esp-face",
                "${ArduinoEsp32Sdk}\\include\\esp-tls",
                "${ArduinoEsp32Sdk}\\include\\esp32",
                "${ArduinoEsp32Sdk}\\include\\esp32-camera",
                "${ArduinoEsp32Sdk}\\include\\esp_adc_cal",
                "${ArduinoEsp32Sdk}\\include\\esp_event",
                "${ArduinoEsp32Sdk}\\include\\esp_http_client",
                "${ArduinoEsp32Sdk}\\include\\esp_http_server",
                "${ArduinoEsp32Sdk}\\include\\esp_https_ota",
                "${ArduinoEsp32Sdk}\\include\\esp_ringbuf",
                "${ArduinoEsp32Sdk}\\include\\ethernet",
                "${ArduinoEsp32Sdk}\\include\\expat",
                "${ArduinoEsp32Sdk}\\include\\fatfs",
                "${ArduinoEsp32Sdk}\\include\\fb_gfx",
                "${ArduinoEsp32Sdk}\\include\\freemodbus",
                "${ArduinoEsp32Sdk}\\include\\freertos",
                "${ArduinoEsp32Sdk}\\include\\heap",
                "${ArduinoEsp32Sdk}\\include\\idf_test",
                "${ArduinoEsp32Sdk}\\include\\jsmn",
                "${ArduinoEsp32Sdk}\\include\\libsodium",
                "${ArduinoEsp32Sdk}\\include\\log",
                "${ArduinoEsp32Sdk}\\include\\lwip",
                "${ArduinoEsp32Sdk}\\include\\mbedtls",
                "${ArduinoEsp32Sdk}\\include\\mdns",
                "${ArduinoEsp32Sdk}\\include\\micro-ecc",
                "${ArduinoEsp32Sdk}\\include\\mqtt",
                "${ArduinoEsp32Sdk}\\include\\newlib",
                "${ArduinoEsp32Sdk}\\include\\nvs_flash",
                "${ArduinoEsp32Sdk}\\include\\openssl",
                "${ArduinoEsp32Sdk}\\include\\protobuf-c",
                "${ArduinoEsp32Sdk}\\include\\protocomm",
                "${ArduinoEsp32Sdk}\\include\\pthread",
                "${ArduinoEsp32Sdk}\\include\\sdmmc",
                "${ArduinoEsp32Sdk}\\include\\smartconfig_ack",
                "${ArduinoEsp32Sdk}\\include\\soc",
                "${ArduinoEsp32Sdk}\\include\\spi_flash",
                "${ArduinoEsp32Sdk}\\include\\spiffs",
                "${ArduinoEsp32Sdk}\\include\\tcp_transport",
                "${ArduinoEsp32Sdk}\\include\\tcpip_adapter",
                "${ArduinoEsp32Sdk}\\include\\ulp",
                "${ArduinoEsp32Sdk}\\include\\vfs",
                "${ArduinoEsp32Sdk}\\include\\wear_levelling",
                "${ArduinoEsp32Sdk}\\include\\wifi_provisioning",
                "${ArduinoEsp32Sdk}\\include\\wpa_supplicant",
                "${ArduinoEsp32Sdk}\\include\\xtensa-debug-module",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\cores\\esp32",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\FS\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\HTTPClient\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\SD\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\SPIFFS\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\SPI\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\WiFiClientSecure\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\WiFi\\src",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\variants\\m5stack_core2",
                // 何か足りない?
                "${ArduinoEsp32Sdk}\\include\\**",
                "${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\libraries\\**",
                // Arduino Libraries manager関係
                "${ArduinoMyLibraries}\\M5Core2\\src\\**",
                "${Arduino15Packages}\\m5stack\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0\\xtensa-esp32-elf\\include\\c++\\5.2.0\\**",
                // esp-ide-3.3 sourceを展開したpath
                "${espidf33}\\components\\**",
                // newlib sourceを展開したpath(ESP32関係は、独自に展開してなければROMに焼いてあるモノらしいなのでリビルド用のsourceは無いので参照用で展開)
                "${newlib_src}\\libc\\**"
                //"${Arduino15Packages}\\**",
                //"${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\cores\\esp32\\**",
                //"${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\variants\\m5stack_core2\\**",
                //"${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\tools\\sdk\\include\\newlib\\**",
                //"${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\tools\\sdk\\include\\**",
                //"${Arduino15Packages}\\m5stack\\hardware\\esp32\\1.0.4\\**",
                //"${Arduino15Packages}\\m5stack\\tools\\**"
            ],
            "defines": ["ARDUINO=10813", "ARDUINO_ARCH_ESP32", "ARDUINO_BOARD=\"M5STACK_Core2\"", 
                "ARDUINO_LIB_DISCOVERY_PHASE", "ARDUINO_M5STACK_Core2", "ARDUINO_VARIANT=\"m5stack_core2\"", 
                "BOARD_HAS_PSRAM", "CORE_DEBUG_LEVEL=0", "ESP32", "ESP_PLATFORM", "F_CPU=240000000L", 
                "GCC_NOT_5_2_0=0", "HAVE_CONFIG_H", "MBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"", "WITH_POSIX" ],
            "forcedInclude": [],
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "${Arduino15Packages}\\m5stack\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0\\bin\\xtensa-esp32-elf-gcc.exe",
            "cStandard": "c99",
            "cppStandard": "c++11"
        }
    ],
    "version": 4
}