2369273_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2369273_ja-JP

2369273_ja-JP

Qemu上でi.MX8MPEVKのCortex-M7非対称マルチプロセッシングブートサポートを有効にする



今回の短いブログ記事では、Qemuにおいて、i.MX8MP SoCデバイスモデルのCortex-M7コア向けに非対称マルチプロセッシング(AMP)ブートサポートを有効にする方法について説明します。M7ファームウェアは、リモートプロシージャフレームワークを介して、Cortex-A53コア上で動作するLinuxからロードおよび起動できます。


非対称マルチプロセッシング(AMP)ブート


AMPとは何か疑問に思っている方へ:

これは、異なるプロセッサコアがそれぞれ異なるオペレーティングシステムまたはアプリケーションを独立して実行するブート構成を指します。


i.MX8M Plusには以下のものが含まれています。

      • Cortex-A53コア×4(Linux/Androidを実行するアプリケーションプロセッサ)
      • Cortex-M7コア×1(RTOS/ベアメタル向けリアルタイムプロセッサ)

AMPモードでは、起動シーケンスは通常次のように動作します。

      1. プライマリブート:Cortex-A53コアが最初に起動します(U-Bootが実行され、その後Linuxが起動します)。
      2. セカンダリブート:Cortex-M7はLinuxまたはU-Bootによってロードされ、起動されます。

iMX8MP上のCortex-M7には2つの制御パスがあります。

  1. ファームウェアによる制御(SMC/ATF経由)
  2. MMIO駆動パス(SRCおよびGPRアクセス経由)

Linux の「fsl,imx8mp-cm7-mmio」は、MMIO パスを選択し、qemu で保証されていないファームウェア インターフェースへの依存を回避するために特別に存在します。

このモードでは、起動/停止制御にSRC sysconブロックとIOMUXC GPRを使用します。

リソーステーブル、vrings のメモリ領域は「 imx8mp-evk-rpmsg.dts」で指定する必要があります。

必要な変更を行うには、こちらのアプリケーションノートを参照してください - https://www.nxp.com/docs/en/application-note/AN5317.pdf


Linuxがremoteproc経由でCM7を起動する場合、一般的な流れは次のとおりです。

  1. imx8mp-evk-rpmsg.dtbを使用してLinuxが起動しました。
  2. LinuxはCM7 ELFを予約済みのDDR領域にロードする
  3. LinuxはCM7の起動/停止制御(SRC/GPR CPUWAITなど)を切り替えます。
  4. CM7はDDRエントリから実行を開始します

添付のパッチシリーズでは、AMPに必要な以下のペリフェラルモデルを紹介します。

  - GPC(汎用電源コントローラ)

- GPR(汎用レジスタ)

- SRC(システムリセットコントローラー)

- MU(メッセージングユニット)

- CCMをM7クロック出力で拡張し、i.MX8MP SoCに接続します。

- i.MX8MP EVK機能テストでCortex-M7ブートを有効にする



//パッチの適用方法:-

1.qemuリポジトリのマスターブランチを取得し、このブログに添付されているパッチを適用してください。

2. パッチ適用後にqemuをビルドします。ビルド手順はリポジトリのREADMEファイルに記載されています。

https://github.com/qemu/QEMU


// Cortex-A53上のLinuxからCortex-M7のAMPブートをテストする

前提条件:-

a. iMX8QXPのMCUXpresso SDKからベアメタルM7 elfを構築します。必ずこのビルドスクリプト( build_ddr_release.sh )を使用してください。
デモンストレーションには、この例を使用します - boards/evkmimx8mp/driver_examples/uart/polling

あなたはエルフを手に入れるでしょう。

b. imx8mp-evk-rpmsg.dtb は AN5317 の助けを借りて作成されました。

  1. iMX8MPカーネルを~/qemu-emulation/iMX8MP/にコピーします。
  2. imx8mp-evk-rpmsg.dtb を同じ場所にコピーしてください。
  3. i.MXプラットフォーム向けBuildroot 2024.02リリース からimx8mpの.imgをダウンロードしてください | Ezurio テスト:- qemuのビルドフォルダから以下のコマンドを実行してください。./qemu-system-aarch64





    -M imx8mp-evk -smp 4,maxcpus=5 -global fsl-imx8mp.enable-cm7=on -m 3G -display none -serial null -serial stdio -serial null -serial pty:/tmp/imx8mp-uart -kernel ~/qemu-emulation/iMX8MP/Image -dtb ~/qemu-emulation/iMX8MP/imx8mp-evk-rpmsg.dtb -append "root=/dev/mmcblk2p1" -drive file=~/qemu-emulation/iMX8MP/20240522-br2024.02-nitrogen8mp_qt5_gst1.img,if=sd,bus=2,format=raw,id=mmcblk2 -net nic,model=imx.enet -net user,hostfwd=tcp::2222-:22

    1.png
 

2.png



 

 

次に、別のCLIタブで、M7コンソールを開くために「screen /tmp/imx8mp-uart 115200」を実行します。空の画面が開きます。

Linuxゲストが実行されているコンソールで、以下を実行します。

3.png

 

これを実行するとすぐに、別のタブでM7バイナリの実行が開始されたことが確認できます。


4.png

 



この短いブログ記事では、非対称マルチプロセッシング(AMP)ブートサポートを有効化します。

Qemuにおけるi.MX8MP SoCデバイスモデルのCortex-M7コア。M7ファームウェアをロードできます

そして、リモートプロシージャフレームワークを介して、Cortex-A53コア上で動作するLinuxから開始されました。

IMX8MPLUSEVK
标记 (1)
无评分
版本历史
最后更新:
‎06-02-2026 03:11 PM
更新人: