Arduino勉強会/37-RaspberryPi Picoをはじめよう
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Arduino勉強会]]
#contents
2021/05/23からのアクセス回数 &counter;
** RaspberryPi Picoをはじめよう [#k78b3147]
Raspberry財団から販売されたRaspberry Pi Pico(以下Picoと省...
それと同時にPlatformIOもPicoをサポートしました。
ここでは、VScodeにPicoの開発環境を構築し、Arduinoフレーム...
&ref(Pico-bbrd.png,,70%);
** PlatformIOのインストール [#fff12e2c]
VScodeをまだ使用していない場合は、以下のサイトからダウン...
- https://code.visualstudio.com/download
VScodeを起動すると、画面の左側にさまざまなアイコンが並ん...
&ref(VScode-init.png,,70%);
Extenstionの画面では、検索フィールドが表示されるので、「p...
&ref(VScode-platformio.png,,70%);
** 新規プロジェクトの作成 [#g9eb988c]
PlatformIOがインストールされると左のアイコンリストにアリ...
新規のプロジェクトを作成するには、このアイコンをクリック...
&ref(Platformio-new.png,,70%);
Project Wizard画面に切り替わりますので、プロジェクトの名...
&ref(Project-Wizard.png,,70%);
*** 設定の変更 [#ya92138a]
プロジェクトが作られると以下のようなplatformio.iniファイ...
このファイルでプロジェクトの設定を行います。
今回は以下の行を追加してください。
#pre{{
upload_port = /Volumes/RPI-RP2/
monitor_speed = 115200
build_flags = -g
}}
各設定の意味は以下の通りです。
- upload_port: スケッチをアップロードする場所を指定します...
- monitor_speed: Picoとシリアルモニターで通信するときの通...
- build_flags: C++のビルドコマンドへのオプションを指定し...
&ref(platformio.ini-setting.png,,70%);
*** Lチカスケッチの作成 [#g74cdefe]
続いてLチカのスケッチを描きましょう。EXPLORERリストの「sr...
#pre{{
#include <Arduino.h>
// 起動時に最初に1回だけ実行される関数です
void setup() {
// ArduinoのデフォルトのLEDピンをデジタル出力に設定します
pinMode(LED_BUILTIN, OUTPUT);
}
// setup後繰り返し実行されます
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LEDをオン(HIGHは...
delay(1000); // 1秒待ちます
digitalWrite(LED_BUILTIN, LOW); // LEDをオフ
delay(1000); // 1秒待ちます
}
}}
&ref(L-Chika-sketch.png,,70%);
*** スケッチのPicoへのアップロード [#s3e19698]
MacOSの場合、スケッチをアップロードするにはPicoのBOOTSEL...
&ref(BootSel.png,,100%);
PlatformIOでスケッチをアップロードするには、PlatformIOア...
(以前はすぐにUploadの選択だけでよかったのですが、現在の...
スケッチをコンパイルした後、自動的にアップロードを実行し...
&ref(Upload-sketch.png,,70%);
スケッチのアップロードが完了するとPicoのドライブがアンマ...
&ref(Disk-warning.png,,100%);
これでPicoへのLチカスケッチがアップロードが完了し、LEDが...
** JTAG書き込みツールを使ったスケッチのデバッグ [#hf8d0996]
Picoにスケッチを書き込むには、JTAG-SWDに対応したJTAG書き...
私は自称デバッガーマニア(トランジスタ技術 2012/02 Mac/Li...
ここでは、安価なJLink-OBを使います。
aliexpressでは
[[1000円以下>https://ja.aliexpress.com/item/32827782488.h...
Amazonでも、
[[1990円>https://www.amazon.co.jp/dp/B07F3CV2K2]]
で入手できます。
&ref(JTAGs.png,,70%);
RaspberryPI Pico用のopenocdは以下のJTAG書き込みツールに対...
#pre{{
The following debug adapters are available:
1: ftdi
2: usb_blaster
3: jtag_vpi
4: ft232r
5: presto
6: usbprog
7: openjtag
8: jlink
9: vsllink
10: rlink
11: ulink
12: arm-jtag-ew
13: remote_bitbang
14: hla
15: osbdm
16: opendous
17: aice
18: cmsis-dap
19: kitprog
20: xds110
21: st-link
}}
*** J-Link OBとの結線 [#vc4aff9d]
PicoとJ-Link OBとの以下のように接続します。
| pico | J-Link OB |h
| 1 ▼ | SWCLK |
| 2 | GND |
| 3 | SWDIO |
*** OpenOCDコンフィグファイル [#f27b7a9a]
Pico用のOpenOCDコンフィグファイル(openocd.cfg)をplatfor...
RP2040の設定については、OpneOCDの大御所
[[ねむいさんの記事>http://nemuisan.blog.bai.ne.jp/?eid=23...
を参考にさせていただきました。
openocd.cfgの内容
#pre{{
# インタフェース設定
source [find interface/jlink.cfg]
adapter driver jlink
transport select swd
# RP2040 CPU設定
source [find target/rp2040.cfg]
$_TARGETNAME_0 configure -work-area-phys $_WORKBASE -work...
# デバッガの初期化
adapter speed 1000
gdb_target_description enable
init
reset init
}}
*** launch設定の変更 [#o13c15fb]
PlatformIOのデフォルトデバッガーはPIO debugとなっており、...
そこで、左下のギアのアイコン(Manage)>Settingsを選択し、...
「configurations」の[]の中をコピー&ペーストしてください...
#pre{{
{
"git.ignoreMissingGitWarning": true,
"launch": {
"configurations": [
{
"name": "Pico debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/.pio/build/p...
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"debugServerArgs": "-f ${workspaceRoot}/o...
"serverLaunchTimeout": 20000,
"filterStderr": true,
"filterStdout": true,
// "serverStarted"には、ターゲットの起動...
"serverStarted": "target halted due to de...
"MIMode": "gdb",
"setupCommands": [
{ "text": "-target-select remote loca...
{ "text": "-target-download ${workspa...
],
"logging": {
"moduleLoad": true,
"trace": true,
"engineLogging": true,
"programOutput": true,
"exceptions": true
},
"osx": {
"MIMode": "gdb",
"MIDebuggerPath": "${env:HOME}/.platf...
"debugServerPath": "${env:HOME}/.plat...
},
"windows": {
"MIMode": "gdb",
"miDebuggerPath": "\\Users\\${env:USE...
"debugServerPath": "\\Users\\${env:US...
}
}
],
"compounds": []
}
}
}}
*** デバッグの開始 [#t113638e]
準備が整ったで、Lチカ・スケッチをデバッガーで動かしてみま...
(MacOSXの人は、これで毎回BOOTSELボタンを押してスケッチを...
最初にSetup関数の行番号の左をクリックすると赤丸が付きます...
左のアイコンリストから「虫と▷」のアイコンを選択し、デバッ...
&ref(VScode-debug.png,,70%);
ここで、デバッガーのコマンドパネルで「Continue」や「Step ...
&ref(debug-exception.png,,70%);
この例外は、ブレークポイントでPicoの2つのCPUのスレッドが...
最初のOpenOCDコマンドhaltは、現在動作しているターゲット(...
#pre{{
$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
> resume
>
}}
画面上は何も変わりませんが、これで「Continue」や「Step Ov...
** Windows10固有の設定 [#xa3c1d62]
*** libusbのドライバーの設定 [#x3579ef3]
OpenOCDとuploadに使われているコマンドは、libusbのライブラ...
通常は、ドライバーのインストーラーが用意されていますが、l...
Zadig 2.5は、以下のサイトからダウンロードします。
- https://zadig.akeo.ie/
BOOTSELボタンを押したままPicoにUSBコネクターを差します。
Zadigを起動し、「Options」メニューから「List All Devices...
&ref(Zadig-options.png,,100%);
デバイスプルダウンから「RP2 Boot(Interface 1)」を選択し、...
インストールはしばらく時間がかかります。
この設定をしておけば、platform.iniでupload_portの指定は不...
;でコメントアウトしてください。
platform.ini
#pre{{
; upload_port = COM7
}}
同様にJ-LinkをUSBに差してドライバーを「libusb-win32(v1.2....
*** telnetの有効化 [#f531750d]
Windows10は、そのままではtelnetコマンドが使えません。Wind...
&ref(Activate-Telnet.png,,80%);
** コメント [#ff93bd6f]
#vote(おもしろかった[7],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[Arduino勉強会]]
#contents
2021/05/23からのアクセス回数 &counter;
** RaspberryPi Picoをはじめよう [#k78b3147]
Raspberry財団から販売されたRaspberry Pi Pico(以下Picoと省...
それと同時にPlatformIOもPicoをサポートしました。
ここでは、VScodeにPicoの開発環境を構築し、Arduinoフレーム...
&ref(Pico-bbrd.png,,70%);
** PlatformIOのインストール [#fff12e2c]
VScodeをまだ使用していない場合は、以下のサイトからダウン...
- https://code.visualstudio.com/download
VScodeを起動すると、画面の左側にさまざまなアイコンが並ん...
&ref(VScode-init.png,,70%);
Extenstionの画面では、検索フィールドが表示されるので、「p...
&ref(VScode-platformio.png,,70%);
** 新規プロジェクトの作成 [#g9eb988c]
PlatformIOがインストールされると左のアイコンリストにアリ...
新規のプロジェクトを作成するには、このアイコンをクリック...
&ref(Platformio-new.png,,70%);
Project Wizard画面に切り替わりますので、プロジェクトの名...
&ref(Project-Wizard.png,,70%);
*** 設定の変更 [#ya92138a]
プロジェクトが作られると以下のようなplatformio.iniファイ...
このファイルでプロジェクトの設定を行います。
今回は以下の行を追加してください。
#pre{{
upload_port = /Volumes/RPI-RP2/
monitor_speed = 115200
build_flags = -g
}}
各設定の意味は以下の通りです。
- upload_port: スケッチをアップロードする場所を指定します...
- monitor_speed: Picoとシリアルモニターで通信するときの通...
- build_flags: C++のビルドコマンドへのオプションを指定し...
&ref(platformio.ini-setting.png,,70%);
*** Lチカスケッチの作成 [#g74cdefe]
続いてLチカのスケッチを描きましょう。EXPLORERリストの「sr...
#pre{{
#include <Arduino.h>
// 起動時に最初に1回だけ実行される関数です
void setup() {
// ArduinoのデフォルトのLEDピンをデジタル出力に設定します
pinMode(LED_BUILTIN, OUTPUT);
}
// setup後繰り返し実行されます
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LEDをオン(HIGHは...
delay(1000); // 1秒待ちます
digitalWrite(LED_BUILTIN, LOW); // LEDをオフ
delay(1000); // 1秒待ちます
}
}}
&ref(L-Chika-sketch.png,,70%);
*** スケッチのPicoへのアップロード [#s3e19698]
MacOSの場合、スケッチをアップロードするにはPicoのBOOTSEL...
&ref(BootSel.png,,100%);
PlatformIOでスケッチをアップロードするには、PlatformIOア...
(以前はすぐにUploadの選択だけでよかったのですが、現在の...
スケッチをコンパイルした後、自動的にアップロードを実行し...
&ref(Upload-sketch.png,,70%);
スケッチのアップロードが完了するとPicoのドライブがアンマ...
&ref(Disk-warning.png,,100%);
これでPicoへのLチカスケッチがアップロードが完了し、LEDが...
** JTAG書き込みツールを使ったスケッチのデバッグ [#hf8d0996]
Picoにスケッチを書き込むには、JTAG-SWDに対応したJTAG書き...
私は自称デバッガーマニア(トランジスタ技術 2012/02 Mac/Li...
ここでは、安価なJLink-OBを使います。
aliexpressでは
[[1000円以下>https://ja.aliexpress.com/item/32827782488.h...
Amazonでも、
[[1990円>https://www.amazon.co.jp/dp/B07F3CV2K2]]
で入手できます。
&ref(JTAGs.png,,70%);
RaspberryPI Pico用のopenocdは以下のJTAG書き込みツールに対...
#pre{{
The following debug adapters are available:
1: ftdi
2: usb_blaster
3: jtag_vpi
4: ft232r
5: presto
6: usbprog
7: openjtag
8: jlink
9: vsllink
10: rlink
11: ulink
12: arm-jtag-ew
13: remote_bitbang
14: hla
15: osbdm
16: opendous
17: aice
18: cmsis-dap
19: kitprog
20: xds110
21: st-link
}}
*** J-Link OBとの結線 [#vc4aff9d]
PicoとJ-Link OBとの以下のように接続します。
| pico | J-Link OB |h
| 1 ▼ | SWCLK |
| 2 | GND |
| 3 | SWDIO |
*** OpenOCDコンフィグファイル [#f27b7a9a]
Pico用のOpenOCDコンフィグファイル(openocd.cfg)をplatfor...
RP2040の設定については、OpneOCDの大御所
[[ねむいさんの記事>http://nemuisan.blog.bai.ne.jp/?eid=23...
を参考にさせていただきました。
openocd.cfgの内容
#pre{{
# インタフェース設定
source [find interface/jlink.cfg]
adapter driver jlink
transport select swd
# RP2040 CPU設定
source [find target/rp2040.cfg]
$_TARGETNAME_0 configure -work-area-phys $_WORKBASE -work...
# デバッガの初期化
adapter speed 1000
gdb_target_description enable
init
reset init
}}
*** launch設定の変更 [#o13c15fb]
PlatformIOのデフォルトデバッガーはPIO debugとなっており、...
そこで、左下のギアのアイコン(Manage)>Settingsを選択し、...
「configurations」の[]の中をコピー&ペーストしてください...
#pre{{
{
"git.ignoreMissingGitWarning": true,
"launch": {
"configurations": [
{
"name": "Pico debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/.pio/build/p...
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"debugServerArgs": "-f ${workspaceRoot}/o...
"serverLaunchTimeout": 20000,
"filterStderr": true,
"filterStdout": true,
// "serverStarted"には、ターゲットの起動...
"serverStarted": "target halted due to de...
"MIMode": "gdb",
"setupCommands": [
{ "text": "-target-select remote loca...
{ "text": "-target-download ${workspa...
],
"logging": {
"moduleLoad": true,
"trace": true,
"engineLogging": true,
"programOutput": true,
"exceptions": true
},
"osx": {
"MIMode": "gdb",
"MIDebuggerPath": "${env:HOME}/.platf...
"debugServerPath": "${env:HOME}/.plat...
},
"windows": {
"MIMode": "gdb",
"miDebuggerPath": "\\Users\\${env:USE...
"debugServerPath": "\\Users\\${env:US...
}
}
],
"compounds": []
}
}
}}
*** デバッグの開始 [#t113638e]
準備が整ったで、Lチカ・スケッチをデバッガーで動かしてみま...
(MacOSXの人は、これで毎回BOOTSELボタンを押してスケッチを...
最初にSetup関数の行番号の左をクリックすると赤丸が付きます...
左のアイコンリストから「虫と▷」のアイコンを選択し、デバッ...
&ref(VScode-debug.png,,70%);
ここで、デバッガーのコマンドパネルで「Continue」や「Step ...
&ref(debug-exception.png,,70%);
この例外は、ブレークポイントでPicoの2つのCPUのスレッドが...
最初のOpenOCDコマンドhaltは、現在動作しているターゲット(...
#pre{{
$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
> resume
>
}}
画面上は何も変わりませんが、これで「Continue」や「Step Ov...
** Windows10固有の設定 [#xa3c1d62]
*** libusbのドライバーの設定 [#x3579ef3]
OpenOCDとuploadに使われているコマンドは、libusbのライブラ...
通常は、ドライバーのインストーラーが用意されていますが、l...
Zadig 2.5は、以下のサイトからダウンロードします。
- https://zadig.akeo.ie/
BOOTSELボタンを押したままPicoにUSBコネクターを差します。
Zadigを起動し、「Options」メニューから「List All Devices...
&ref(Zadig-options.png,,100%);
デバイスプルダウンから「RP2 Boot(Interface 1)」を選択し、...
インストールはしばらく時間がかかります。
この設定をしておけば、platform.iniでupload_portの指定は不...
;でコメントアウトしてください。
platform.ini
#pre{{
; upload_port = COM7
}}
同様にJ-LinkをUSBに差してドライバーを「libusb-win32(v1.2....
*** telnetの有効化 [#f531750d]
Windows10は、そのままではtelnetコマンドが使えません。Wind...
&ref(Activate-Telnet.png,,80%);
** コメント [#ff93bd6f]
#vote(おもしろかった[7],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc