●実際のプログラムのビルド(esp_iot_rtos_sdk-master/examples/testcode) esp_iot_rtos_sdk-master/Makefile の中で、以下のようにしている INCLUDES := $(INCLUDES) -I $(SDK_PATH)/include -I $(SDK_PATH)/extra_include INCLUDES += -I $(SDK_PATH)/include/lwip -I $(SDK_PATH)/include/lwip/ipv4 -I $(SDK_PATH)/include/lwip/ipv6 INCLUDES += -I $(SDK_PATH)/include/espressif INCLUDES += -I $(SDK_PATH)/include/freertos INCLUDES += -I $(SDK_PATH)/include/json INCLUDES += -I $(SDK_PATH)/include/lwip INCLUDES += -I $(SDK_PATH)/include/ssl INCLUDES += -I $(SDK_PATH)/include/espressif/esp8266 INCLUDES += -I $(SDK_PATH)/examples/driver_lib/include gpio.c uart.c (esp_iot_rtos_sdk-master/examples/driver_lib/) gpio.c uart.c の _xt_isr_attach() 関数の最後の引数として NULL を追加しないと駄目。 _xt_isr_attach(ETS_UART_INUM, fn, NULL); gpio.* uart.* は、user_main.c と同じディレクトリに置くことにする。 調査:以下の様なことをやってみたが、駄目だった 最初、esp_iot_rtos_sdk-master/examples/project_template/Makefile SUBDIRS= \ user \ $(SDK_PATH)/examples/driver_lib/driver \ 追加 sample_lib esp_iot_rtos_sdk-master/examples/testcode/Makefile のあるところで、 $ make clean ; make BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=6 $ make clean ; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=6 を実行。make clean は必要なければやらない。 gen_misc.sh で、対話式に行ってもよい。 ●書き込み FLASH_DOWNLOAD_TOOLS_v2.3_150916 に書き込みツールがある。 実際に書き込みを行う画面の解説は 「書き込み方法.docx」に記述。 書き込むファイルは、以下 esp_iot_sdk_v1.3.0_15_08_08.zip の boot_v1.4(b1).bin (一度書き込めば、その後は書き込みの必要はない) C:\cygwin\opt\Espressif\crosstool-NG\builds\xtensa-lx106-elf\bin\upgrade\user1.4096.new.6.bin (ビルドする毎に書き込み) uartDownloadMode / flashBootMode のスイッチ設定は、arduino の書き込みと同じ 書き込みツールは、576000 baud でも安定して動作するようだ。 ●注意点 vTaskDelay( 1000 ) だと、10秒待つことになる。FreeRTOS では通常1秒なのだが、 esp_iot_rtos_sdk-master/include/freertos/FreeRTOSConfig.h で、 #define configTICK_RATE_HZ ( ( portTickType ) 100 ) と 100Hz になっているため。 また、FreeRTOSConfig.h は変更を禁止されている。