• 招生咨詢熱線:4008-569-579 
  • 手機版
    用手機掃描二維碼直達商品手機版
招生咨詢熱線
4008-569-579
機構(gòu)主頁 > 培訓(xùn)資料 > 嵌入式開發(fā):為什么要使用 MPU?
機構(gòu)主頁 > 培訓(xùn)資料>嵌入式開發(fā):為什么要使用 MPU?

嵌入式開發(fā):為什么要使用 MPU?

來源:廣州達內(nèi)教育        時間:2023-05-30        熱度:29℃        返回列表

  在你的嵌入式項目中使用 MPU 可以為你節(jié)省大量的挫折、時間和金錢。

MPU對嵌入式開發(fā)人員的最大單一好處是它能夠在開發(fā)早期捕獲錯誤,盡早發(fā)現(xiàn)錯誤可顯著縮短開發(fā)時間,在項目后期修復(fù)代碼中的錯誤可以減少文檔和測試代碼所需的返工,另一方面,盡早修復(fù)錯誤將減少項目后期代碼中存在的錯誤數(shù)量,這將簡化識別和修復(fù)剩余錯誤的過程,因為同時出現(xiàn)多個錯誤的可能性較小,這有助于你保持更可預(yù)測的時間表并防止意外延遲。


  MPU 如何實現(xiàn)這一點?最明顯的方法是保護所有與當(dāng)前正在執(zhí)行的代碼無關(guān)的數(shù)據(jù)。一個簡單的例子可以只用兩個 RTOS 任務(wù) A

和 B 來構(gòu)建。任務(wù) A 和 B 不應(yīng)相互交互,但存在一個錯誤,任務(wù) A 可能會意外寫入任務(wù) B 偶爾使用的某些數(shù)據(jù),覆蓋此數(shù)據(jù)不影響任務(wù) A

的正確運行。但是當(dāng)任務(wù) B 嘗試使用損壞的數(shù)據(jù)時,任務(wù) B 可能會出現(xiàn)意外故障。如果沒有配置 MPU 來防止任務(wù) A 寫入任務(wù) B

的數(shù)據(jù),這個錯誤可能需要嵌入式開發(fā)人員很長時間才能找到。如果錯誤很微妙或任務(wù) B 很少使用該數(shù)據(jù),則此問題將特別難以解決。然而,對于

MPU,錯誤的寫入操作會立即導(dǎo)致異常,從而讓你能夠確定導(dǎo)致錯誤的代碼行。


  在某些架構(gòu)上,MPU 甚至可以幫助你檢測 NULL 指針取消引用,因為你可以設(shè)置 MPU 區(qū)域以防止非特權(quán)代碼訪問 0x0

處的內(nèi)存。


  應(yīng)用程序中設(shè)計良好的一組 MPU 區(qū)域可以明確保護重要的內(nèi)存區(qū)域以防止出現(xiàn)特定問題。 一個很好的例子是通過將緩沖區(qū)放在

MPU 區(qū)域的末尾來防止緩沖區(qū)溢出。 你還可以將你的任務(wù)堆棧放置在任何非特權(quán)代碼無法訪問的區(qū)域。 如果這樣做,那么每個任務(wù)必須使用自己的 MPU

區(qū)域之一來明確授予自己對自己堆棧的訪問權(quán)限。 使用 MPU

迫使你真正考慮應(yīng)用程序的結(jié)構(gòu),以便你在任務(wù)之間干凈地分離數(shù)據(jù),從而產(chǎn)生更健壯和可維護的代碼庫。




  什么時候不使用 MPU?


  有兩種主要情況使嵌入式開發(fā)人員不會在處理器上使用

MPU;一個簡單的項目和一個性能關(guān)鍵的項目。第一個很簡單;一個非常簡單的應(yīng)用程序可能無法從使用 MPU 所增加的復(fù)雜性中受益。無需設(shè)置涵蓋閃存、RAM

和外圍設(shè)備的 MPU 區(qū)域,你的閃爍演示可能就可以完成。


  如果你需要處理器的每一滴性能,那么使用 MPU 的開銷可能會讓你大吃一驚。使用 MPU 的 FreeRTOS

端口中的任務(wù)上下文切換例程更長,因為每個任務(wù)都有多個 MPU 區(qū)域需要編程。當(dāng)新任務(wù)被上下文切換時,RTOS 必須對每個任務(wù) MPU

區(qū)域進行編程,并執(zhí)行其通常的職責(zé),例如堆疊使用過的寄存器。此外,由于內(nèi)核代碼和數(shù)據(jù)受 MPU

保護,因此所有內(nèi)核函數(shù)調(diào)用都必須受包裝函數(shù)保護。這個包裝函數(shù)只是在調(diào)用內(nèi)核函數(shù)之前提升處理器的特權(quán)級別,然后恢復(fù)特權(quán)并返回。這不僅會增加運行代碼所需的時間,而且可能會增加任務(wù)所需的堆棧大小。任務(wù)的控制塊還必須在其

MPU 區(qū)域上存儲信息,并且在某些安全關(guān)鍵 RTOS(如 SAFERTOS)的情況下,也將存儲此數(shù)據(jù)的鏡像。


  你還應(yīng)該警惕,使用 MPU 可能很困難,有時甚至令人沮喪。嵌入式開發(fā)人員設(shè)計應(yīng)用程序需要更多時間,因為必須為每個任務(wù)考慮

MPU 區(qū)域。這些區(qū)域中的錯誤,例如不正確的區(qū)域長度、權(quán)限或未正確鏈接應(yīng)用程序的數(shù)據(jù),可能會導(dǎo)致調(diào)試混亂。

電話咨詢

電話咨詢

咨詢電話:
4008-569-579
回到頂部

回到頂部