M5StackでAmazon FreeRTOSを使用する　２

# はじめに

[前回](https://qiita.com/fukuebiz/items/54f765d12c084ceea392)、M5StackでAmazon FreeRTOSが動作することが確認できたので、今回はアプリの作成方法を確認しながら、LEDを点滅（いわゆるLチカ）したいと思います。

仕事で関わっている[Record Meeting](https://www.recordmeeting.jp/)という自動議事メモ作成サービスでM5Stackを利用しているのですが、デバイスが増えてくると管理が大変です。Amazon FreeRTOSがM5Stackで使えるようになるととても魅力的です。

![COET Record Meeting](https://www.tis.co.jp/images/jp/news/2019/tis_news/0725_1/20190725_1_01.png)

Amazon FreeRTOSのアプリケーション作成を始めるにあたり、ドキュメントを探しましたが、まだリソースが少ないようです。次のあたりを参考にしました。[「Using Amazon FreeRTOS in Your Own CMake Project for ESP32」](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html#getting_started_espressif_cmake_project)、[「Document how to create a new cmake project outside the freertos source tree #832」](https://github.com/aws/amazon-freertos/issues/832)

アプリケーションは、このようなディレクトリ構成にするのがよさそうです。

```
- amazon-freertos
- components
  - foo
    - include
      - foo.h
    - src
      - foo.c
    - CMakeLists.txt
- src
  - main.c
- CMakeLists.txt
```

今回使用したLEDはこれ、[マルツ Grove - White LED【104030009】 ](https://www.marutsu.co.jp/pc/i/829298/)、M5StackのAポートに差します。

Git bashから、任意の場所にデモアプリをダウンロードします

```bash:
git clone https://github.com/fukuen/m5stack-freertos-blinky --recursive
```

[前回](https://qiita.com/fukuebiz/items/54f765d12c084ceea392)と同じモノの名前や証明書を使う場合は、証明書やヘッダーファイルを前回使用したamazon-freertosフォルダーから、今回のamazon-freertosフォルダーにコピーしてください。新しく登録する場合は、/tools/aws_config_quick_start/configure.json を修正して SetupAWS.py を実行してください。

ダウンロードしたディレクトリーに移動して、アプリケーションをビルドします。

```bash:
cd m5stack-freertos-blinky
cmake -DCMAKE_TOOLCHAIN_FILE=amazon-freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja -S . -B build
cd build
ninja
```

ビルドが完了したら、フラッシュします。

```bash:
cd ..
idf.py flash
```

シリアルコンソールでモニターしてみます。

```bash:
idf.py monitor
```

LEDが点滅して、シリアルコンソールに次のように出力されます。当然ですが、画面には何も表示されません。


![FreeRTOS_LED.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555397/f5f73533-abbc-1ff6-c926-35e9686ae01c.png)

```bash:
--- idf_monitor on COM6 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x17 (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:7224
load:0x40078000,len:12620
load:0x40080400,len:6708
entry 0x40080778
I (72) boot: Chip Revision: 1
I (72) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (38) boot: ESP-IDF v3.3-163-g601a03e 2nd stage bootloader
I (39) boot: compile time 10:02:55
I (39) boot: Enabling RNG early entropy source...
I (44) boot: SPI Speed      : 40MHz
I (48) boot: SPI Mode       : DIO
I (52) boot: SPI Flash Size : 4MB
I (56) boot: Partition Table:
I (60) boot: ## Label            Usage          Type ST Offset   Length
I (67) boot:  0 nvs              WiFi data        01 02 00010000 00006000
I (75) boot:  1 otadata          OTA data         01 00 00016000 00002000
I (82) boot:  2 phy_init         RF data          01 01 00018000 00001000
I (89) boot:  3 ota_0            OTA app          00 10 00020000 00177000
I (97) boot:  4 ota_1            OTA app          00 11 001a0000 00177000
I (104) boot:  5 storage          WiFi data        01 02 00317000 00010000
I (112) boot: End of partition table
I (116) boot: ota rollback check done
I (121) boot_comm: chip revision: 1, min. application chip revision: 0

...


I (217) boot: Loaded app from partition at offset 0x20000
I (217) boot: Disabling RNG early entropy source...
I (218) cpu_start: Pro cpu up.
I (221) cpu_start: Application information:
I (226) cpu_start: Project name:     esp-idf
I (231) cpu_start: App version:      1
I (235) cpu_start: Compile time:     Dec 26 2019 10:02:21
I (242) cpu_start: ELF file SHA256:  03786af4d87c7160...
I (248) cpu_start: ESP-IDF:          v3.3-163-g601a03e
I (253) cpu_start: Single core mode
I (258) heap_init: Initializing. RAM available for dynamic allocation:
I (265) heap_init: At 3FFAE6E0 len 0000F480 (61 KiB): DRAM
I (271) heap_init: At 3FFC15E0 len 0001EA20 (122 KiB): DRAM
I (277) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM
I (284) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (290) heap_init: At 40087C30 len 000183D0 (96 KiB): IRAM
I (296) cpu_start: Pro cpu start user code
I (314) cpu_start: Starting scheduler on PRO CPU.
Turning off the LED
Turning on the LED
Turning off the LED
Turning on the LED
Turning off the LED
Turning on the LED
Turning off the LED

...

```

# まとめ


画面がまだ真っ暗のままなので、次回は画面に何か表示してみましょう。