手上的電路板是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包坑太多,舉個例子如下,不一一說明了。
-
驅動器
+關注
關注
53文章
8271瀏覽量
147051 -
看門狗
+關注
關注
10文章
566瀏覽量
70943 -
W5500
+關注
關注
5文章
45瀏覽量
17691 -
STM32F405
+關注
關注
0文章
9瀏覽量
4080
發布評論請先 登錄
相關推薦
安利給工程師!看門狗相關知識

抄作業!看門狗定時器必備知識

一文詳解看門狗/電壓監控芯片規格書

如何禁用TPL5010的看門狗功能?
TPS7A63xx-Q1配置可在看門狗時實現長復位脈沖寬度

單片機開發:使用內部看門狗定時器(WDT)還是外掛看門狗芯片?
看門狗不斷復位的原因?
軟件看門狗和硬件看門狗的區別
TLF35584中集成的看門狗工作應用案例

評論