Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

12.7. MicroC/TCP-IP プロトコルスタックの使用

インテル は、インテル FPGA開発キットにおいて µC/TCP-IP プロトコルスタックの使用例を提供しています。プライマリー・アプリケーション・ファイルの uc_tcp_ip_init.c は、参照用の実装ソースコードで構成されています。このコードは、実際の製品要件を満たすように変更することができます。

uc_tcp_ip_init.c は、次の操作を実行します。

  1. Network_init() 関数を呼び出して、次のことを実行します。
    1. µC/TCP-IP タスクの初期化
    2. TSE mSGDMA ドライバーをシステムに追加・開始
    3. 静的 IP または DHCP サーバーを使用した IP アドレスのコンフィグレーション
  2. network_stop() 関数を使用して、TSE インスタンスなどの特定のインターフェイスを停止します。この関数は、uc_tcp_ip_init.c の最後にあります。

network_init() ネットワーク・スタック初期化実装コード

CPU_BOOLEAN network_init(struct network_conf *conf, NET_IF_NBR *p_if_nbr) { NET_ERR err_net; // µC/TCP-IP generic stack init. err_net = Net_Init( &NetRxTaskCfg, &NetTxDeallocTaskCfg, &NetTmrTaskCfg); if (err_net != NET_ERR_NONE) { logf("Failed to Net_Init(): (%d).\n", err_net); return DEF_FALSE; } // Update TSE sys info struct and MAC address from configuration. NetDev_Cfg_Ether_TSE.BaseAddr = (CPU_ADDR) conf->tse_sys_info; Mem_Copy(NetDev_Cfg_Ether_TSE.HW_AddrStr, conf->mac_addr, sizeof(CPU_CHAR) * NET_IF_802x_ADDR_SIZE_STR); // Add TSE. *p_if_nbr = NetIF_Add( (void *)&NetIF_API_Ether, // const for all eth interfaces (void *)&NetDev_API_TSE_mSGDMA_Intel_HAL, NULL, // (void *)&Net_DrvBSP_Nios_II, (void *)&NetDev_Cfg_Ether_TSE, NULL, // (void *)&NetPhy_API_Generic, NULL, // (void *)&NetPhy_Cfg_Ether_TSE, &err_net); if (err_net != NET_IF_ERR_NONE) { logf("Failed to NetIF_Add(): (%d).\n", err_net); return DEF_FALSE; } // Start TSE. NetIF_Start(*p_if_nbr, &err_net); if (err_net != NET_IF_ERR_NONE){ logf("Failed to NetIF_Start(): (%d).\n", err_net); return DEF_FALSE; } CPU_BOOLEAN ret; if (conf->use_dhcp) { ret = conf_dhcp(*p_if_nbr); } else { ret = conf_static(*p_if_nbr, conf); } return ret; }