手上的电路板是STM32F405RG+W5500,以前都是自己写的驱动,这次尝试使用了wiznet软件包,但是每次插上网线,有些低优先级的线程都会卡顿十几秒,由于看门狗是在空闲线程喂狗的(看门狗设的3秒触发),所以导致板子一插网线就重启。
后来经过分析,发现卡住的是workqueue线程,然后全局搜索发现是sal里提交的工作队列函数卡住,一步步捋出来的顺序如下:结论就是因为wizchip_sendto这个函数卡住导致。
wiz_link_status_thread_entry->netdev_low_level_set_link_status->sal_check_netdev_internet_up->check_netdev_internet_up_work->wiz_gethostbyname->DNS_run->wizchip_sendto。
之后在图上的位置加了延时,测试不会卡死了。
大概翻了下,有很多地方都没有加延时,wiznet包坑太多,举个例子如下,不一一说明了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
为什么我进入待机模式后就无法唤醒,看门狗复位唤醒是需要配置什么还是无法唤醒待机模式
发表于 12-21 15:09
我是 TI 的 FAE,现在我的客户遇到了看门狗禁用问题,因此在线上同步向您询问解决方案:
问题描述:客户想使用 MCU 在记录程序期间禁用看门狗功能,以防止 MCU 持续复位。
我
发表于 11-12 07:36
看门狗定时器是一种独立的计时器硬件模块,其核心功能是倒计时。如果系统软件在计时器超时前没有对其进行复位操作(即“喂狗”),看门狗将触发一个预定义的动作,通常是系统复位或中断。
发表于 10-21 14:18
•403次阅读
不需要看门狗功能。
看门狗定时器(WDT)是一种用于检测在嵌入式系统中的异常并复位单片机。它通常包含一个预装计时器,该计时器递减为零。当预装的看
发表于 09-25 13:46
很奇怪地,以下會令看门狗不断复位。只有一個timer。
static ETSTimer testTimer1;
void user_init(void)
{
// Configure
发表于 07-12 06:20
软件看门狗和硬件看门狗都是用于监控系统崩溃的工具,它们的作用是在系统出现故障或异常情况时自动恢复系统。 软件看门狗是一种程序,运行在操作系统中,通过定时检测系统是否正常运行来判断系统是否崩溃。如果
发表于 04-16 15:10
•1069次阅读
看门狗输入引脚 WDI 具有集成的下拉电流 IWDI 。看门狗输入 WDI 可以在“Closed Window”内或随后的“Open Window”期间转换为高电平。
发表于 03-18 11:27
•3824次阅读
大家在调试GD32 MCU系统的时候,若开了看门狗外设,是否会碰到进入调试模式看门狗就会咬狗造成无法调试的问题?
发表于 02-23 09:30
•1254次阅读
:
如果我在我的app1里面加入了看门狗, 我的app0没有喂狗操作。 当我的程序有app1跳转到app0后,是否会因为不喂狗而导致复位。 另外我的app1如果引起了看门狗
发表于 02-21 06:50
看门狗型复位电路主要利用CPU正常工作时,定时复位计数器,使得计数器的值不超过某一值;当CPU不能正常工作时,由于计数器不能被复位,因此其计
发表于 02-08 10:16
•4593次阅读
TC397 CPU看门狗二次复位后,一直处于复位状态,不再工作了,看门狗可以配置中断吗?
发表于 02-04 07:13
如图所示,休眠前baseline是2716,看门狗唤醒后baseline的值变成了2299,导致信号触发。请帮忙分析有哪些可能导致baseline降低,谢谢。
发表于 02-04 06:59
上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内
发表于 02-03 09:46
•1728次阅读
TLE9855的示例代码主循环里都带有WDT1_Service()这个函数,也就是喂狗,可是查看驱动设置里却没有使能看门狗,所以把WDT1_Service()这个函数注释掉,然后下载进单片机发现单片机没有发生复位,可是重新上电后单片机发生了
发表于 02-02 07:27
ADUC7024的看门狗能不能在看门狗定时没有到之前(即没有复位之前),将看门狗给关了啊?
发表于 01-15 08:17
评论