新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32H7以太網(wǎng)的MMC中斷

STM32H7以太網(wǎng)的MMC中斷

作者: 時(shí)間:2024-04-16 來(lái)源: 收藏

的 MMC(MAC management counter)中斷是個(gè)有點(diǎn)特別的中斷。特殊之處在于它是默認(rèn)使能。如果我們?cè)诖a里不針對(duì) MMC 進(jìn)行相關(guān)處理,就會(huì)造成一些異常現(xiàn)象。我們先來(lái)看一個(gè)真實(shí)的客戶案例。
客戶案例
客戶使用 50 作為主控,與其他設(shè)備之間進(jìn)行通訊??蛻粼趬毫y(cè)試中發(fā)現(xiàn):
? 設(shè)備從第一次通訊開(kāi)始,累計(jì) 7 到 8 天,就會(huì)發(fā)現(xiàn) 50 不再響應(yīng)用戶的請(qǐng)求。
? 客戶通過(guò)使用 IDE 和添加輔助代碼可以發(fā)現(xiàn),STM32H750 會(huì)不停地進(jìn)入中斷,導(dǎo)致所使用的操作系統(tǒng)無(wú)法進(jìn)行有效的系統(tǒng)調(diào)度。
? 問(wèn)題發(fā)生后,客戶無(wú)論拔下網(wǎng)線或者再次連上網(wǎng)線,STM32H750 依然會(huì)不停的進(jìn)入以太網(wǎng)中斷。
? 客戶嘗試使用 IDE 查看所有以太網(wǎng)寄存器,會(huì)發(fā)現(xiàn)有時(shí)侯能夠讓系統(tǒng)恢復(fù)正
常。
分析
系統(tǒng)不停的進(jìn)入以太網(wǎng)中斷,說(shuō)明某個(gè)中斷在被某種條件下被不停的觸發(fā),或者中斷觸發(fā)后沒(méi)有被處理。進(jìn)一步,當(dāng)系統(tǒng)出現(xiàn)異常狀況后,拔掉網(wǎng)線,中斷依然不斷的進(jìn)入,說(shuō)明該異常并不需要外界不停的輸入,也就說(shuō)明可能是中斷沒(méi)有被處理所導(dǎo)致。所以,客戶首先想到的是補(bǔ)全所有使能的以太網(wǎng)中斷的清除代碼。然而,客戶再次測(cè)試,卻發(fā)現(xiàn)累計(jì) 7 到 8 天,問(wèn)題再次發(fā)生。
在這種情況下,為了深刻了解該狀況的原因,我們建議客戶,抓取異常時(shí)的寄存器現(xiàn)場(chǎng),然后和正常狀態(tài)時(shí)的寄存器進(jìn)行對(duì)比。我們?cè)谠O(shè)備未發(fā)生異常前,抓取了以太網(wǎng)的三組寄存器 DMA、MTL 和 MAC。同時(shí),我們?cè)诎l(fā)生異常后,在同一設(shè)備再次進(jìn)行這三組寄存器的抓取。然后,我們使用文本比較工具,對(duì)兩次的寄存器進(jìn)行比較。我們很快就可以發(fā)現(xiàn),MAC 寄存器存在值得關(guān)注的差異。MAC 寄存器對(duì)比如下:

本文引用地址:http://m.butianyuan.cn/article/202404/457678.htm

1713244424973723.png

我們可以看到在系統(tǒng)異常情況下下,MMCRXIS 和 MMCIS 被置位了。我們從參考手冊(cè) RM0433 (STM32H742, STM32H743/753 and STM32H750 Value lineadvanced Arm?-based 32-bit MCUs)(直接搜索關(guān)鍵子 MMCRXIS)中可以看到 MMCRXIS 和MMCIS 表示系統(tǒng)收到了 MMC 接收中斷.

1713244371251964.png

在兩次三組寄存器的比較中,我們看到系統(tǒng)生成了 MMC 接收中斷(MMC_RX_INTERRUPT 中RXUCGPIS)。這個(gè)符合前文的 MMCRXIS 和 MMCIS 的狀態(tài)。

1713244304573052.png

從參考手冊(cè) RM0433 中我們可以看到,只要 MMC 選項(xiàng)使能,該中斷標(biāo)志就為有效。但是我們并沒(méi)有使能 MMC 選項(xiàng),甚至我們都沒(méi)有使能 MMC 中斷,為什么還是有中斷產(chǎn)生呢?

后續(xù)更多內(nèi)容請(qǐng)您點(diǎn)擊下載全文



關(guān)鍵詞: STM32H7 以太網(wǎng) MMC中斷

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉