手上的電路板是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包坑太多,舉個例子如下,不一一說明了。
-
驅動器
+關注
關注
54文章
8605瀏覽量
148912 -
看門狗
+關注
關注
10文章
577瀏覽量
71533 -
W5500
+關注
關注
5文章
45瀏覽量
17994 -
STM32F405
+關注
關注
0文章
9瀏覽量
4164
發布評論請先 登錄
TPS3430 具有可編程復位延遲的窗口看門狗定時器數據手冊

TPS3430-Q1 具有可編程復位延遲的汽車級窗口看門狗定時器數據手冊


看門狗,你真的會用嗎?

安利給工程師!看門狗相關知識

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

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

如何禁用TPL5010的看門狗功能?
TPL5010死機時,DONE一直保持高電平,當超過看門狗的設定時間后,MCU會被PL5010復位嗎?
TPS7A63xx-Q1配置可在看門狗時實現長復位脈沖寬度

評論