Raspberry Pi Pico2でCPU実験のレイトレを動かしたい
https://gyazo.com/3e12c296e6a581ce0d7cf1406999253b
浮動小数点ユニット(FPU)を搭載していなかったためにレイトレの移植を諦めた Raspberry Pi Pico だったが、Raspberry Pi Pico 2になって FPU が搭載されて、浮動小数点演算命令を使えるようになった。また、Raspberry Pi Pico 2 が搭載している RP2350 チップは PSRAM にも対応しており、Adafruit Metro RP2350 などには 8MB の PSRAM が搭載されている。 FPUがあって主記憶メモリも8MBあれば、CPU実験のレイトレも動くのでは?ということで、Raspberry Pi Pico 2のMCUチップ「RP2350」へ MinCaml を移植し、レイトレを動かしてみることにした。
ターゲットボード
PSRAM が 8MB ある Adafruit Metro RP2350 で動かす予定だったが、RAM 512KB の Raspberry Pi Pico2 でも動いてしまった
CPUアーキテクチャと命令セット
RP2350 は、ARMとRISC-Vのデュアルコア
ARMコア→Cortex-M33
RISC-Vコア→名前忘れた
RISC-VコアはFPUを搭載していないので、今回はARMコアを利用
Cortex-M33の命令セット
シミュレータ
ラズピコ実機への転送は少し面倒なので、MinCaml移植の大半はQEMU(エミュレータ?シミュレータ ?)上で行った。
作業記録
2026/05/01
MinCamlコンパイラ用のリポジトリを作成
2026/5/3
2026/5/4
2026/5/5
2026/5/6
2026/5/10
2026/5/11
2026/5/14
Raspberry Pi Pico2でもほとんどそのまま使える
2026/5/16
メモ
QEMU上での動作環境作成が大変だった。LLMが無かったら、さらに数週間かかってたかも
Thumb-2 命令セットのまとまった情報無さすぎ
RP2040の浮動小数点演算がソフトウェア処理なことを知らなかったら、softfpとhardfpに違いに気づかなかったかも。危なかった