大緊急事案!!!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

Go to top of page