デバイス・ツリーを読む

にあるどの辺を変えると独自のCortex-R5のメモリマップを与えられるのか。

あまりソースをググったりしてもピンとこなかったが、下記記事

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/821428366/QEMU+Options+and+Commands#QEMUOptionsandCommands-dtbvshw-dtb-dtbvs-hw-dtb

によると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

に定義あり。プロパティの意味を要調査


いいなと思ったら応援しよう!