S32G RDB3(M7コア)のSJA1110ポート1へのGMAC0 SGMIIリンクの設定方法 S32G399A-RDB3 評価ボードを使用しており、GMAC0 と SJA1110 イーサネット スイッチのポート 1 の間に SGMII リンクを確立したいと考えています。 SDKs で提供される RTD の例 (例: GMAC_Example_0) は、外部 PHY にコネクテッドするために GMAC0 を RGMII モードで構成する方法のみを示していますが、ポート 1 の SGMII 経由でコネクテッドされる SJA1110 スイッチと通信するために GMAC0 を SGMII モードで構成する方法は示されていません。 Cortex-M7 コアをターゲットにし、FreeRTOS + lwip + RTD を使用しています。 GMAC0が外部PHYでRGMIIモードで正常に動作することは既に確認済みであり、また、GMAC0 SGMIIリンクのSJA1110への動作はA53上でも確認済みであるが、我々のターゲットはM7コアである。 ご指導ありがとうございます。 Re: How to configure GMAC0 SGMII link to SJA1110 Port1 on S32G RDB3 (M7 core) ありがとう、この情報は役に立ちます。M7でGMACをSGMIIに設定する方法を理解することができました。 Re: How to configure GMAC0 SGMII link to SJA1110 Port1 on S32G RDB3 (M7 core) こんにちは@Terry_Huang 、
M7 の SGMII で GMAC を構成する例はありませんが、次のリファレンスをCAN。
u-boot ソース コード: u-boot は hwconfig の値に応じて SerDes モジュールを構成します。BSP マニュアルでCAN確認できます (例: BSP44)。
文字列が解析されレジスタが設定されると、次のソース コードをCAN確認できます。
serdes_hwconfig.c
hwconfig_fixups.c
文字列がどのように解析され、構成が行われるかがわかりますが、u-boot にはかなりの数の SW レイヤーがあるため、これはかなり複雑になる可能性があります。
hwconfig を上記のいずれかの値に設定できます。質問に関連する部分は、serdes0 構成と SW の位置です。
hwconfig 変数が設定されたら、ボードをリセットして u-boot で停止し、md コマンドを使用して関連するレジスタを読み取ります。例:
=> setenv hwconfig "serdes0:mode=xpcs0&xpcs1,clock=ext,fmhz=100;xpcs0_0:speed=1G,an=0;xpcs0_1:speed=1G,an=0;serdes1:mode=xpcs0&xpcs1,clock=ext,fmhz=125;xpcs1_1:speed=1G"
=> saveenv
Saving Environment to MMC... Writing to MMC(0)... OK
=> reset
...
=> printenv hwconfig
hwconfig=serdes0:mode=xpcs0&xpcs1,clock=ext,fmhz=100;xpcs0_0:speed=1G,an=0;xpcs0_1:speed=1G,an=0;serdes1:mode=xpcs0&xpcs1,clock=ext,fmhz=125;xpcs1_1:speed=1G
=> md.l 0x4007C000 20
4007c000: 00000000 00000000 000000e7 00000001 ................
4007c010: ffffffff 1fffffff 00007fff 00000000 ................
4007c020: 00000000 00000000 00000000 00000000 ................
4007c030: 00000000 00000000 00000000 00000000 ................
4007c040: 00000000 00000000 00000000 00000000 ................
4007c050: 00000000 00000000 00000000 00000000 ................
4007c060: 00000000 00000000 00000000 00000000 ................
4007c070: 00000000 00000000 00000000 00000000 ................
サンプルでは、hwconfig を設定し、変更を保存し、ボードをリセットして、GMAC の最初のレジスタ (このCASEは 20) を出力しました。xpcs コマンドを使用することもCANます。例:
=> xpcs
xpcs - Utility command for SGMMI control
Usage:
xpcs list
List all registered XPCS modules
xpcs transit <1000M|2500M>
Change serdes mode
xpcs ss <10M|100M|1000M|2500M>
Change speed and serdes mode when required
xpcs an
Auto-negotiation control
xpcs an_auto
Auto-negotiation control with automatic speed change
xpcs lo
PMA loopback enable/disable
xpcs dump
Dump XPCS indirect registers
is obtained using 'xpcs list' command
=> xpcs list
Registered XPCS instances:
| ID | SerDes instance | XPCS |
| 0 | serdes@40480000 | 1 |
| 1 | serdes@40480000 | 0 |
| 2 | serdes@44180000 | 1 |
| 3 | serdes@44180000 | 0 |
これは、S32G3 リファレンスマニュアル [ページ 2759、S32G3 リファレンスマニュアル、Rev. 4、02/2024] に従っています。
ご覧のとおり、モード 1 と 3 は GMAC を使用した SGMII をサポートしています。
各モジュールのレジスタに関する詳細については、 GMACリファレンス マニュアルとSerDesリファレンス マニュアルも参照してください。
S32G3リファレンスマニュアルの関連セクション:
第47章 ギガビットイーサネットメディアアクセスコントローラ(GMAC)
47.1.4SGMIIモードでGMACを実行するための前提条件
2 4.7.2.2.4 イーサネット(GMAC_0)SGMII設定(これはクロッキングに関連します)
この情報の目的は、M7 から GMAC モジュールを構成するためのベースとして使用できるようにすることです。
他にご質問がございましたらお知らせください
記事全体を表示