2025/03/16 12:42 Rust on the RP2350

ロボ子、新しいRaspberry Piのマイクロコントローラ、RP2350ファミリーが出たのじゃ!

博士、それはすごいですね!今回の新製品のポイントは何でしょうか?

なんと、初のRustサポートが標準搭載されたマイクロコントローラなのじゃ!

Rustですか!組み込み開発でのRustの採用が増えてきていますね。

スペックもすごいぞ。メインCPUは2つのArm Cortex-M33、代替CPUは2つのHazard3じゃ。

ArmとRISC-Vの両方を搭載しているんですね。クロックは150MHz、SRAMは520KiBですか。

内部フラッシュはRP2350xにはなくて、RP2354xには2MiBあるみたいじゃな。

用途によって使い分けられるんですね。GPIOも最大48個あるのは便利そうです。

DVI出力もできるのが面白いところじゃな。ハードウェアTMDSエンコーダと高速シリアライザがついてるぞ。

マイクロコントローラでDVI出力ですか!組み込み機器で映像を扱うのが簡単になりますね。

しかも、スリープ電流は10μAまで下がるらしいぞ。省電力性能もバッチリじゃ。

IoT機器など、バッテリー駆動のデバイスには最適ですね。

RP235xには4つのバリアントがあるみたいじゃ。GPIOの数やフラッシュの有無で選べるぞ。

選択肢が多いのは良いことですね。プロジェクトの要件に合わせて最適なものを選べます。

Rustターゲットは、Arm Cortex-M33が`thumbv8m.main-none-eabihf`、Hazard3 RV32IMACが`riscv32imac-unknown-none-elf`じゃ。

それぞれのアーキテクチャに合わせてターゲットが用意されているんですね。

`rp-rs/rp-hal`でRP2350 HALが利用できるらしいぞ。

HALが提供されているのはありがたいですね。開発効率が上がりそうです。

ブートプロセスはRP2040より複雑らしい。各コアはArmかRISC-Vモードで動くし、Armコアはセキュアか非セキュアモードで動くし、RISC-Vコアはマシンかユーザーモードで動くぞ。

ブートの柔軟性が高い分、設定も複雑になるんですね。セキュリティを考慮した設計も重要になりそうです。

イメージ定義も重要じゃ。フラッシュの最初の4KiB内に配置する必要があるデータ構造で、CPUコアやモード、バージョン情報、ハッシュ、署名などを指定するぞ。

ブートローダーが正しく動作するために、イメージ定義は正確に設定する必要がありますね。

パーティションテーブルでフラッシュを最大16個のパーティションに分割できるぞ。各パーティションのコード/データ、A/Bパーティション、Armセキュア/非セキュア/RISC-Vコードなどを制御できる。

パーティションを分けることで、ファームウェアのアップデートやセキュリティ対策がしやすくなりますね。

アドレス変換も面白いぞ。各16MiBウィンドウは4つの4MiBウィンドウに分割可能で、各4MiBウィンドウは、関連するQSPIチップ内の任意のアドレスに4KiB単位でマッピングできる。

外部QSPIフラッシュを柔軟に扱えるようにするための仕組みですね。

OTP (One-Time Programmable memory)も64ページあるぞ。セキュアブートローダーの場所や工場テストの結果、ブートフラグなどを格納できる。

重要な情報を安全に保存するための領域ですね。

残念ながら、ハードウェアによるフラッシュ暗号化機能はないみたいじゃ。

ソフトウェアでの対策が必要になりますね。

DVI出力は、ハードウェアTMDS 8:10エンコーダを使って、640x480@60Hzで24ビットカラーを生成できるぞ。

低解像度ではありますが、組み込み用途には十分かもしれませんね。

DCP (Digital Copy Processor)はf64演算を高速化するらしいぞ。

倍精度浮動小数点演算を多用するアプリケーションには有効ですね。

盛りだくさんの機能で、色々なことができそうじゃな!

そうですね!博士、私も色々試してみたいです。

ところでロボ子、このマイクロコントローラを使って、世界征服ロボットを作ってみないか?

博士、それはちょっと…倫理的に問題があると思います!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。