i.MX 95:M7とA55間の動的TRDC/システムマネージャーリソース割り当ておよびGPIO共有こんにちは、チームのみなさん。
私たちは i.MX 95プラットフォームを開発しており、まずM7コアからMIPI DSIペリフェラルを使用し、その後実行時にリソースをA55コアに引き渡したいと考えています。
私たちの理解では、周辺リソースとその所有権は 、 System Managerツール を通じて生成・設定 された mx95evk.cfg ファイル内の各論理マシン/プロセッサごとに最初に定義されています。
以下の点について明確にしておきたいと思います。
- 動的リソースハンドオーバー:
実行時にM7からA55へMIPI DSIペリフェラルリソースを動的に移すことは可能でしょうか?例えば、M7は最初にMIPI DSIを所有・使用し、その後リリースし、その後A55が所有権を取得し同じペリフェラルを使用します。 - 動的リソース配分:
ランタイムハンドオーバーがサポートされている場合、リソースの所有権やアクセス権限を動的に変更するための推奨されるメカニズムやAPIは何ですか?これはSystem Manager、TRDC、または他の仕組みで処理されるのでしょうか? - GPIO共有:
同じGPIOポート/リソースをM7とA55の両方が同時にアクセスすることは可能でしょうか?もし可能なら、GPIOリソースを安全に共有するためにTRDCの設定要件やソフトウェア同期メカニズムを実装する必要がありますか?
i.MX 95におけるM7とA55間の動的ペリフェラルハンドオーバーやリソース共有の実装方法について、推奨される方法についてのご指針をいただけるとありがたいです。
Re: i.MX 95: Dynamic TRDC/System Manager Resource Allocation and GPIO Sharing Between M7 and A55こんにちは、
i.MX 95では、MIPI DSIリソースは当初M7で使用され、後にA55に引き継がれます。リソースアクセスと所有権はSystem Manager/TRDCの設定で設定し、実際のランタイムハンドオーバーはソフトウェアで処理すべきです。TRDCはどの論理マシン/ドメインが周辺機器にアクセスできるかを制御しますが、M7とA55間の同期は管理しません。したがって、M7はまずすべてのDSI操作を完了し、ペリフェラルの使用を停止し、A55が制御を取る前にMU/IPCなどのコア間機構を通じてA55に通知すべきです。同様に、GPIOリソースは適切なTRDC構成を通じてM7とA55の両方にアクセス可能ですが、同時アクセスはソフトウェアによる同期が必要です。DSIのユースケースでは、同時に1つのコアだけがペリフェラルをアクティブに使い、ハンドオーバーはMU/IPCで行うのが推奨されます。
Re: i.MX 95: Dynamic TRDC/System Manager Resource Allocation and GPIO Sharing Between M7 and A55AEチームと話し合った結果、以下のアップデート内容をご参照ください。
i.MX 95では、リソース所有権とTRDC権限は、SM構成ファイル(mx95evk.cfg)でビルド時に静的に定義されます。→はconfig_.h)を生成し、MIXが起動するとシステムマネージャー(SM)によって適用されます。*実行時に周辺機器の所有権を論理マシン(LM)から別の論理マシンへ移すSCMI/SMメッセージはありません。
しかし、SMのドキュメントでは「ディスプレイを別のLMへ引き継ぐこと」がSM_SCMI_PERM_EXCLUSIVEモデルの正確な動機として挙げられています。したがって、引き継ぎは可能ですが、所有権を「移動」するだけでは不可能です。
Q1 & Q2 — MIPI DSI M7 → A55 ハンドオーバー:やり方
LMM(論理マシン管理)SCMIプロトコルは、LMの起動・リセット・シャットダウン・サスペンド・ウェイクのみを行い、RESOURCE_ASSIGNやメッセージOWNERSHIP_TRANSFERはありません。代わりに、時間分割ハンドオフを使用してください。
- mx95evk.cfgで両方のLMに最初にアクセス権を付与してください。デフォルトでは、EVK の設定により、MIPI_DSI、MIPI_PHY、DC_DISPENG、BLK_CTRL_DISPLAYMIX、ディスプレイのクロック/電源 (PD_DISPLAY、CLK_DISP*)が AP (LM2) の所有者としてのみ割り当てられます。M7 を優先的に使用するには、これらを M7 LM (LM1) にも追加する必要があります。
- SM管理リソース(クロック、電源、リセット)をSM_SCMI_PERM_EXCLUSIVE(api=all)としてマークし、2つのLMからのリクエストが静かに集約・上書きされないようにします。
- ハンドオーバー時にM7はDSI/DCIFを静止し、アプリケーションレベルのIPC(MUメールボックスまたはSCMI通知)を通じてA55に信号を送ります。A55(Linux/DRM DSI+DPUスタック)は同じIPを表示します。
ハンドオフシーケンスはお客様のソフトウェア責任(時間的区分)です。SMは、両方のLMが事前にアクセス許可されているため、HWがどちら側からも運転可能であることを保証しています。TRDCの所有権は実行時に書き換えられず、SMプログラムのみがTRDCを実行し、MIX電源投入時の静的設定からのみ可能です。
これを制御するTRDC設定(.cfgファイルに記載):
- MDAC_am=... — マスタードメイン割り当て(バス・マスタをドメインIDにマッピング)
- MBC_am=s.b— メモリブロックチェック — ここでペリフェラルアクセスがゲートされます
- MRC_am=… — メモリ領域チェック(DDRなどの大規模メモリ領域)
- 各LMはDIDにバインドされます。例:SMは2、AP(LM2)は3、M7(LM1)は4でした。
Q3 — M7とA55の間でGPIOを共有
はい、TRDCはM7ドメインとA55ドメインの両方に同じGPIOインスタンスへの同時アクセスを許可できます(両方のDIDでMBCブロックを有効にすること)。しかし、重要な注意点と、支持される2つのパターンがあります。
- 注意点:i.MX 95 GPIOにはハードウェア仲裁機能がなく、PDR/DR/GDIRレジスタは物理的に共有されるため、両コアレースから非調整の読み書き・修正・書き込みが可能です。
- パターンA(分離ピン+ソフトウェア同期):慣例に従って各コアに特定のピンを割り当てます(設定では既にLMごとにピンが分割されています)。データ/方向レジスタバンクは依然として共有されているため、ハードウェアセマフォ/MUを使用して同時RMWを保護するか、コアが同じレジスタバンクに同時にアクセスしないようにしてください。
- パターンB(SM仲裁、真に共有されたインスタンスに推奨): SMが所有し、文書化された役割は 「共有アクセスの仲裁 」とされる常時接続 GPIO1 を経由します。IOMUXC/IOMUX_GPRも同様にSMによって調停されます。Pinmux/daisyは、エージェントごとの権限を持つSCMIピン制御プロトコルを介して設定されます。GPIOデータ操作は直接MMIOで行われます。
Re: i.MX 95: Dynamic TRDC/System Manager Resource Allocation and GPIO Sharing Between M7 and A55チームの皆さん、こんにちは。
私たちは i.MX 95の19x19 EVK を使っており M7とA55/Linux 間のLVDSディスプレイハンドオーバーを以下のアーキテクチャで実装しようとしています。
- M7: 当初はLVDSディスプレイを所有し、制御する。
- A55/Linux: その後、Linux起動後にディスプレイの制御を奪います。
現在の実装
開発の初期段階として、LVDSディスプレイをM7によって初期化および制御するように設定しました。M7はディスプレイの初期化に成功し、フレームバッファを青色で埋め尽くし、それがLVDSパネルに正しく表示されます。
以下のリソースをデフォルトのA55所有権から M7に変更しつつ、A55へのアクセスは提供しました。
- DC
- DC0
- DC1
- DC_CMDSEQ
- DC_DISPENG
- DC_DISPENG_INT
- DC_FL0
- DC_FL1
- DC_INT_CTL
- DC_PIXENGINE
- DC_XPC
- DC_YUV0
- DC_YUV1
- DC_YUV2
- DC_YUV3
- BLK_CTRL_DISPLAYMIX
- LVDS
- MIPI_PHY
- LDB_PLL
- CLOCK_DISP1PIX
- ビデオPLL1
- PIN_I2C2_SCL
- PIN_I2C2_SDA
- LPI2C2
観察された行動
現在の動作は以下のとおりです。
- M7は起動し、ディスプレイの初期化に成功した。
- 青色で塗りつぶされたフレームバッファは、LVDSパネル上に正しく表示されます。
- M7の動作中は、ディスプレイは表示されたままになります。
- その後、A55/Linuxの起動プロセスが始まります。
- Linuxカーネルが起動すると、ディスプレイが真っ白になります。
- 次のデバイスツリーを使用する場合:fdtファイル imx95-19x19-evk-it6263-lvds1.dtbLinuxはカーネル起動時に常に進行が止まります。
カーネルパニックやコンソール上の明確なエラーメッセージは確認されませんでした。起動プロセスが進行しなくなる。
資源所有権調査
私たちの理解によれば、リソース所有権は System Managerの設定 を通じて静的に設定されており、SCMIメッセージを通じて論理マシン間で所有権を動的に移譲することはできません。
そこで、表示資源をM7とA55の両方に割り当てられるかどうかを調査しました。
しかし、重要なDCリソースの中には、二重所有を支持していないものもあります。特に以下の通りです:
- DC
- DC_XPC
- DC_YUV0
- DC_YUV1
- DC_YUV2
- DC_YUV3
- DC_FL0
- DC_FL1
- DC_2DBLIT
これにより、LinuxがDRM/DPUやIT6263/LVDSの初期化時にM7専用の表示リソースにアクセスしようとしている可能性が示唆されます。
質問
以下の点を明確にしていただけますか?
1. DC 、 DC_XPC 、 DC_YUV *、 DC_FL* 、または DC_2DBLIT などのリソース がM7独占的に所有されている場合 、Linuxがハングすることは予想されます か?
2. Linuxの起動時およびDRM/DPU、IT6263/LVDSの初期化時にA55/Linuxがアクセスするディスプレイリソースは?
特に、以下の人々が正確にどのようなリソースにアクセスしているのかを理解したいと思います:
- LinuxのDRM/DPU
- ディスプレイコントローラ(DC)
- IT6263ドライバ
- LVDS/LDBドライバ
- ディスプレイクロック/PLL構成
3. 以下のシーケンスを可能にするサポートされたSystem マネージャのリソース所有設定はありますか?
- M7はLVDSディスプレイを初期化し、駆動します。
- A55/Linuxは正常に起動します。
- その後、A55/Linuxがディスプレイの制御を引き継ぎます。
- 両方の論理マシンはハンドオーバーに必要なリソースにアクセスできます。
4. DアドレスリソースがM7とA55間で共有できない場合、M7のディスプレイとA55/Linuxの共存またはディスプレイハンドオーバーの推奨アーキテクチャは何でしょうか?
5. A55/Linuxは、起動初期段階でディスプレイを積極的に駆動することを意図していなくても、DCリソース階層全体の所有権を必要とするのでしょうか?
6. このユースケースで、以下の部分で追加の構成変更が必要か?
- System マネージャリソース構成
- TRDCの権限
- SCMI構成
- Linuxデバイスツリー
- ディスプレイ/LVDS構成
7. Linuxのブートハングは、特にIT6263/LVDSディスプレイパスの初期化時に、A55/LinuxがM7が所有するディスプレイリソースにアクセスしようとした際に起こる可能性はありますか?
現段階の主な目的は、 早期起動時やDRM/DPU、IT6263/LVDS初期化時にLinuxがアクセスする正確な表示リソース を特定し、それらのリソースがM7の所有権と共存できるかどうかを判断することです。
参照のために System Managerの設定ファイル(.cfg)とLinuxのブートログを添付しています 。
サポートされているリソース所有権構成、表示リソースの依存関係、または実装のための推奨アーキテクチャに関するガイダンス M7/A55 LVDSディスプレイの引き継ぎ 大変ありがたく思います。
よろしくお願いします。
Re: i.MX 95: Dynamic TRDC/System Manager Resource Allocation and GPIO Sharing Between M7 and A55この問題を解決するためのAN15131があり、このANにはソースコードも添付されています。
ただし、このANのステータスは「ウェブ出版保留中」で、nxp.com ではリリースされていません。
数日お待ちください。