RTD の例「Eth_InternalLoopback_S32K344」で、GMAC_Ip_GetTransmitStatus 関数 (Eth_43_GMAC_TxConfirmation(EthConf_EthCtrlConfig_EthCtrlConfig_0) によって呼び出される) が予期せず GMAC_STATUS_BUSY を返し続ける問題をデバッグしています。コードを分析した結果、ビジー状態の原因となっている特定のチェックを特定しました。
if (((Bd->Des3 & GMAC_TDES3_LD_MASK) != 0U) && ((Bd->Des3 & GMAC_TDES3_OWN_MASK) == 0U))
{
// 成功CASE - 記述子が所有されておらず、最後の記述子
}
else
{
Status = GMAC_STATUS_BUSY; // このパスは実行中です
}
こんにちは@JhonYF 、
ご辛抱いただきありがとうございます。私は次の設定を使用して自分の側で動作を確認しました。
サンプル プロジェクトに次のようないくつかの調整を加えました。
ただし、この問題を解決した重要な変更は、emac_mii_rmii_tx_clk ピンの構成でした。内部ループバック モードの場合でも、EMAC モジュールには有効な外部 RMII クロックが必要です。このクロックがない場合、初期化は DMA タイムアウトで失敗し、Eth_43_GMAC_GetPhysAddr() は FF:FF:FF:FF:FF:FF を返します。
SO、次の点を確認してください。
よろしくお願いいたします。
パベル
こんにちは@JhonYF 、
設定と観察結果を共有していただきありがとうございます。あなたの説明に基づくと、あなたの実施形態は期待どおりに動作するはずです。確認のため、ボード上の動作をもう一度確認します。
近々休暇を取る予定です。SO、返信が少し遅れる場合がございますのでご了承ください。ご理解とご協力をよろしくお願いいたします。
よろしくお願いいたします。
パベル
こんにちは@PavelL 、
詳細な更新情報をありがとうございます。問題をさらに診断するための質問を以下にまとめます。
私はカスタム ボード(公式の NXP 評価ボードではありません)でRTD 3.00 を使用しています。
すべてのRMII関連ピン(RMII_LINK_STA、TX/RX、CLKなどを含む)がハードウェアで正しく設定されている
MAC クロックは、GMAC のモジュール クロック構成で参照されているFIRC_CLK (48 MHz)から供給されます。
注: MDIO 通信が正常に機能していない ことがわかりました 。これはループバック テストにとって重要ですか?
よろしくお願いいたします。
こんにちは@JhonYF 、
詳細を共有していただきありがとうございます。問題をより良く理解するために、以下の点を明確にしていただけますか。
内部ループバックの場合でも、特にクロック信号については正しいピン構成が必要であることに注意してください。関連するすべてのシステム クロックが適切に設定されていることを確認することが重要です。残念ながら、一部の RTD の例は、S32K3 リファレンス マニュアルに記載されているクロック構成の推奨事項に完全に従っていないことがわかりました。
よろしくお願いいたします。
パベル