大緊急事案!!!1!Raspberry Pi Picoはぢめました!!1!!1
●なにっ
超小型linuxPCの代名詞となったRaspberryPiですがNanoに加えてPicoなるものも
ラインナップに加わりました!!
秋月電子通商さんで550円ですでに販売されており、すでに手に入れられた方も
いるかと思います。ねむいさんも早速購入していぢって見ることにしました!!!
基板としてはRaspiNanoよりも一回り小さいサイズとなっております。
MPUはARMのCortex-M0plusのデュアルコア構成、Raspberry財団のロゴが
レーザーマーキングされた特製のものとなっております!
しかもM0+のコアながら100MHz越えの高速クロックで動く代物です!!
※細かいスペックは次回以降に紹介します。
●とりあえず動かしてみる
USB-microコネクタから給電するとフラッシュに何も書いてないときもしくは
BOOLSELボタンを押しながら給電するとマスストレージとして見えます。
binファイルではなくuf2(USB Flashing Format Data)をドラッグアンド
ドロップすることにより内蔵フラッシュに書き込まれるようです。
RaspiPicoの公式ページにはGettingStartとしてこのD&Dで始める方法が紹介
されており動作確認用のuf2ファイルも落とせます。
これでLチカを確認できます。
●プログラムのビルド方法は?
同じくGettingStartedに方法が書いてあります。OS間で共通する項目は
SDKを使いCMAKEとPythonでmakefileを生成してビルドするということです…
…CMAKEってねむいさん嫌いなんですよね…記述がちょっとでも抜けてたら
思った通りに動作しなくて…Raspiなので基本的にLinux系OS下のビルドを前提と
しています。
幸いにもWindows環境下のビルド指南もしております。
もちろんCMakeとPythonとVisualStudioCodeが必要です。が、ねむいさんは
中途半端にMSYSのOpenOCDビルド環境を持っているのでそちらと折半して
ビルドしてみました。
…
(格闘すること2時間後)
あああもうめちゃくちゃだよ
make一発で出来るようにシンプルなライブラリの構成にしてほしかった…!
しかも一度に全部のプロジェクトをビルドしやがるのでものすごく時間がかかります。
※ねむいさん式RaspiPicoビルド環境は次回以降に(またかいな
●ビルドしたやつをどう書き込むのか?
ビルドしたプログラムを書き込むだけなら上記のUF2ファイルをマスストレージ
モードでD&Dで書き込む方法がありますがねむいさんがそんなので済ませるわけは
ありません!!!
Cortex-M0+コアなのでOpenOCDが使えるはずです…がデュアルコアかつSWDオンリー
なので無理か…と思いきやRaspberryPi公式でOpenOCDをRP2040用にFork
しており、こちらはなんとマルチドロップSWDとRP2040のフラッシュ
書き込みドライバの対応済です!!
画像の上部に写ってるイラスツは気にしてはいけない。
RP2040用の書き込みcfgも作成してRaspiPico専用OpenOCD+JTAGKey2を使って
RaspiPicoにelfファイルを書き込みせしめることに成功しました!!!!
ログはこんな感じになります。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd-pi -s C:/Devz/ARM/OCD/tcl -f interface/jtagkey2_swd.cfg -f target/rp2040_swd_flash.cfg -c "mt_flash blink.elf"
Open On-Chip Debugger 0.10.0+dev-gf8e14ec97 (2021-02-07-14:35)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : FTDI SWD mode enabled
Info : Hardware thread awareness created
Info : Hardware thread awareness created
Info : RP2040 Flash Bank Command
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x0bc12477
Info : SWD DLPIDR 0x00000001
Info : SWD DPIDR 0x0bc12477
Info : SWD DLPIDR 0x10000001
Info : rp2040.core0: hardware has 4 breakpoints, 2 watchpoints
Info : rp2040.core1: hardware has 4 breakpoints, 2 watchpoints
Info : starting gdb server for rp2040.core0 on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x000000ee msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x000000ee msp: 0x20041f00
Info : RP2040 B0 Flash Probe: 2097152 bytes @10000000, in 512 sectors
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
Info : Writing 16384 bytes starting at 0x0
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000178 msp: 0x20041f00
shutdown command invoked
> Process Exit Code: 0
> Time Taken: 00:01
そんなわけでとりあえずほんとに基本だけ紹介してみましたが次回以降は
RP2040のMPUスペックやメモリ構成などの深い部分に突っ込んでいこうと思います!
それに先立ってRaspiPico(RP2040)用のOpenOCDバイナリを公開いたします。
ねむいさんのいつものOpenOCDバイナリに書き込み用cfgとともに同梱しておりまので
どしどしご利用ください!!!!
↑RaspiPico専用OpenOCD:openocd-pi.exe
同じく専用cfg:target/rp2040_swd_flash.cfg
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (26)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- November 2024 (1)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.
Comments
いつもブログの記事に助けられています。
Raspberry Pi PicoのmbedベースのArduinoのスケッチをOpenOCDでデバッグするとmbedのRTOSに未対応のため、ブレークポイントで停止した後の実行で上手く制御できなくなります。
OpenOCDコミュニティでのmbedのRTOSのサポート状況をお教えください。
FreeRTOSベースの Arduinoでは問題なくデバッグできています。
よろしくお願いします。
竹本様こんばんは。ねむいです。
OpenOCDはまだmbedOSのサポートをしておりません。
pyOCDではmbedOSのサポートをしているようです(未検証)
os.mbed.com/docs/mbed-os/v6.13/debug-test/eclipse.html
ねむいさん、お返事ありがとうございます。
mbed OSはPyOCDの使用を薦めているので、そのような状況もうなずけます。
Picoのようなマルチコアに対して、PyOCDでは1コアに対して1 gdbサーバを割り当てることで対処しているとありました。
https://github.com/pyocd/pyOCD/blob/main/docs/multicore_debug.md
OpenOCDは、1個のgdbサーバしか接続できないので、どのようにしてマルチコアCPUをデバッグされているのでしょうか。
ご教示いただけますと幸いです。
竹本様こんにちは、ねむいです。
OpenOCDの場合はcfgファイルの"target create"でコアごとに
定義してやるとデフォルトポートの3333からインクリメントされた
値のポートが追加される仕組みになっています。
まずgdbで3333に接続した後もう一つgdbを立ち上げ3334にアタッチ
すると別のコアに接続ができます。
私のOpenOCDバイナリ中の/tcl/targetlpc4370_lpclink2_spifi.cfgに
マルチコアの場合の定義のやり方が書いてありますので参考に
してください。
ねむいさん、お忙しいところお返事ありがとうございます。
勉強不足でgdbポートが増やせることを知りませんでした。
targetlpc4370_lpclink2_spifi.cfgを参考にさせていただきます。
どうもありがとうございました。
竹本 浩
Post a Comment