打印
[AT32F407]

at32f437用lwip做udp server,运行一段时间后,故障现象为:能ping通,但是主程序死机。请问是...

[复制链接]
5075|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
loveyond|  楼主 | 2023-3-23 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
udp_send在主循环中,udp_recv中mac中断中。

运行一段时间后(几小时后),主循环程序当掉了,但是ping正常。

请问一个问题:我的疑问是如果ping 正常,是不是证明了mcu并没有死掉?     

谢谢~老师们!!!

使用特权

评论回复
沙发
loveyond|  楼主 | 2023-3-24 11:00 | 只看该作者
???有没有老师帮忙解答下呀?

使用特权

评论回复
板凳
muyichuan2012| | 2023-3-24 13:54 | 只看该作者
本帖最后由 muyichuan2012 于 2023-3-24 18:57 编辑

emac的phy时钟是外接的吗?

使用特权

评论回复
地板
loveyond|  楼主 | 2023-3-27 10:31 | 只看该作者
本帖最后由 loveyond 于 2023-3-27 14:59 编辑
muyichuan2012 发表于 2023-3-24 13:54
emac的phy时钟是外接的吗?

不是外接的,用的是at32f437 start 开发板,用的是mcu的25mhz,我手上多个start开发板均出现,死机现象,但是能ping通。烦死了

使用特权

评论回复
5
loveyond|  楼主 | 2023-3-27 14:59 | 只看该作者
死机的时候,mcu给phy的时钟也还是正常的25mhz,ping也能ping通,但就是主循环程序和定时器中断程序均无法正常工作

使用特权

评论回复
6
loveyond|  楼主 | 2023-3-28 11:04 | 只看该作者
我貌似找到原因了,我要把接收中断关掉,把接收放到主循环中就不会死机。
我的接收中断写的有问题吗?这是我的接收中断的代码:
void EMAC_IRQHandler(void)
{
    /* lwip receive handle */
    lwip_rx_loop_handler();
    /* clear the emac dma rx it pending bits */
    emac_dma_flag_clear(EMAC_DMA_RI_FLAG);
    emac_dma_flag_clear(EMAC_DMA_NIS_FLAG);
}

void lwip_rx_loop_handler(void)
{
  /* handles all the received frames */
    lwip_pkt_handle();
}

使用特权

评论回复
7
loveyond|  楼主 | 2023-3-29 11:26 | 只看该作者
哎,都没人帮助吗?

使用特权

评论回复
8
hearstnorman323| | 2023-4-4 22:08 | 只看该作者
LWIP协议怎么提高UDP速度

使用特权

评论回复
9
janewood| | 2023-4-4 22:14 | 只看该作者
如何LWIP如固定本地端口号               

使用特权

评论回复
10
xiaoyaodz| | 2023-4-7 09:48 | 只看该作者
lwip中怎样使用http协议传输文件  

使用特权

评论回复
11
wwppd| | 2023-4-7 10:04 | 只看该作者
lwip的移植教程怎么样              

使用特权

评论回复
12
abotomson| | 2023-4-7 22:31 | 只看该作者
LWIP如何实现TCP 长连接?  

使用特权

评论回复
13
alvpeg| | 2023-4-7 22:38 | 只看该作者
LWIP UDP偶发丢包问题               

使用特权

评论回复
14
adolphcocker| | 2023-4-7 22:48 | 只看该作者
这个没有用过。              

使用特权

评论回复
15
pmp| | 2023-4-7 23:37 | 只看该作者
可以使用mqtt通信的吗              

使用特权

评论回复
16
sagade| | 2023-4-12 20:52 | 只看该作者
loveyond 发表于 2023-3-28 11:04
我貌似找到原因了,我要把接收中断关掉,把接收放到主循环中就不会死机。
我的接收中断写的有问题吗?这是 ...

官方的例程都没开emac中断,也是把接收放在主循环轮询的,不知道是不是有问题才这么做的?

使用特权

评论回复
17
sagade| | 2023-4-12 21:10 | 只看该作者
看到别家的中断处理,我明天去改改试试:
void ENET_IRQHandler(void)
{  
    uint32_t reval;
  
    /* clear the enet DMA Rx interrupt pending bits */
    enet_interrupt_flag_clear(ENET_DMA_INT_FLAG_RS_CLR);
    enet_interrupt_flag_clear(ENET_DMA_INT_FLAG_NI_CLR);
    /* handles all the received frames */
    do{
        reval = enet_rxframe_size_get();
        
        if(reval > 1){
            lwip_pkt_handle();
        }
    }while(reval != 0);   
}


使用特权

评论回复
18
louliana| | 2023-4-12 21:38 | 只看该作者
lwip没有研究过的。              

使用特权

评论回复
19
geraldbetty| | 2023-4-12 21:51 | 只看该作者
lwip发送数据卡死正常               

使用特权

评论回复
20
timfordlare| | 2023-4-12 22:02 | 只看该作者
使用串口输出数据试试看的。              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

0

粉丝