MinCamlでRP2350のアセンブリコードを出力したい
#RaspberryPiPico #Raspberry_Pi_Pico2 #RP2350 #低レイヤ
MinCamlからRP2350(ラズピコ2に搭載されているチップ)のアセンブリコードを出力したい
CPUアーキテクチャ
チップ
RP2350
CPUコア
Cortex-M33
CPUアーキテクチャ
Armv8-Mアーキテクチャ
開発環境
開発環境の準備はこちらを参照
Raspberry Pi Picoをピコピコさせた
以下の手順で最新版に更新
pico-sdkを最新版に更新
参考
Appendix C: Manual toolchain setup(Getting started with Raspberry Pi Pico-series)
https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008276-DS-1-getting-started-with-pico.pdf?disposition=inline
Raspberry Pi Pico 2 C/C++ SDK
https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf
QEMUの対応状況を確認
RP2350の「cortex-m33」はサポートしているみたい。
code:sh
$ qemu-system-arm -cpu help
Available CPUs:
...
cortex-m0
cortex-m3
cortex-m33
cortex-m4
cortex-m55
cortex-m7
cortex-r5
cortex-r52
cortex-r5f
...
対応ボードにラズピコ系は無さげ。virt で良いかな?
code:sh
$ qemu-system-arm -machine help
Supported machines are:
...
raspi0 Raspberry Pi Zero (revision 1.2)
raspi1ap Raspberry Pi A+ (revision 1.1)
raspi2b Raspberry Pi 2B (revision 1.1)
...
virt-8.0 QEMU 8.0 ARM Virtual Machine
virt-8.1 QEMU 8.1 ARM Virtual Machine
virt QEMU 8.2 ARM Virtual Machine (alias of virt-8.2)
virt-8.2 QEMU 8.2 ARM Virtual Machine
...
シミュレータの動かし方
MinCamlが出力したアセンブリコードをQEMU上で実行したい。
以下が参考になりそう。
QEMUでベアメタルプログラミング
QEMUでRISC-Vベアメタルプログラミング(ヨロシク編)
QEMUでRISC-Vベアメタルプログラミング(はじめてのC編)
QEMUでRISC-Vベアメタルプログラミング(シリアル通信編)
MinCamlで出力したx86のアセンブリコードを実行するまでの手順
libmincaml.S と stub.c 以下が参考になるかも
(1) PowerPC のコード
(2) https://github.com/sgotand/is17er-cpu-1
作業ログ
pico-sdkを最新版に更新
code:sh
git clone https://github.com/esumii/min-caml.git min-caml-pico2
参考
ラズピコ2本家
https://www.raspberrypi.com/products/raspberry-pi-pico-2/
Raspberry Pi Pico 2 C/C++ SDK
https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf
Raspberry Pi Pico 2 series product brief
https://pip.raspberrypi.com/documents/RP-008302-DS-raspberry-pi-pico-2pdf
stub.cをラズピコで動かす