RP2350
#RaspberryPiPico #Raspberry_Pi_Pico2
Raspberry Pi PicoのRP2050は「RAMが264KB」「FPUなし」のため、東大CPU実験のレイトレを動かすのは無理そうだったんだけど、Raspberry Pi Pico 2のRP2350は「8MBのPSRAM対応(搭載している機種でのみ)」「FPUあり」のため、このスペックならレイトレを動かせそう。いろいろ調査してみる。
データシート
RP2350 Datasheet
https://pip-assets.raspberrypi.com/categories/1214-rp2350/documents/RP-008373-DS-2-rp2350-datasheet.pdf?disposition=inline
レジスタ
汎用レジスタ
R0 〜 R12
R0–R3:引数・戻り値(関数呼び出しで使用)
R4–R11:汎用(callee-saved)
push {r4, r5, r6, lr}
pop {r4, r5, r6, lr}
fp = r11
lr = r14
R12:一時用途(scratch register)
スタックポインタ
R13(SP)
リンクレジスタ
R14(LR)
関数戻りアドレスを保持
例外復帰情報も含む
プログラムカウンタ
R15(PC)
浮動小数点レジスタ
(本当?)
S0 〜 S31(単精度)
D0 〜 D15(倍精度として扱う)
FPSCR(ステータス)
参考
RP2350データシート
https://pip-assets.raspberrypi.com/categories/1214-rp2350/documents/RP-008373-DS-2-rp2350-datasheet.pdf?disposition=inline
Adafruit Metro RP2350
RP2350 + PSRAM(8MB)を搭載したボード。このスペックならCPU実験のレイトレを動かせるかも。
Adafruit Metro RP2350
Adafruit Metro RP2350でLチカ
Adafruit Metro RP2350でシリアル通信
アセンブリプログラミング
Cortex-M33 on QEMUでHelloWorld
Cortex-M33 on QEMUでアセンブリプログラミング
CPU実験のレイトレ
Raspberry Pi Pico2でCPU実験のレイトレを動かしたい
メモ
Cortex-M33
qemu-arm-xpack
https://github.com/xpack-dev-tools/qemu-arm-xpack
Adafruit Metro RP2350 with PSRAM
https://www.adafruit.com/product/6267
https://www.switch-science.com/products/10384
現在Adafruitから出荷されているAdafruit Metro RP2350はRP2350のA2バージョンを使用しています。I/Oのプルダウンが必要な場合はRP2350データシートのErrata RP2350-E9をご確認頂き、8.2 kΩ以下(Adafruit指定値)の抵抗を使用されますよう御注意下さい。
https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf#page=1342
QEMU M-profile サポート
https://www.qemu.org/docs/master/system/arm/emulation.html#m-profile-cpu-architecture-support
MinCamlでRP2350のアセンブリコードを出力したい