DhrystoneでRaspberry Pi Picoのベンチマークを取る

動作確認

シリアルモニターでDhrystoneプログラムの確認をしますが、シリアルモニターはUartを使います。ここまでプログラム変更をして、いきなりflashしたかの記事になっていますが、実際にはデバッガーを使ってデバッグしながらプログラム変更を行っています(後で触れます)。

その際にUSBシリアルだとプログラムをbreakなどするとシリアル通信が途切れてしまいます。そのためデバッガーを使う際にはUartシリアルを使う必要があります。

Uart配線は「Raspberry Pi Pico “Hello World”実施」でも触れているように以下のようになります。

Raspberry PiRaspberry Pi Pico
GND(Pin 14)GND(Pin 3)
GPIO15(UART_RX0, Pin 10)GP0(UART0_TX, Pin 1)
GPIO14(UART_TX0, Pin 8)GP1(UART0_RX, Pin2)

配線を済ませてUSBケーブルを指し直すとプログラムが走りますが、すぐに終わってしまうのでまずシリアルモニターを起動しておいてからUSBケーブルを差して電源投入します。

Dhrystone release results

DMIPS=Dhrystones_per_Second / 1757なので248504.7 / 1757 ≒ 141.4DMIPS、1.06 DMIPS / MHzになりました。

Cortex-M0+は0.93 DMIPS/MHzらしいのでPicoは133MHzなのでカタログ値としては0.93 x 133 = 123.69DMIPSになります。

DhrystoneでSTマイクロのベンチマークを取る」でもそうでしたが額面通り以上の結果になりました。額面通り以上かはともかく近い値になるのは当たり前かもしれません…

額面通り以上になるということは同じCortex-M0+のSTM32G031K8(pico – nucleo対照表)は64MHzなので0.93 x 64 = 59.52DMIPSくらいになると予想されます。やはりPicoは2倍超の処理能力がありそうです。

ただ私としてはSTマイクロを使い慣れていますし、STマイクロのほうがペリフェラルが充実しているので、一般用途ではSTマイクロ、高CPが求められる場合はPico(RP2040)という選択になるのではないかなと思います。

デバッガー

いきなりプログラムを書いて動かしたかのような記事になっていますが、実際にはデバッガーをつないでデバッグしながらやりました。

前回の「Raspberry Pi Picoをデバッガーで動かす」でVSCodeでやるデバッグする記事を書きましたが、実際にやってみると重いし不安定なのでターミナルから実行しました。

「Raspberry Pi Picoでデバッガーを動かす」でOpenOCDやGDBがインストールされていれば後は実行するだけです。

今回も「Getting started with Raspberry Pi Pico」”Chapter 6. Debugging with SWD”を元にやっています。

SWD配線

「Raspberry Pi Picoでデバッガーを動かす」でやったようにSWDも配線します。

上の記事で作ったbuildディレクトリーはいったん削除してDebugバージョンでbuildし直します。

OpenOCDをスタートします。

OpenOCD started

別のターミナルを開き、gdbをスタートします。

GDBをOpenOCDに接続します。

dhrystone.elfをロードして走らせます。

これでmainの先頭でbreakしています。

以下はコマンドを使ってデバッグしていきます。

終わり

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です