手上的电路板是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包坑太多,举个例子如下,不一一说明了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
驱动器
+关注
关注
51文章
7310浏览量
142972 -
看门狗
+关注
关注
10文章
541浏览量
70257 -
W5500
+关注
关注
5文章
45浏览量
17251 -
STM32F405
+关注
关注
0文章
8浏览量
4012
发布评论请先 登录
相关推荐
STM8S003看门狗在主循环老是复位怎么解决?
程序已经全部写好,测试没有问题,现在加入看门狗程序,16MHZ主频,4分频,255MS复位时间(独立看门狗)程序如下,我关闭定时器4后程序正常,或者我最里面的循环关闭读取AIN6的值也正常(就是
发表于 04-25 08:18
求助,关于看门狗定时器的喂狗时间和多APP看门狗的问题求解
:
如果我在我的app1里面加入了看门狗, 我的app0没有喂狗操作。 当我的程序有app1跳转到app0后,是否会因为不喂狗而导致复位。 另外我的app1如果引起了看门狗
发表于 02-21 06:50
TC397 CPU看门狗二次复位后,一直处于复位状态不再工作了,看门狗可以配置中断吗?
TC397 CPU看门狗二次复位后,一直处于复位状态,不再工作了,看门狗可以配置中断吗?
发表于 02-04 07:13
看门狗唤醒导致baseline降低的原因?
如图所示,休眠前baseline是2716,看门狗唤醒后baseline的值变成了2299,导致信号触发。请帮忙分析有哪些可能导致baseline降低,谢谢。
发表于 02-04 06:59
TLEz9855如何关闭看门狗?
TLE9855的示例代码主循环里都带有WDT1_Service()这个函数,也就是喂狗,可是查看驱动设置里却没有使能看门狗,所以把WDT1_Service()这个函数注释掉,然后下载进单片机发现单片机没有发生复位,可是重新上电后单片机发生了
发表于 02-02 07:27
什么是模拟看门狗?模拟看门狗有什么用处?
看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdog (IWDG)独立
看门狗要如何使用?
虽然知道看门狗的作用,不过还是不太明白看门狗要如何使用。
看门狗的作用是在程序跑飞的情况下让系统能够及时复位重新开始执行程序,道理很简单,但是程序如何跑飞呢?
如果是一段程序需要延时等
发表于 11-06 07:02
英锐恩科技推出看门狗复位芯片EN22
EN22是一款专用的看门狗ASIC,内部集成有电压检测单元,定时器,看门狗和手动复位单元。EN22系列器件减小了系统的复杂度,提高了系统的可靠性。
芯片主体是一个定时电路,并由被监控CPU提供
发表于 09-18 10:25
STM32F2独立看门狗和窗口看门狗
结合安全度、计时精确度和易用性·监测软件跑飞,或未按预想地运行的情况
·触发系统复位或产生中断(中断仅针对窗口看门狗)独立看门狗
·专用时钟LSl
·低功耗模式仍可运行对定时的控制比较松
不同时钟源,不同生存周期
窗口
发表于 09-13 07:15
看门狗的基本原理和RV-STAR独立看门狗(FWDGT)的使用方法
设置一个超时时间,然后程序在超时时间内定期对定时器进行重载操作(也叫做“喂狗”操作),从而避免正常程序发生复位。
当系统发生意料之外的故障使得软件跑飞,看门狗定时器无法被按时重载时,看门狗
发表于 08-16 08:13
76e003看门狗中断后唤醒led闪,程序不会复位的原因?
官例,掉电模式休眠,看门狗中断唤醒,仿真没问题,打三个断点,看门狗中断后唤醒led闪,程序不会复位。但是脱机运行出问题了,去掉sda.clk.rest只留电源线.断电复位运行,程序休眠
发表于 06-25 08:22
NUC970单片机,linux系统下看门狗复位无效怎么解决?
相同的板子,相同的程序,主板相同,原来最早的那些看门狗停止喂狗能正常复位,最近买的单片机看门狗停止喂狗以后,死在那边
有遇到过这种情况的么...
发表于 06-14 11:59
S9KEAZN64AMLC MCU看门狗复位超时值,为什么重置需要更多时间?
定时器将在534 毫秒 复位,当 256 时钟预分频器禁用时,看门狗定时器将在518 毫秒复位。
为什么重置需要更多时间?
当我使用 16Mhz 的外部振荡器时,它会在508 毫秒时
发表于 06-02 09:46
评论