デバイス・ツリーを読む
にあるどの辺を変えると独自のCortex-R5のメモリマップを与えられるのか。
あまりソースをググったりしてもピンとこなかったが、下記記事
によるとhw-dtbオプションで与えるDTB(Device Tree Blob)はLinuxカーネルブート時に使われるわけではなく、QEMUがモデルを生成するために使われている。
そこで次はbare_metal_r5のデバイスツリーソース(board-versal-ps-vc-p-a2197-00.dts)を読み、メモリマップ関係がどこに書いてありそうか確認してみる。デバイスツリー自体馴染みないので時間がかかりそう。
board-versal-ps-vc-p-a2197-00.dts
このファイルにはI2C関係しかない。I2Cのregプロパティにはアドレスのみでサイズ指定がないようだ。これはI2Cの通信フォーマットで使われるアドレスが定義されていると思われる。
board-versal-ps-vc-p-a2197-00.dts
- board-versal-ps-virt.dts
Versal Virtual PS boardデバイスツリー。Versalにはプログラマブルロジック(PL)とプロセッシングシステム(PS)とがある。PSの方がARMコアが乗ってる方。
このDTSにはおおむね以下のことが定義されてる。
・SPI
・QSPI
・MDIO(Management Data Input/Output? device_type = "ethernet-phy"であることから推測)
・PMC(プラットフォーム管理コントローラー?)
・RP(Remote Port)
・DDRC(DDRメモリコントローラ)
・AMBA
・MEM_REGION
・MEM_SPEC
board-versal-ps-vc-p-a2197-00.dts
- board-versal-ps-virt.dts
-- versal.dtsh
QEMU RAM Settingsの文字があり、MULTIかSINGLEかで何かを変えてる
board-versal-ps-vc-p-a2197-00.dts
- board-versal-ps-virt.dts
-- versal-ps-rpu.dtsi
CR-5のGDBへの表示名やGPIOが定義されてる。AMBAとGICも定義あり。メモリマップは良く分からない。
RPU_CPU_COMMONの中に何か書いてあるかもしれない。
RPU_CPU_COMMON
https://github.com/Xilinx/qemu-devicetrees/blob/master/include/versal/rpu.dtsh
に定義あり。プロパティの意味を要調査