2198331_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2198331_ja-JP

2198331_ja-JP

IMX95EvkをPCIeエンドポイントとして設定し、PCIeエンドポイントテストフレームワークを使用してテストする方法

このブログでは、iMX95EVKをPCIeエンドポイントとして構成し、iMX8MMをRCとして使用してテストする方法について解説します。


ハードウェア・コンポーネント

iMX95EVK

iMX8MM
PCIe M.2 Key Eブリッジ
イーサネット接続

 

 

ソフトウェア・コンポーネント

Linux Factory 6.12.20 BSP

linux-imxソースコード(https://github.com/nxp-imx/linux-imx/tree/lf-6.12.20-2.0.0


システム・セットアップ

1.jpg

ステップ1:iMX95EVKのeMMC/SDカードに6.12.20 BSPを書き込み、それで起動します。

ステップ2:GitHubからlinux-imx 6.12.20のソースコードを取得します。

GitHub - nxp-imx/linux-imx at lf-6.12.20-2.0.0

ステップ3:次のdiffに従って、arch/arm64/boot/dts/freescale/imx95-19x19-evk-pcie1-ep.dtsoに以下の変更を加えます。

 

diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk-pcie1-ep.dtso b/arch/arm64/boot/dts/freescale/imx95-19x19-evk-pcie1-ep.dtso

インデックス a8e3bbc53894..d082688fc1c2 100644

--- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk-pcie1-ep.dtso

+++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk-pcie1-ep.dtso

@@ -11,12 +11,12 @@ &smmu {

 };



-&pcie1 {

+&pcie0 {

        status = "無効";

 };


-&pcie1_ep {

+&pcie0_ep {

        pinctrl-names = "default";

- pinctrl-0 = <&pinctrl_pcie1>;

+ pinctrl-0 = <&pinctrl_pcie0>;

status = "オーケー";

 };



 

ご覧のとおり、ここではiMX95EVKのM.2 PCIe 0で「エンドポイント」モードを有効にしようとしています。デフォルトのdtbではPCIe 1に対して有効化されています。カーネルをビルドすると、dtsoの変更内容からこのdtbが生成されます。


ステップ4:dtbをボードにSCPで転送し、混乱を避けるために「imx95-19x19-evk-pcie0-ep.dtb」に名前を変更します。

ステップ5:U-Bootで「fdtfile」変数を変更し、このdtbを使ってボードを起動します。

このdtbでカーネルが起動すると、コンソールに次のようなPCIe dmesgログが表示され、変更が反映されたかを確認できます。


root@imx95evk:~# dmesg | grep pcie-ep

[    3.142123] imx6q-pcie 4c300000.pcie-ep: iATU: アンロール T、8 ob、8 ib、アライン 4K、リミット 1024G

[    3.151767] imx6q-pcie 4c300000.pcie-ep: eDMA: unroll T, 4 wr, 4 rd

root@imx95evk:~#


0x4c300000は、pcie0コントローラのアドレスです



ステップ6:このスクリプト「conf_pcie0_ep」をiMX95EVK上で実行します

2.png

ステップ7:このdtb(imx8mm-evk.dtb)を使用してiMX8MMボードを起動します。

ステップ8:iMX8MM上で「lspci」を実行すると、以下の出力が表示されます。

3.png

これがiMX8MM RCのlspci出力に表示されているiMX95EVKエンドポイントです。

 

アドレス空間の変換ウィンドウは、以下に記載されている情報を使用して設定されます。

arch/arm64/boot/dts/freescale/imx8mm.dtsi

gaurav_sharma_0-1762327307740.png

PCIeノードの「ranges」プロパティとして記載されているアドレス変換ウィンドウの情報を理解したい場合は、「Demystifying the PCIe and CPU address space translation in Linux - NXP Community」の記事をご覧ください。ここでは、裏側で何が行われているのかが詳しく説明されています。

 




 

 

IMX95EVK
Tags (1)
No ratings
Version history
Last update:
‎11-20-2025 05:57 AM
Updated by: