| 6EP1931-2DC21 |
![]() |
價格: 元(人民幣) | 產地:6EP1931-2DC21 |
| 最少起訂量:1個 | 發貨地:6EP1931-2DC21 | |
| 上架時間:2021-12-23 16:48:40 | 瀏覽量:112 | |
廈門光沃自動化設備有限公司
![]() |
||
| 經營模式:經銷商 | 公司類型:其他有限責任公司 | |
| 所屬行業:PLC控制系統 | 主要客戶:全國市場 | |
在線咨詢 ![]() |
||
| 聯系人:吳 (先生) | 手機:18030229050 |
|
電話: |
傳真: |
| 郵箱:1878187406@qq.com | 地址:廈門市海滄區滄湖東一里海景奧斯卡 |
6EP1931-2DC216EP1931-2DC21 內存保護單元(MPU)是一種硬件機制,通過只允許代碼訪問需要的內存和外設來提高嵌入式設備的安全性。應用程序可以組織為進程(process),每個進程訪問自己的內存和外設。MPU不僅阻止應用程序代碼訪問其區域以外的內存或外設,而且還可以用于檢測堆棧溢出。 我們基于ARM Cortex-M MCU中的MPU,討論一下MPU所提供的一些特性。 MPU是什么? 內存保護單元(MPU)是一種硬件機制,只允許需要訪問某些資源的代碼訪問相應的內存和外設。MPU常用于安全關鍵應用,如醫療設備、航空電子設備、工業控制、核電站等,提高嵌入式應用的穩定性和安全性。 在IoT應用中,也可以通過MPU限制對內存和外設的訪問,提高產品的安全性。例如,可以通過MPU機制隱藏加密密鑰以拒絕攻擊者訪問;使用MPU隔離Flash控制器也可以防止攻擊者更改應用程序,只允許受信任的代碼執行代碼更新。 通過MPU將RTOS任務劃分為進程,如圖1所示。每個進程可以包含任意數量的任務。進程內的任務可以訪問分配給該進程的內存和外設。增加MPU時,從任務的角度幾乎不用更改,除非任務之間存在交互。 進程間可以通過共享內存進行通信,兩個進程的MPU配置表中將出現相同的區域。 應用中也可以包含具有完全權限的系統級任務和ISR,允許它們訪問所有內存、外設或CPU。 當違規發生時,系統的行為取決于應用程序,是哪個任務違規。例如,如果違規是由圖形用戶界面(GUI)造成的,可以終止并重新啟動GUI,并且不會影響系統的其它部分。但是,如果違規任務控制一個制動器,則異常處理程序可能需要在重啟任務之前立即停止制動器。 理想情況下,在產品開發過程中會捕獲并糾正訪問違規,否則,系統設計人員將需要評估所有可能的結果,并決定發生這種情況時該做什么。 使用MPU檢測堆棧溢出 在基于RTOS的應用中,每個任務都需要單獨的堆?臻g。堆棧溢出可能是基于RTOS的系統開發人員所面臨的最常見的問題之一。如果沒有硬件幫助,堆棧溢出檢測可以由軟件實現,但軟件方式不能及時捕獲溢出,可能導致產品不穩定。MPU可以幫助防止堆棧溢出。 MPU域可用于堆棧溢出檢測,使用一個小的域(RedZone)來覆蓋每個任務堆棧的底部。配置MPU屬性,如果有任何代碼嘗試寫入該區域,將觸發MPU異常。域的大小決定了該方法在捕獲堆棧溢出方面的效率。 區域越大,堆棧溢出捕獲的可能性就越大,同時堆?捎玫RAM就越少。換言之,RedZone域被認為是不可用的內存,它被用來檢測非法寫入。開始時可以將RedZone大小設置為32個字節,如果任務堆棧為512個字節,那么32個字節約占用6%,剩余480個字節的可用堆?臻g。 另一種檢測方法是將整個任務堆棧封裝為一個MPU區域,允許讀寫操作。該方法有兩個問題:首先,在Cortex-M(ARMv7M架構)上,堆棧的大小需為2的冪,并且必須在冪邊界(即32、64、128、256、512等)上對齊。 如果嵌入式應用有足夠的RAM,那么這不是問題;然而,在資源受限的應用 (如Cortex-M MCU)中,在減少浪費的同時設置合適的堆棧內存會很復雜。其次,該方法不允許寫同一進程中的其它任務堆棧,不允許進程中的任務通過堆棧傳遞信息。
6EP1931-2DC21 IC697BEM713 IC697BEM721 IC697BEM731 |
| 版權聲明:以上所展示的信息由會員自行提供,內容的真實性、準確性和合法性由發布會員負責。機電之家對此不承擔任何責任。 友情提醒:為規避購買風險,建議您在購買相關產品前務必確認供應商資質及產品質量。 |