- RP2040はPIO・DMA・オーバークロックが強みだったが、コア性能、RAM、GPIO、PIOリソース、QSPI PSRAMの不足により、一部のプロジェクトではSTM32H7へ移行せざるを得ず、RP2350はその空白を大きく埋めた
- RP2350はデュアル Cortex-M33F、浮動小数点対応、倍精度数学を高速化するカスタム命令、RAM 2倍、RISC-Vコアの選択肢を提供し、複数のプロジェクトで300MHzで安定して使えた
- PIOはFIFOをメモリのように任意読み書きに活用でき、PIO 3基とPIO間割り込み、改善されたDMAのおかげでSony Memory Stick slaveやSDIO slaveの実装まで可能になった
- QSPI PSRAMは読み書きとキャッシュが機能し、STM32H7で停止やクラッシュが出ていたメモリテストもRP2350では継続実行でき、2層の手配線基板に16MB RAMを載せる作業も簡単になった
- 最初期に公開されたRP2350プロジェクトの1つであるDEFCON 32 badgeはGame BoyエミュレータとPalmOSの実行を示し、RP2354A/RP2354Bは2MBのin-package flashと同一ピン配置、80ピンGPIO拡張バリアントを提供する
RP2040で物足りなかった点と期待していた改善
- RP2040は多くのプロジェクトで使われたマイクロコントローラで、とくにPIO、よく設計されたDMA、高いオーバークロック耐性が強みだった
- PIOとDMAの組み合わせは次の実装に活用された
- 高度なディスプレイドライバ
- RAM・ROMを備えた完全なシステムバスのように動作する基板
- MC68328プロセッサに接続される構成
- RP2040で不足していた点は、主に周辺資源とメモリ拡張性に集中していた
- 他のチャネルを無駄にしないDMAのforever転送モード
- より多くのDMAチャネル
- PIO state machineで一時変数を保存するためのより多くのレジスタ
- より多くのPIOユニット
- PIOあたり32個を超える命令スロット
- より多くのGPIO
- 高クロックはCortex-M0+コアの弱さを隠す役割が大きく、Cortex-M4Fのようなより優れたコアがあれば、浮動小数点や軽いSIMDワークロードで有利だったはずだと評価している
- QSPI PSRAM対応とより多くのRAMも重要な要望だった
STM32H7のQSPI RAM経験との比較
- 一部の用途ではRP2040の代わりにSTM32H7を使わざるを得なかったが、STM32H7のバグやSTMicroのerrata対応には強い不信が残っている
- STM32H7のQSPI RAM対応では次の問題が見られた
- キャッシュなしで書くとwriteが失われる
- キャッシュを有効にすると、一部の1バイトwriteの周辺にランダムなgarbageが記録される
- PSRAM上でコードを実行すると、数十億回のアクセス後にチップ全体が停止し、デバッガも接続できなくなる
- 問題を報告してデモも提供したが、STMicroの対応は十分ではなかった
- 回避策は見つかったものの、**性能の7〜10%**を消費し、チップの有用性を損なった
RP2350で満たされた改善点
- 過去1年間、Raspberry Piの協力のもとでRP2350サンプルを使いながらバグ報告や提案を行い、RP2040の用途がどう改善されるかを確認した
- コアと演算性能は大きく改善された
- Cortex-M33Fコアを2基搭載
- 浮動小数点対応
- Cortex-M33Fの一般的なsingle-precisionを超えて、double-precision数学を高速化するカスタム命令を提供
- double-precision演算はsingle-cycleではないが、1 opあたり2〜3サイクル程度
- RISC-Vコアも使えるが、実際のプロジェクトではCortex-M33を使った
- 複数のプロジェクトでRP2350を300MHzで動かしても問題はなかった
- RAM容量はRP2040比で2倍になった
PIOとDMAの変化
- RP2350のPIOはFIFOをメモリのように使って任意読み書きが可能で、従来は一時変数不足で難しかったPIO構成が容易になった
- チップ内のPIO数は3基に増えた
- PIO間で割り込みを送れるようになり、cross-PIO同期やより複雑な構成を作れるようになった
- 改善されたPIOとDMAの組み合わせは、実際のプロジェクトで次の実装に使われた
- Sony Memory Stick protocol slave: デバイスが実際のMemory Stickとして認識する
- SDIO slave device: テストしたデバイスがSDIOデバイスとして認識する
- DMAも転送継続性とアドレス制御の面で強化された
- 他のチャネルを使わずに無限転送が可能
- アクセスごとにメモリアドレスを調整する方式が増えた
- RP2040の「同じアドレス」または「アクセスサイズぶん増加」に加え、減少や別サイズでの増加オプションが追加された
QSPI PSRAM対応
- RP2350はQSPI PSRAMに対応し、読み書きが機能する
- キャッシュも提供され、正常に動作する
- STM32H7で停止やクラッシュが起きていたメモリテストはRP2350では継続実行でき、データ消失やチップハングもなかった
- 可能な組み合わせは次のとおり
- flash 1個 + PSRAM 1個
- flash 2個
- boot flash 1個 + ランタイムPSRAM 2個
- VTOR、SP、PCをすべてPSRAMに置き、PSRAM向けのLDM/STM命令を大量に実行しながら割り込みを受ける構成でも問題なく動作した
- 構成はCコード3行で済み、2層の手組み基板に16MB RAMを追加する作業も簡単になった
- 初期のRP2350サンプル基板であるPi Pico 2にはPSRAM footprintがなかったため、PSRAMをdead-bug方式で取り付けたが、その状態でもfull speedで動作した
維持された強みと開発体験
- RP2040からRP2350へ移行しても、周辺機能の設計とドキュメント品質は維持されている
- 周辺機能は約束どおりに動作すると評価している
- SDKは明快で簡潔であり、大規模なCube/HAL系ツールをダウンロードする必要がない
- コードはmacro hellではなく、きちんと動く
- Raspberry PiのRP2350開発ボードはrPiPico互換で、PiPico 2で複数のプロジェクトを容易に動かせた
最初期に公開されたRP2350プロジェクト: DEFCON 32 badge
- 公開されたRP2350プロジェクトの1つがDEFCON 32 badgeである
- ハードウェアはEntropic Engineeringが開発し、ファームウェアは小型Game BoyエミュレータuGBの移植版である
- 2つのコアは役割分担して使われた
- 片方のコアはCortex-M33のSIMD命令を使ってGame Boy画面を1.5倍にアップスケール
- もう片方のコアはエミュレーション、UI、残りの処理を担当
- 有効なGame Boyゲームは最大2MBまで動作し、より大きいflashチップを載せればさらに大きいゲームも可能になる
- プリロードされたGame BoyゲームはDEFCON側が作成した
- このbadgeではチップを保守的に125MHzで動作させている
- テスト時間があまりなく、生産規模が中間段階なしに10台から28,000台へ増え、plan Bもなかった
- ディスプレイ最大クロックは62.5MHzで、PIO state machineがこれを供給するため、ディスプレイクロックはシステムクロックの整数倍である必要があった
PalmOS実行とファームウェア
- 同じDEFCON 32 badgeハードウェアでは、rePalm projectを通じてfull version PalmOSも実行できる
- 標準のbadgeにはPSRAMは実装されていないが、PalmOSは動作する
- メモリには余裕がないものの、infrared beaming、SD card、簡単なゲーム、memo pad、audioなどが動作する
- AP Memory 64Mbit PSRAMチップを実装すると2つ目のイメージが使え、より多くのメモリでゲームのロードやTCPMPによるMP4のリアルタイム再生が可能になる
- ファームウェアイメージはドキュメントにあり、SDカードに
FIRMWARE.BINという名前で入れ、FNボタンメニューからfirmware updateを選んで読み込む
- stock firmwareの復元はUSBとUF2 protocol経由でどのコンピュータからでも可能で、stock imageも同じドキュメントから入手できる
RP2354とさらに多いGPIO
- STM32H7向けプロジェクトをRP2350で再計画してよいという結論に至った
- RP2350は外部SPI flashが必要だという指摘に対して、built-in flashバリアントのRP2354AとRP2354Bがある
- RP2354A/RP2354Bはin-package 2MB flashを含む
- ピン配置はRP2350A/Bと同一である
- より多くのGPIOを提供する80ピンパッケージのバリアントもある
利害関係の開示
- この記事について金銭的報酬や対価は受け取っていない
- 執筆依頼は受けておらず、いかなる承認も受けていない
- RP2350のearly accessは、公に肯定的なことを言うことや特定の発言をすることを条件にしたものではなかった
1件のコメント
Hacker News のコメント
ここ数年、RP2040 ベースのブラシレスモータードライバを開発してきたので、今回の発表には本当に期待している。
ドライバモジュールは最大 53V、連続 30A、ピーク 50A を扱える。最近、ドライバを独立したモジュールとして切り出したが、農場ロボットに役立つうえ、設計改善中のドライバテストにも重要だ。今回のリビジョンはかなり安定して見えるので、近いうちに RP2350 で低価格の単一ボード統合型 1 モータードライバを作れるかもしれない。RP2040 ではループ速度が 8kHz で、大型の農場ロボットの駆動モーターには十分だが、浮動小数点を使う高性能ドライバの中には 50kHz のループ速度を出すものもある。
ボードは SimpleFOC を実行しており、フォーラムではフラッグシップ設計を作ろうという話があった。ただしセンサレス制御と浮動小数点対応が必要なので、ADC ピンが 8 本ある RP2350 の新しい大型ピンアウト版を使えば、電流信号 3 つとブリッジ電圧 3 つを測定して、なかなか良いセンサレスドライバを作れる。設計が整うまでには数か月かかるだろうが、最新情報は Git リポジトリや Twitter プロフィールを見ればよい。
https://github.com/tlalexander/rp2040-motor-controller
https://twitter.com/TLAlexander
脚と車輪に自転車部品を使っているところが本当に気に入った。
専用ペリフェラルや、センサ付き/センサレス BLDC 制御向けのアプリケーションノートとコード例がある専用 MCU はすでに存在するし、RP2040 はこの用途にうまく適したチップではないと思う。
子どものころ、おもちゃの車を壊してモーターを取り出し、何かを成し遂げたような気分になっていた時代を思い出す。
RP2040 を実製品に使うのは想像しにくかったが、RP2350 は不満点のかなりの部分を直していて、試してみたいと思えるほど期待している。
RP2040 にも長所は多かった。TBMAN は素晴らしいコンセプトだし、オーバークロックも非常によく効く。PIO は本当に革新的で、8051 系をドーターボード型の Arm コアで置き換えようとしている多くの企業にとって大きな価値がある。
しかし、素晴らしい点のそれぞれに惜しい点もあった。DSP 級のクロック速度なのに FPU もハードウェア整数除算もない。メモリ保護のない MCU のブート ROM に USB DFU 機能が入っているのも望ましくない。Zephyr のようなサードパーティ SDK では PIO サポートが極めて限定的で、大規模プロジェクトでの活用度が下がる。
RP2350 はこうした不満をほぼすべて解消していて、とても期待している。ただし PIO で CAN や SDMMC のような一般的なペリフェラルを実装しなければならないなら、すぐに不利になる。柔軟性は素晴らしいが、製品を素早く立ち上げる必要があるときに、特殊目的のアセンブリ言語をいじりたくはない。結局のところ、SD/MMC、MII、Bluetooth HCI のようなよくある機能向けに用意済みのソフトペリフェラルライブラリを提供すれば、Zephyr などとの統合もしやすくなり、チップの活用範囲も大きく広がると思う。
完成度はもっと高められるだろうが、「用意済み」の形にはかなり近い。
PIO は大きな利点で、新バージョンでその方向性をさらに強化しているのはうれしい。すでに CAN、WS2812 など多様なペリフェラル向けの PIO ドライバを人々が開発しており、期待していた姿に近い。
自律ペリフェラル動作、オペアンプ、コンパレータ、キャプチャ/比較タイマーも同様だ。Zephyr はデスクトップ OS のように共通インターフェースを提供しようとするが、組み込みではうまく合わない。デスクトップでは最小公約数だけで十分な場合が多いが、組み込みではまさにその非共通機能が理由でプラットフォームを選ぶことが多い。
RP2040 を選んだ理由には設計思想もあったが、チップ不足の後で入手しやすかったことも大きかった。
実際には「サンプル」があり、そうしたものがファーストクラスのサポート対象として提供されると、なお良い。
仕様はこちらで確認可能: https://www.digikey.ca/en/product-highlight/r/raspberry-pi/r...
Raspberry Piが英国で設計したRP2350ベース、FPU搭載150MHzデュアルArm M33、520KiB SRAM、署名付きブート・OTP・SHA-256・TRNG・グリッチ検出器・Arm TrustZone for Cortex-Mなどのセキュリティ機能、オプションの150MHzデュアルRISC-V Hazard3 CPU、低消費電力動作、カスタム周辺機器サポート用のPIO v2 3基とステートマシン12基、PSRAM対応、より高速な外部XIP QSPIフラッシュインターフェース、オンボードQSPIフラッシュ4MB、5V許容GPIO、オープンソースのC/C++ SDKとMicroPython対応、Pico 1/RP2040ソフトウェア互換、USBマスストレージ経由のドラッグ&ドロッププログラミング、キャリアボードに直接はんだ付け可能なキャスタレーションモジュール、Pico 1と同一フットプリントおよびピン互換、アナログ入力3個を含む多機能GPIO 26個、動作温度 -20°C〜+85°C、入力電圧 1.8VDC〜5.5VDC
後で見ると14.8.2.1節に「Standard Digital」と「Fault Tolerant Digital」の2種類のデジタルピンが出てきて、FT Digitalピンが5V許容のように見える
Pigweedチームにとっては大きな日だ
RP2350/Pico 2の本発表でも一部の作業が触れられていたが [1]、ここ数か月にわたってBazel [3] 上に作った新しいエンドツーエンドSDK [2] に取り組んでおり、RP2040とRP2350の両方をサポートしている。Pico SDKにBazelサポートをアップストリームする作業も含まれる。新しい「Tour of Pigweed」[4] は、密閉型ビルド、デバイス内ユニットテスト、RPC中心の通信、机上での工場テストといった複数のPigweed機能が、単一のコードベースで連携して動作する様子を示している。質問はDiscord [5] で受け付ける
[1] https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new...
[2] https://opensource.googleblog.com/2024/08/introducing-pigwee...
[3] https://blog.bazel.build/2024/08/08/bazel-for-embedded.html
[4] https://pigweed.dev/docs/showcases/sense/
[5] https://discord.gg/M9NSeTA
すべてが密閉型として統合され、ワークフローがBazelコマンド1つにまとまる様子を見ると差は大きい
Pigweedの発表にこの点がまったくないのは意外
マイクロコントローラのエコシステムからはJavaを外してほしい
同じダイでArmコアとRISC-Vコアのどちらかを選べるという設計は初めて見る
価格と消費電力に影響があるのか気になる。Hazard3コアはオプションで、起動時に内蔵のArm Cortex-M33コアのペアかHazard3コアのペアを選んで150MHzで実行できる。さらに思い切れば、RVを1つとArmを1つ一緒に実行することもできる
Hazard3はオープンソース設計で、資料も公開されている。軽量な3段インオーダー実行RV32IMACZb*マシンで、32ビット基本RISC-V ISAにハードウェア乗算・除算、アトミック命令、ビット操作などをサポートする
Eben Uptonは「起動時に選択できる。バスファブリックに入る各ポートを、muxを通じてM33またはHazard3のどちらかに接続できる。変わったことをしたければ、それぞれ1つずつ実行することもできる」と説明している
出典: https://www.theregister.com/2024/08/08/pi_pico_2_risc_v/
実際の命令コアが占める面積は、通常、周辺機器や内部メモリに比べてかなり小さい
別チップを新たにテープアウトするよりもはるかに低いコストで、技術的検証と市場受容性の両方を確認できる
望めば完全にオープンソースのRISC-Vを選べる点がとても素晴らしい。RVコアはクロックあたりの性能ではM33より遅そうで、ベンチマークスコアはM33のほうが良いと予想している。Hazard3が3段パイプラインだからだが、M33も3段ではある。ベンチマークが待ち遠しい
公式ニュース記事: https://news.ycombinator.com/item?id=41192341
公式製品ページ: https://news.ycombinator.com/item?id=41192269
RP2040にはDoomが移植済み: https://kilograham.github.io/rp2040-doom/
RP2350ではQuakeの実行も可能そうに見える。一部の変更点は、ほとんどこの目的のために設計されたように感じるほど。FPU、150MHzデュアルコア、300MHz以上へのオーバークロックの可能性、ハードウェア読み書きページングを備えた最大16MBのPSRAM対応がある
開発ボードがmicro-USBを使っているのはいまいち。2024年なのにそうなのだから
それ以外は素晴らしく、既存の巨大メーカーと競争するのにまさに必要な製品だ
現代の製品がすべてUSB-Cなのはよいことだが、micro-USBケーブルもたくさん余っているので、公式のPicoとPico 2がmicro-USBでもそれほど不便ではない。プロジェクトに合わせて好きなポートを選べる選択肢があるのはよい
インターフェースチップもより複雑である必要があり、そのため高価になる可能性が高い。AliExpressには今でもmicro-USBを使う低価格機器が多く、需要もあるはずだ。顧客層によっては、開発ボードをそのまま消費者向け製品にすることもあり得る
消費者向けに見える若い会社の2つ目のマイクロコントローラに、セキュリティをこれほど多く入れてきたのは少し意外だ
最初は経験不足のため、セキュリティを信頼しにくいと感じた。しかし「経験豊富な」ベンダーのセキュアマイクロコントローラにも既知のセキュリティバグは多く、さらに重要なのは、そうした問題を隠そうとする姿勢が見えたことがある点だ。セキュリティアーキテクチャの監査を2回受け、1万ドルのバグバウンティを設定し、DEF CONバッジのようなグリッチング用ボードを設計したことは、セキュリティへのかなり大きなコミットメントを示している。Redundancy Coprocessorがどう動作するのかも気になる。それでも誰かが少なくとも一部を破れても驚きではない
認識としては消費者向けという意味で、売上と供給の観点では産業用途のユーザーを優先してきたように見える
公式発表やデータシートはまだ見つけられていないが、この記事によるとRP2040からの大きな飛躍のように見える
2× Cortex-M33F、改善されたDMA、より多く改善されたPIO、外部PSRAM対応、内部フラッシュ2MBと80ピン版、512KiB RAMへの倍増、いくつかのRISC-Vコアが含まれているようだ。低消費電力用かもしれない