Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

こんにちは

私は、Lwipを使用してUDPでイーサネットを実装する必要がある会社のプロジェクトに取り組んでいます。私はこの特定の主題に関する例がないことに気づきました。TCPエコーの例しか見つかりませんでした。それにもかかわらず、私はUDPサーバーを実装するための独自のコードを書こうとしています(以下に示すコード)。次に、関数(udpServer_Init)をmain_cpu0プログラムに実装 します 。プログラムを実行しようとすると、マイコンにpingを実行できますが、Putty端子経由で接続しようとすると、「接続が拒否されました」と表示されます。lwipopts.hにいくつかの設定が欠けているのか それとも他のものを見落としているのか疑問に思っています。どなたかAurixマイクロコントローラのUDPの例を教えていただければ幸いです。また、添付ファイルには重要なプログラムファイルを含めています。

void udp_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, struct ip_addr_t *addr, u16_t port)

{

/* リモートクライアントへの接続 */

udp_connect(upcb, addr, port);

udp_send(upcb, p);

pbuf_free(p);

udp_remove(upcb);

}

 

 

ボイドudpServer_Init(ボイド)

{

構造体 udp_pcb *upcb;

 

/* 1.新しいUDP制御ブロックを作成 */

upcb = udp_new();

udp_bind(upcb、IP_ADDR_ANY、8);

udp_recv(upcb, udp_receive_callback, NULL);

}

 

lwipopts.h:

 

#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__

/*********************************************************************************************************************/
/*------------------------------------------------------マクロ-------------------------------------------------------*/
/*********************************************************************************************************************/
#define LWIP_UDP 1
#define MEMP_NUM_UDP_PCB 4
#define NO_SYS 1 /* オペレーティングシステムなしで LwIP を使用 (スレッドなし、セマフォなしなど) */
#define LWIP_NETIF_HOSTNAME 0 /* DHCPでホスト名オプションを有効にする */

#define BOARDNAME "AURIXLK2TC375TP" /* ボード名、ホスト名としても使用 */

#define MEM_ALIGNMENT 4 /* メモリアライメントを 4 バイトに設定 (32 ビットマシン) */
#define MEM_SIZE (25 * 1024) /* ヒープのサイズ */
#define LWIP_DHCP 0 /* DHCPプロトコルを有効にする */
#define LWIP_NETCONN 0 /* Netconn API の無効化 */
#define LWIP_SOCKET 0 /* ソケット API を無効にする */
#define SYS_LIGHTWEIGHT_PROT 0 /* タスク間保護の無効化 */


#define ETH_PAD_SIZE 2 /* ペイロードのアライメントを確実にするために、イーサネットヘッダーの前に 2 バイトを追加 */

#define __LWIP_DEBUG__ /* UARTインターフェースによるデバッグを有効にする */

#define LWIP_NETIF_EXT_STATUS_CALLBACK 1 /* netif の拡張コールバック関数を有効にする */

#ifdef __LWIP_DEBUG__
#define LWIP_DEBUG /* LwIP デバッグを有効にする */
#endif

#ifndef IFX_LWIP_DEBUG
#define IFX_LWIP_DEBUG LWIP_DBG_OFF /* IFX LwIP デバッグレベルを OFF に設定 */
#endif
#define DHCP_DEBUG LWIP_DBG_OFF /* DHCP デバッグを有効にする */
#define NETIF_DEBUG LWIP_DBG_ON /* NETIF デバッグを有効にする */
#define LWIP_DBG_TYPES_ON LWIP_DBG_STATE /* モジュール状態のデバッグメッセージのみ有効 */

#endif /* __LWIPOPTS_H__ */

 

よろしくお願いいたします

ジャン・マリンシェク

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Aurix-TC375Lite-kit-UDP-Ethernet-connection-error/td-p/742687

0 件の賞賛
2 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

TCPの例がテストされているかどうかを知りたいです。
PCとボードを直接接続する場合は、クロスケーブルを使用する必要があります。 それ以外の場合は、ルーターを使用する必要があります。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

実際、pingが機能しない理由はたくさんあります。 私の頭に浮かぶのは、次の通りです。
- LWIP_ICMP上でpingが機能するため、を有効にする必要があります
- ソースの LWIP フォルダーにはこのようなテンプレート ファイルがさらに複数あるため、アセンブリに lwipopts.h が正確に含まれていることを確認します (ほとんどの場合、これは問題ありません)。
- PHYチップの初期化は正しく行われていますか:リンクは物理レベルで上昇しています:RJ45のダイオードが点滅していますか?
- モジュールは原理的に動作し、_debug()で停止していませんか?
- lwipdebug を有効にして、ライブラリのデバッグ メッセージを表示できます。 これを行うには、cc.h の printf 呼び出しと fflush 呼び出しを Ifx_Console_print に置き換える必要があります (asclin で事前に初期化する必要もあります)。
完全なプロジェクトをお送りいただければ、詳しく調べることができます。

0 件の賞賛