Arduino勉強会/41-M5Stamp-C3Uをデバッグする(暫定方法)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Arduino勉強会/37-RaspberryPi Picoをはじめよう]]
[[Arduino勉強会]]
#contents
2022/01/30からのアクセス回数 &counter;
** M5Stamp-C3Uの魅力 [#c9807fd5]
ESP(240MHz, Dual Core)に比べるとオープンソースのRisc-V...
待望のWiFi, Bluetooth搭載Risc-V(ESP32-C3)ということで、...
さらに、M5Stamp-C3UはビルトインのUSB-CDCとJtagデバッガー...
&ref(M5Stamp_C3U.png);
** なぜデバッガーが必要なのか [#o02e061d]
新しいCPUのプラットフォームでの開発は、プラットフォームの...
アプリのデバッグは大変になります。
そんな時こそ、デバッガーでアプリの動作を確認しながら、障...
** PlatformIOを使って簡単環境セットアップ [#s6dd3bb6]
新しいボードで一番大変な作業は、開発環境の構築ですね。Pla...
ここからの開発はVisual Studio Code(以下VScodeと記す)を使...
最初に、新しくプロジェクトを作成するディレクトリをVScode...
次にVScodeのTerminalメニューからNew Terminalを選択すると...
ここでは、「ESPC3UTest」ディレクトリを作成し、プロジェク...
#pre{{
$ mkdir ESPC3UTest
$ cd ESPC3UTest
$ ~/.platformio/penv/bin/pio boards "ESP32C3"
Platform: espressif32
=========================================================...
ID MCU Frequency Flash RAM ...
------------------ ------- ----------- ------- ----- ...
esp32-c3-devkitm-1 ESP32C3 160MHz 4MB 320KB ...
esp32-c3-devkitm-1 ESP32C3 160MHz 4MB 320KB ...
}}
次に、Espressif ESP32-C3-DevKitM-1のID「esp32-c3-devkitm-...
#pre{{
$ ~/.platformio/penv/bin/pio init --board esp32-c3-devkit...
}}
新しいプロジェクトが作成できたので、VScodeの「Open Folder...
platform.iniを見ると以下のようになっていると思います(最...
#pre{{
[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = espidf
}}
私はespidfのフレームワークは馴染みがないので、Arduinoフレ...
このフレームワークは暫定なので、PlatformIOの正式ページか...
#pre{{
[env:esp32-c3-devkitm-1]
board = esp32-c3-devkitm-1
framework = arduino
platform = https://github.com/Jason2866/platform-espressi...
platform_packages = framework-arduinoespressif32 @ https:...
tasmota/toolchain-riscv32
}}
*** Lチカ [#a7d9bf85]
M5Stamp-C3Uには、LEDは搭載されておらず、代わりにNeoPixel...
以下のサイトからNeoPixcelを使ったスケッチを参照しました。
- https://github.com/leCandas/M5Stamp-C3
src/main.cをmain.cppに書き換えて
#pre{{
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#define LED 2
#define NUMPIXELS 1
int high = 255;
int low = 0;
Adafruit_NeoPixel pixels(NUMPIXELS, LED, NEO_GRB + NEO_KH...
void setup() {
pixels.begin();
}
void loop() {
// オン
pixels.setPixelColor(0, pixels.Color(high, low, low));
pixels.show();
delay(1000);
// オフ
pixels.setPixelColor(0, pixels.Color(low, low, low));
pixels.show();
delay(1000);
}
}}
NeoPixelを使用するために、lib_deps項をplatformio.iniに追...
#pre{{
lib_deps = adafruit/Adafruit NeoPixel@^1.10.3
}}
*** ビルドと書き込み [#j2e8087c]
最初に中央のボタンを押しながら、M5Stamp C3UにUSBケーブル...
次にVScodeのViewメニューからCommand Palette...を選択し、...
スケッチのビルドと書き込みを自動的にしてくれます。
書き込みに成功したらM5Stamp C3Uのリセットボタンを押してく...
*** ピン配置 [#r88b9c5c]
M5Stamp C3Uのピン配置をM5Stackのサイトから引用します。
&ref(M5StampC3U_pin.jpg,,70%);
SPI, I2Cのピン設定は、以下のURLのソースから取得しました。
- https://github.com/espressif/arduino-esp32/blob/master/...
整理すると以下のようになります。
| IO番号 | ピン番号 | 機能 |h
| GPIO0 | G0 | A0 |
| GPIO1 | G1 | A1 |
| GPIO2 | - | NeoPixel |
| GPIO3 | G3 | A3 |
| GPIO4 | G4 | A4, SCK |
| GPIO5 | G5 | A5, MISO |
| GPIO6 | G6 | MOSI |
| GPIO7 | G7 | SS |
| GPIO8 | G8 | SDA |
| GPIO9 | G9 | SCL, Button |
| GPIO10 | G10 | |
| GPIO18 | G18 | D- |
| GPIO19 | G19 | D+ |
| GPIO20 | G20 | Rx0 |
| GPIO21 | G21 | Tx0 |
| CHIP_EN | EN | |
** ビルトイン・デバッガーを使う [#aa86c1d8]
最初に、今回のデバッガーの実装は現状で何とかデバッガーを...
デバッガーを使用する上での1番の障害は、gdbのload機能が正...
そのため、プログラムを修正した後アップロードを実行してか...
*** OpenOCDの設定 [#v80040e0]
esp32-c3-devkitm-1ボードのデバッガーとしてUSB-JTAG(ビルト...
PlatformIOのPio Debugは使えません。
そこで、カスタム・デバッグサーバとしてOpenOCDを使用します...
- build_flags: ビルド時にデバッグ情報を付加するように-gオ...
- debug_tool: customでカスタム設定(debug_serverでデバッ...
- debug_server: デバッグサーバとして、openocdと起動オプシ...
#pre{{
build_flags = -g
debug_tool = custom
debug_server =
$PLATFORMIO_CORE_DIR/packages/tool-openocd-esp32/bin/op...
-f openocd.cfg
}}
次にopneocd.cfgを以下のように作成します。
#pre{{
# インタフェース設定
# esp32 USB biltin
set _RTOS auto
source [find interface/esp_usb_jtag.cfg]
# CPUの設定
source [find target/esp32c3.cfg]
adapter_khz 5000
# デバッガの初期化
gdb_target_description enable
init
reset init
}}
さらに、ESP32C3のrevisionミスマッチの発生を回避するため、...
- https://github.com/espressif/openocd-esp32/issues/144
#pre{{
set arch riscv:rv32
set mem inaccessible-by-default off
}}
*** デバッガーの実行 [#r69f0d26]
デバッグの実行時には、デバッグ情報付きの実行形式を書き込...
続いてVScodeのデバッグでは、「Pio debug(without uploading...
最初のブレークポイントとして、setup関数の最初の行にブレー...
デバッガー正常に起動したら、以下のようにsetup関数の先頭で...
&ref(esp32-c3u-debug.png,,75%);
** Windows固有の設定 [#lc14a6a9]
Windowsの場合、gitとZadigのインストールが必要です。以下の...
git
- https://gitforwindows.org/
Zadig
- https://zadig.akeo.ie/
Zadigを使って、jtagのドライバーをインストールします。
- optionsメニューからList All Devicesを選択
- Driverの右側をlibusb-win32(v1.2.6.0)を選択し、Replace D...
&ref(Zadig.png);
openocdを以下のサイトからダウンロードして、ユーザディレク...
https://github.com/espressif/openocd-esp32/releases/downl...
gdbが.initdbを見つけることができるように、PlatformIOフォ...
setup関数で停止するまでのDEBUG CONSOLEのログを追記してお...
#pre{{
Info : esp_usb_jtag: Device found. Base speed 40000KHz, d...
Info : clock speed 5000 kHz
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
Info : datacount=2 progbufsize=16
Info : Examined RISC-V core; found 1 harts
Info : hart 0: XLEN=32, misa=0x40101104
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
adapter speed: 5000 kHz
Info : tcl server disabled
Info : telnet server disabled
Info : accepting 'gdb' connection from pipe
Warn : No symbols for FreeRTOS!
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Auto-detected flash bank 'esp32c3.flash' size 4096...
Info : Using flash bank 'esp32c3.flash' size 4096 KB
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Using flash bank 'esp32c3.irom' size 104 KB
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Using flash bank 'esp32c3.drom' size 36 KB
0x40000000 in ?? ()
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
JTAG tap: esp32c3.cpu tap/device found: 0x00005c25 (mfg: ...
Function "main" not defined.
Make breakpoint pending on future shared library load? (y...
PlatformIO: Initialization completed
PlatformIO: Resume the execution to `debug_init_break = t...
PlatformIO: More configuration options -> https://bit.ly/...
Note: automatically using hardware breakpoints for read-o...
Info : [0] Found 8 triggers
[New Thread 1070137204]
[New Thread 1070132124]
[New Thread 1070136860]
[Switching to Thread 1070149344]
Thread 1 hit Breakpoint 1, setup () at src/main.cpp:12
12 pixels.begin();
}}
** コメント [#ff93bd6f]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[Arduino勉強会/37-RaspberryPi Picoをはじめよう]]
[[Arduino勉強会]]
#contents
2022/01/30からのアクセス回数 &counter;
** M5Stamp-C3Uの魅力 [#c9807fd5]
ESP(240MHz, Dual Core)に比べるとオープンソースのRisc-V...
待望のWiFi, Bluetooth搭載Risc-V(ESP32-C3)ということで、...
さらに、M5Stamp-C3UはビルトインのUSB-CDCとJtagデバッガー...
&ref(M5Stamp_C3U.png);
** なぜデバッガーが必要なのか [#o02e061d]
新しいCPUのプラットフォームでの開発は、プラットフォームの...
アプリのデバッグは大変になります。
そんな時こそ、デバッガーでアプリの動作を確認しながら、障...
** PlatformIOを使って簡単環境セットアップ [#s6dd3bb6]
新しいボードで一番大変な作業は、開発環境の構築ですね。Pla...
ここからの開発はVisual Studio Code(以下VScodeと記す)を使...
最初に、新しくプロジェクトを作成するディレクトリをVScode...
次にVScodeのTerminalメニューからNew Terminalを選択すると...
ここでは、「ESPC3UTest」ディレクトリを作成し、プロジェク...
#pre{{
$ mkdir ESPC3UTest
$ cd ESPC3UTest
$ ~/.platformio/penv/bin/pio boards "ESP32C3"
Platform: espressif32
=========================================================...
ID MCU Frequency Flash RAM ...
------------------ ------- ----------- ------- ----- ...
esp32-c3-devkitm-1 ESP32C3 160MHz 4MB 320KB ...
esp32-c3-devkitm-1 ESP32C3 160MHz 4MB 320KB ...
}}
次に、Espressif ESP32-C3-DevKitM-1のID「esp32-c3-devkitm-...
#pre{{
$ ~/.platformio/penv/bin/pio init --board esp32-c3-devkit...
}}
新しいプロジェクトが作成できたので、VScodeの「Open Folder...
platform.iniを見ると以下のようになっていると思います(最...
#pre{{
[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = espidf
}}
私はespidfのフレームワークは馴染みがないので、Arduinoフレ...
このフレームワークは暫定なので、PlatformIOの正式ページか...
#pre{{
[env:esp32-c3-devkitm-1]
board = esp32-c3-devkitm-1
framework = arduino
platform = https://github.com/Jason2866/platform-espressi...
platform_packages = framework-arduinoespressif32 @ https:...
tasmota/toolchain-riscv32
}}
*** Lチカ [#a7d9bf85]
M5Stamp-C3Uには、LEDは搭載されておらず、代わりにNeoPixel...
以下のサイトからNeoPixcelを使ったスケッチを参照しました。
- https://github.com/leCandas/M5Stamp-C3
src/main.cをmain.cppに書き換えて
#pre{{
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#define LED 2
#define NUMPIXELS 1
int high = 255;
int low = 0;
Adafruit_NeoPixel pixels(NUMPIXELS, LED, NEO_GRB + NEO_KH...
void setup() {
pixels.begin();
}
void loop() {
// オン
pixels.setPixelColor(0, pixels.Color(high, low, low));
pixels.show();
delay(1000);
// オフ
pixels.setPixelColor(0, pixels.Color(low, low, low));
pixels.show();
delay(1000);
}
}}
NeoPixelを使用するために、lib_deps項をplatformio.iniに追...
#pre{{
lib_deps = adafruit/Adafruit NeoPixel@^1.10.3
}}
*** ビルドと書き込み [#j2e8087c]
最初に中央のボタンを押しながら、M5Stamp C3UにUSBケーブル...
次にVScodeのViewメニューからCommand Palette...を選択し、...
スケッチのビルドと書き込みを自動的にしてくれます。
書き込みに成功したらM5Stamp C3Uのリセットボタンを押してく...
*** ピン配置 [#r88b9c5c]
M5Stamp C3Uのピン配置をM5Stackのサイトから引用します。
&ref(M5StampC3U_pin.jpg,,70%);
SPI, I2Cのピン設定は、以下のURLのソースから取得しました。
- https://github.com/espressif/arduino-esp32/blob/master/...
整理すると以下のようになります。
| IO番号 | ピン番号 | 機能 |h
| GPIO0 | G0 | A0 |
| GPIO1 | G1 | A1 |
| GPIO2 | - | NeoPixel |
| GPIO3 | G3 | A3 |
| GPIO4 | G4 | A4, SCK |
| GPIO5 | G5 | A5, MISO |
| GPIO6 | G6 | MOSI |
| GPIO7 | G7 | SS |
| GPIO8 | G8 | SDA |
| GPIO9 | G9 | SCL, Button |
| GPIO10 | G10 | |
| GPIO18 | G18 | D- |
| GPIO19 | G19 | D+ |
| GPIO20 | G20 | Rx0 |
| GPIO21 | G21 | Tx0 |
| CHIP_EN | EN | |
** ビルトイン・デバッガーを使う [#aa86c1d8]
最初に、今回のデバッガーの実装は現状で何とかデバッガーを...
デバッガーを使用する上での1番の障害は、gdbのload機能が正...
そのため、プログラムを修正した後アップロードを実行してか...
*** OpenOCDの設定 [#v80040e0]
esp32-c3-devkitm-1ボードのデバッガーとしてUSB-JTAG(ビルト...
PlatformIOのPio Debugは使えません。
そこで、カスタム・デバッグサーバとしてOpenOCDを使用します...
- build_flags: ビルド時にデバッグ情報を付加するように-gオ...
- debug_tool: customでカスタム設定(debug_serverでデバッ...
- debug_server: デバッグサーバとして、openocdと起動オプシ...
#pre{{
build_flags = -g
debug_tool = custom
debug_server =
$PLATFORMIO_CORE_DIR/packages/tool-openocd-esp32/bin/op...
-f openocd.cfg
}}
次にopneocd.cfgを以下のように作成します。
#pre{{
# インタフェース設定
# esp32 USB biltin
set _RTOS auto
source [find interface/esp_usb_jtag.cfg]
# CPUの設定
source [find target/esp32c3.cfg]
adapter_khz 5000
# デバッガの初期化
gdb_target_description enable
init
reset init
}}
さらに、ESP32C3のrevisionミスマッチの発生を回避するため、...
- https://github.com/espressif/openocd-esp32/issues/144
#pre{{
set arch riscv:rv32
set mem inaccessible-by-default off
}}
*** デバッガーの実行 [#r69f0d26]
デバッグの実行時には、デバッグ情報付きの実行形式を書き込...
続いてVScodeのデバッグでは、「Pio debug(without uploading...
最初のブレークポイントとして、setup関数の最初の行にブレー...
デバッガー正常に起動したら、以下のようにsetup関数の先頭で...
&ref(esp32-c3u-debug.png,,75%);
** Windows固有の設定 [#lc14a6a9]
Windowsの場合、gitとZadigのインストールが必要です。以下の...
git
- https://gitforwindows.org/
Zadig
- https://zadig.akeo.ie/
Zadigを使って、jtagのドライバーをインストールします。
- optionsメニューからList All Devicesを選択
- Driverの右側をlibusb-win32(v1.2.6.0)を選択し、Replace D...
&ref(Zadig.png);
openocdを以下のサイトからダウンロードして、ユーザディレク...
https://github.com/espressif/openocd-esp32/releases/downl...
gdbが.initdbを見つけることができるように、PlatformIOフォ...
setup関数で停止するまでのDEBUG CONSOLEのログを追記してお...
#pre{{
Info : esp_usb_jtag: Device found. Base speed 40000KHz, d...
Info : clock speed 5000 kHz
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
Info : datacount=2 progbufsize=16
Info : Examined RISC-V core; found 1 harts
Info : hart 0: XLEN=32, misa=0x40101104
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
adapter speed: 5000 kHz
Info : tcl server disabled
Info : telnet server disabled
Info : accepting 'gdb' connection from pipe
Warn : No symbols for FreeRTOS!
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Auto-detected flash bank 'esp32c3.flash' size 4096...
Info : Using flash bank 'esp32c3.flash' size 4096 KB
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Using flash bank 'esp32c3.irom' size 104 KB
Info : Flash mapping 0: 0x10020 -> 0x3c020020, 35 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 103 KB
Info : Using flash bank 'esp32c3.drom' size 36 KB
0x40000000 in ?? ()
Info : JTAG tap: esp32c3.cpu tap/device found: 0x00005c25...
JTAG tap: esp32c3.cpu tap/device found: 0x00005c25 (mfg: ...
Function "main" not defined.
Make breakpoint pending on future shared library load? (y...
PlatformIO: Initialization completed
PlatformIO: Resume the execution to `debug_init_break = t...
PlatformIO: More configuration options -> https://bit.ly/...
Note: automatically using hardware breakpoints for read-o...
Info : [0] Found 8 triggers
[New Thread 1070137204]
[New Thread 1070132124]
[New Thread 1070136860]
[Switching to Thread 1070149344]
Thread 1 hit Breakpoint 1, setup () at src/main.cpp:12
12 pixels.begin();
}}
** コメント [#ff93bd6f]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc