Ethernetのリンク速度を設定したい

弊社TCP/IPプロトコルスタック「μNet3」に関するご質問
返信する
アバター
eForce技術担当
記事: 178
登録日時: 2014年4月24日(木) 14:18

Ethernetのリンク速度を設定したい

投稿記事 by eForce技術担当 » 2020年2月21日(金) 10:47

対象:
μNet3/Compact、μNet3/Standard

質問:
Ethernetのリンク速度をアプリから設定したい

関連トピック:
・Ethernetのリンク状態を参照したい

回答:
Ethernetのリンク速度を変更するにはPHYチップの制御が必要となります。弊社提供ドライバ
ではリンク速度設定は net_dev_ctl()、設定値の参照には net_dev_sts() で行えます。
上記APIの第2パラメータ「CFG_PHY_MODE」を渡すことで設定・参照が可能です。(※)

コード: 全て選択

/*【使用例】*/
    ER ercd;
    UH ret;
    
    /* 通常設定 */
    ercd = net_dev_ctl(1, CFG_PHY_MODE, (VP)PM_AUTO);     /* 自動設定 */
    ercd = net_dev_ctl(1, CFG_PHY_MODE, (VP)PM_10M_HALF); /* 10M 半二重 固定 */

    net_dev_sts(1, CFG_PHY_MODE, (VP)&ret);            /* 設定モード取得 */

/*
  【(第1引数) デバイス番号】
    Ethernetインタフェースの対象となるデバイス番号を指定します。

  【(第2引数) パラメータ】
    CFG_PHY_MODE        PHY動作モードを設定・参照します。(通常版)
    CFG_PHY_MODE_EXT    PHY動作モードを設定・参照します。(拡張版) (※)

  【(第3引数) CFG_PHY_MODE 設定・参照値】
    /* CFG_PHY_MODE 設定・参照値 ... 以下のいずれかを指定 */
    PM_AUTO         自動
    PM_10M_HALF     10M 半二重 固定
    PM_10M_FULL     10M 全二重 固定
    PM_10M_AUTO     10M 全二重/半二重 自動
    PM_100M_HALF    100M 半二重 固定
    PM_100M_FULL    100M 全二重 固定
    PM_100M_AUTO    100M 全二重/半二重 自動
    PM_1000M_HALF   1000M 半二重 固定
    PM_1000M_FULL   1000M 全二重 固定
    PM_1000M_AUTO   1000M 全二重/半二重 自動

    /* CFG_PHY_MODE_EXT 設定・参照値 ... 以下の値を OR演算 して指定 */
    PME_SUP_ANE     オートネゴシエーション有効
    PME_SUP_FD      全二重有効
    PME_SUP_10M     10M 速度有効
    PME_SUP_100M    10M速度有効
    PME_SUP_1000M   100M速度有効

    /* CFG_PHY_MODE, CFG_PHY_MODE_EXT 参照値 */
    PME_CFG_NSET    PHY動作モードの設定値がまだ適用されていない状態。

  【戻り値】
    E_OK    正常終了。
    E_PAR   サポートしていない設定値を設定・参照した。
            CFG_PHY_MODE_EXT パラメータで指定した場合、組み合わせにより
            CFG_PHY_MODE_ パラメータでの参照が失敗する場合があります。

  【制限事項】
    「Ethernet動作中」のPHY動作モード変更はPHYチップにより通信が不安定・停止
    となる場合があるため、Ethernetドライバ、μNet3停止時にご利用下さい。
*/
※提供時期や一部CPU用のドライバでは未対応です。

返信する