NXPサポートチーム様
XRDC2 を使用して、特定のメモリ アドレスへの書き込みを許可または禁止する eDMA メモリ間転送を行っています。
問題は、アクセス ポリシーを正しく機能させることができないことです。
eDMA バス・マスタにドメイン ID を割り当てる方法は次のとおりです。
xrdc2_master_domain_assignment_t 割り当て;
XRDC2_GetDefaultMasterDomainAssignment(&割り当て);
/* EDMAへの権限の定義 */
assignment.lock = false;
割り当て権限属性= kXRDC2_ForcePrivilege;
assignment.secureAttr = kXRDC2_ForceNonSecure;
割り当て.ドメインID = 3;
XRDC2_SetMasterDomainAssignment(DEMO_XRDC2、kXRDC2_Master_M7_EDMA、0、&assignment);
XRDC2_SetMasterDomainAssignment(DEMO_XRDC2、kXRDC2_Master_M4_EDMA、0、&assignment);
XRDC で管理したいメモリにアクセス権を割り当てる方法は次のとおりです。
xrdc2_mem_access_config_t memAccessConfig;
XRDC2_GetMemAccessDefaultConfig(&memAccessConfig);
memAccessConfig.startAddr = DEMO_XRDC2_MEM_START_ADDR;
memAccessConfig.endAddr = DEMO_XRDC2_MEM_END_ADDR;
memAccessConfig.ポリシー[3]= kXRDC2_アクセスポリシーAlt6;
しかし、この構成では EDMA 転送がブロックされます。通常、転送は、eDMA が NonSecurePriv 属性を持つドメイン ID 3 に割り当てられ、XRDC2 で管理するメモリに対して kXRDC2_AccessPolicyAlt6 ポリシー (NonSecurePriv 転送に読み取りおよび書き込み権限を与える) を使用しているため、実行されるはずです。
eDMA をドメイン ID 0 (デフォルト) に割り当てる場合と、kXRDC2_AccessPolicyAll および kXRDC2_AccessPolicyNone アクセス ポリシーを使用する場合にのみ、eDMA 転送をブロックまたは許可できます。ドメイン ID 0 を使用しているときに、他のアクセス ポリシーが意図したとおりに機能しない理由が実際にはわかりません。たとえば、kXRDC2_AccessPolicyAlt3 を使用すると転送は行われますが、行われるべきではありません。
eDMA バス・マスタをドメインに正しく割り当てていないように感じます。そのため、eDMA 転送の動作は期待どおりに機能しません。
CASEもっと詳しい情報やコードの一部が必要な場合は、お気軽にご連絡ください!ありがとうございます!
こんにちは@mneroda 、
M7 DMAの一致はMATCH[14:0] = {CHANNEL_ID[4:0]、HMASTER[3:0]、XID[5:0]}です。XID部分をマスクし、アプリケーションに応じてCHANNEL_IDとHMASTERを設定できます。詳細は下記をご参照ください。
CHANNEL_ID: EDMAからのチャネルID。DMAチャネルインデックスを示す。
• HMASTER: EDMAからのマスターID。
アクティブなDMAチャネルをプログラムした
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
ご回答ありがとうございます。
はい、あなたのように割り当てを設定し、希望どおりに XRDC による eDMA 転送をブロックすることができました。その割り当てをどのように行っているかを示す別の投稿をしました: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/IMX-RT1170-EVKB-How-to-configure-XRDC2-domain-as... 。
ただし、MASK フィールドと MATCH フィールドを微調整できるかどうかを知りたいです。示されているようにフィールドを設定すると、すべての eDMA 転送に対してヒットが生成されるように見えるためです (DMA0 転送のみをブロックしたい)。私が共有した前のリンクは、このトピックに関する投稿です。
すてきな一日を、
ミカエル
こんにちは@mneroda 、
課題も以下のように設定しましたか?ご説明をよろしくお願いいたします。
assignment.mask = 0xFFFFFFFFUL;
assignment.match = 0UL;
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------