手上的電路板是STM32F405RG+W5500,以前都是自己寫的驅(qū)動(dòng),這次嘗試使用了wiznet軟件包,但是每次插上網(wǎng)線,有些低優(yōu)先級(jí)的線程都會(huì)卡頓十幾秒,由于看門狗是在空閑線程喂狗的(看門狗設(shè)的3秒觸發(fā)),所以導(dǎo)致板子一插網(wǎng)線就重啟。
后來經(jīng)過分析,發(fā)現(xiàn)卡住的是workqueue線程,然后全局搜索發(fā)現(xiàn)是sal里提交的工作隊(duì)列函數(shù)卡住,一步步捋出來的順序如下:結(jié)論就是因?yàn)閣izchip_sendto這個(gè)函數(shù)卡住導(dǎo)致。
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。
之后在圖上的位置加了延時(shí),測(cè)試不會(huì)卡死了。
大概翻了下,有很多地方都沒有加延時(shí),wiznet包坑太多,舉個(gè)例子如下,不一一說明了。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
驅(qū)動(dòng)器
-
看門狗
-
W5500
-
STM32F405
相關(guān)推薦
為什么我進(jìn)入待機(jī)模式后就無法喚醒,看門狗復(fù)位喚醒是需要配置什么還是無法喚醒待機(jī)模式
發(fā)表于 12-21 15:09
我是 TI 的 FAE,現(xiàn)在我的客戶遇到了看門狗禁用問題,因此在線上同步向您詢問解決方案:
問題描述:客戶想使用 MCU 在記錄程序期間禁用看門狗功能,以防止 MCU 持續(xù)復(fù)位。
我
發(fā)表于 11-12 07:36
看門狗定時(shí)器是一種獨(dú)立的計(jì)時(shí)器硬件模塊,其核心功能是倒計(jì)時(shí)。如果系統(tǒng)軟件在計(jì)時(shí)器超時(shí)前沒有對(duì)其進(jìn)行復(fù)位操作(即“喂狗”),看門狗將觸發(fā)一個(gè)預(yù)定義的動(dòng)作,通常是系統(tǒng)復(fù)位或中斷。
發(fā)表于 10-21 14:18
?403次閱讀
不需要看門狗功能。
看門狗定時(shí)器(WDT)是一種用于檢測(cè)在嵌入式系統(tǒng)中的異常并復(fù)位單片機(jī)。它通常包含一個(gè)預(yù)裝計(jì)時(shí)器,該計(jì)時(shí)器遞減為零。當(dāng)預(yù)裝的看
發(fā)表于 09-25 13:46
很奇怪地,以下會(huì)令看門狗不斷復(fù)位。只有一個(gè)timer。
static ETSTimer testTimer1;
void user_init(void)
{
// Configure
發(fā)表于 07-12 06:20
軟件看門狗和硬件看門狗都是用于監(jiān)控系統(tǒng)崩潰的工具,它們的作用是在系統(tǒng)出現(xiàn)故障或異常情況時(shí)自動(dòng)恢復(fù)系統(tǒng)。 ?軟件看門狗是一種程序,運(yùn)行在操作系統(tǒng)中,通過定時(shí)檢測(cè)系統(tǒng)是否正常運(yùn)行來判斷系統(tǒng)是否崩潰。如果
發(fā)表于 04-16 15:10
?1067次閱讀
看門狗輸入引腳 WDI 具有集成的下拉電流 IWDI 。看門狗輸入 WDI 可以在“Closed Window”內(nèi)或隨后的“Open Window”期間轉(zhuǎn)換為高電平。
發(fā)表于 03-18 11:27
?3824次閱讀
大家在調(diào)試GD32 MCU系統(tǒng)的時(shí)候,若開了看門狗外設(shè),是否會(huì)碰到進(jìn)入調(diào)試模式看門狗就會(huì)咬狗造成無法調(diào)試的問題?
發(fā)表于 02-23 09:30
?1253次閱讀
:
如果我在我的app1里面加入了看門狗, 我的app0沒有喂狗操作。 當(dāng)我的程序有app1跳轉(zhuǎn)到app0后,是否會(huì)因?yàn)椴晃构范?b class='flag-5'>導(dǎo)致復(fù)位。 另外我的app1如果引起了看門狗
發(fā)表于 02-21 06:50
看門狗型復(fù)位電路主要利用CPU正常工作時(shí),定時(shí)復(fù)位計(jì)數(shù)器,使得計(jì)數(shù)器的值不超過某一值;當(dāng)CPU不能正常工作時(shí),由于計(jì)數(shù)器不能被復(fù)位,因此其計(jì)
發(fā)表于 02-08 10:16
?4592次閱讀
TC397 CPU看門狗二次復(fù)位后,一直處于復(fù)位狀態(tài),不再工作了,看門狗可以配置中斷嗎?
發(fā)表于 02-04 07:13
如圖所示,休眠前baseline是2716,看門狗喚醒后baseline的值變成了2299,導(dǎo)致信號(hào)觸發(fā)。請(qǐng)幫忙分析有哪些可能導(dǎo)致baseline降低,謝謝。
發(fā)表于 02-04 06:59
上期為大家講解了GD32 MCU復(fù)位包括電源復(fù)位和系統(tǒng)復(fù)位,其中系統(tǒng)復(fù)位還包括獨(dú)立看門狗復(fù)位、內(nèi)
發(fā)表于 02-03 09:46
?1727次閱讀
TLE9855的示例代碼主循環(huán)里都帶有WDT1_Service()這個(gè)函數(shù),也就是喂狗,可是查看驅(qū)動(dòng)設(shè)置里卻沒有使能看門狗,所以把WDT1_Service()這個(gè)函數(shù)注釋掉,然后下載進(jìn)單片機(jī)發(fā)現(xiàn)單片機(jī)沒有發(fā)生復(fù)位,可是重新上電后單片機(jī)發(fā)生了
發(fā)表于 02-02 07:27
ADUC7024的
看門狗能不能在
看門狗定時(shí)沒有到之前(即沒有
復(fù)位之前),將
看門狗給關(guān)了?。?/div>
發(fā)表于 01-15 08:17
評(píng)論