完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在为一家公司做一个项目,需要用 Lwip 实现以太网和 UDP。我注意到没有关于这个特定主题的示例。我只找到了 TCP echo 的示例。尽管如此,我还是尝试编写自己的代码来实现 UDP 服务器(代码如下所示)。然后,我 在 main_cpu0 程序 中实现了函数 (udpServer_Init) 。当我尝试运行程序时,我可以 ping 到微控制器,但当我尝试通过 Putty 终端连接时,却显示"connection refused。" 我在想,我是否遗漏了 lwipopts.h 中的某些设置 , 或者是否忽略了其他什么。如果有人能提供一些 Aurix 微控制器上 UDP 的示例或就这一问题提供任何帮助,我将不胜感激。我还在附件中提供了重要的程序文件。
void udp_receive_callback(void*参数 结构 结构体*uPCB、 结构 pbuf*p, 结构ip_addr_t *addr、 u16_tport) { /* 连接远程客户端 */ udp_connect(upcb, addr, port); udp_send(upcb, p); pbuf_free(p); udp_remove(upcb); } void udpServer_Init(void) { 结构 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__ /*********************************************************************************************************************/ /*------------------------------------------------------Macros-------------------------------------------------------*/ /*********************************************************************************************************************/ #define LWIP_UDP 1 #define MEMP_NUM_UDP_PCB 4 #define NO_SYS 1 /* 在没有操作系统的情况下使用 LwIP(无线程、无 Semaphores 等) */ #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 /* 禁用 Socket 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__ */ |
|
相关推荐
1个回答
|
|
根据您提供的信息,我将尝试分析可能导致 Aurix TC375Lite 套件 UDP 以太网连接错误的原因。以下是一些可能的原因和建议:
1. **检查 lwipopts.h 配置**:确保您已经在 lwipopts.h 文件中启用了 UDP 功能。在 lwipopts.h 文件中,找到以下宏定义并确保它们被正确设置: ``` #define LWIP_UDP 1 #define LWIP_UDPLITE 1 ``` 2. **检查网络配置**:确保您的网络配置正确,包括 IP 地址、子网掩码和默认网关。检查您的网络接口是否已正确初始化。 3. **检查 UDP 服务器实现**:仔细检查您的 UDP 服务器实现,确保您正确地创建了 UDP 套接字,绑定了端口,并正确地接收和发送数据。 4. **检查防火墙设置**:确保您的防火墙设置没有阻止 UDP 数据包。您可以尝试暂时禁用防火墙,看看是否可以解决问题。 5. **检查 Putty 终端设置**:确保您在 Putty 终端中使用了正确的端口号。默认情况下,UDP 通信通常使用端口 5000。 6. **检查错误处理**:确保您的代码中有适当的错误处理机制,以便在出现问题时能够识别并解决问题。 7. **调试和日志记录**:在您的代码中添加调试和日志记录功能,以便更好地了解程序在运行过程中的行为。这将有助于您识别问题所在。 8. **参考文档和示例**:尽管您提到没有找到关于 Aurix 微控制器上 UDP 的示例,但您可以尝试查找其他类似平台的示例,以便了解如何正确实现 UDP 服务器。 希望这些建议能帮助您解决问题。如果您能提供更多关于您的实现和配置的详细信息,我将更好地帮助您找到问题所在。 |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
2590 浏览 2 评论
3972 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3443 浏览 9 评论
1112 浏览 8 评论
3387 浏览 7 评论
271浏览 2评论
116浏览 2评论
235浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
2605浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
263浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-19 17:23 , Processed in 0.677359 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191