手上的電路板是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
發布評論請先 登錄
相關推薦
安利給工程師!看門狗相關知識
![安利給工程師!<b class='flag-5'>看門狗</b>相關知識](https://file1.elecfans.com/web3/M00/04/4D/wKgZO2dyP1iAOrMJAATrj7x_ANc937.png)
抄作業!看門狗定時器必備知識
![抄作業!<b class='flag-5'>看門狗</b>定時器必備知識](https://file1.elecfans.com/web3/M00/04/43/wKgZPGdyPx-AJjkkAAaPx4vFsEM206.png)
一文詳解看門狗/電壓監控芯片規格書
![一文詳解<b class='flag-5'>看門狗</b>/電壓監控芯片規格書](https://file1.elecfans.com/web3/M00/03/EF/wKgZO2dtH2uAbqQ8AAAitlCLDrI138.png)
如何禁用TPL5010的看門狗功能?
TPS7A63xx-Q1配置可在看門狗時實現長復位脈沖寬度
![TPS7A63xx-Q1配置可在<b class='flag-5'>看門狗</b>時實現長<b class='flag-5'>復位</b>脈沖寬度](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機開發:使用內部看門狗定時器(WDT)還是外掛看門狗芯片?
看門狗不斷復位的原因?
軟件看門狗和硬件看門狗的區別
TLF35584中集成的看門狗工作應用案例
![TLF35584中集成的<b class='flag-5'>看門狗</b>工作應用案例](https://file1.elecfans.com/web2/M00/C4/BD/wKgZomX3tVaADn1QAAAPgafpCV8647.jpg)
評論