MM32F5330 是基于 Arm Cortex-M 內(nèi)核的微控制器,其內(nèi)存保護(hù)單元(MPU)的設(shè)計(jì)遵循 Arm Cortex-M 架構(gòu)的通用規(guī)范,同時(shí)結(jié)合靈動(dòng)微電子(MindMotion)的硬件特性進(jìn)行優(yōu)化。以下是關(guān)于 MM32F5330 MPU 設(shè)計(jì)的關(guān)鍵點(diǎn)及配置指南:
1. MPU 的核心功能
- 內(nèi)存區(qū)域劃分:將內(nèi)存空間劃分為多個(gè)獨(dú)立區(qū)域(如 8 個(gè)或更多,具體數(shù)量需參考芯片手冊(cè))。
- 訪(fǎng)問(wèn)權(quán)限控制:為每個(gè)區(qū)域設(shè)置讀/寫(xiě)/執(zhí)行權(quán)限,區(qū)分特權(quán)和非特權(quán)模式訪(fǎng)問(wèn)。
- 執(zhí)行保護(hù)(XN):禁止特定內(nèi)存區(qū)域(如數(shù)據(jù)區(qū))的代碼執(zhí)行,防止漏洞攻擊。
- 屬性配置:支持緩存、共享等內(nèi)存屬性設(shè)置(適用于帶緩存系統(tǒng))。
2. MPU 典型應(yīng)用場(chǎng)景
- 任務(wù)隔離:在 RTOS 中隔離不同任務(wù)的堆棧和數(shù)據(jù)區(qū),防止越界訪(fǎng)問(wèn)。
- 外設(shè)保護(hù):限制非特權(quán)代碼對(duì)關(guān)鍵外設(shè)寄存器(如時(shí)鐘、中斷控制器)的訪(fǎng)問(wèn)。
- 代碼保護(hù):將關(guān)鍵代碼設(shè)為只讀,防止篡改。
- 堆棧溢出防護(hù):為堆棧區(qū)域設(shè)置邊界,觸發(fā)錯(cuò)誤異常。
3. MM32F5330 MPU 配置步驟
(1) 初始化 MPU
#include "mm32_device.h" // 靈動(dòng)微電子提供的頭文件
void MPU_Init(void) {
MPU->CTRL = 0; // 禁用 MPU
// 配置具體區(qū)域...
MPU->CTRL = MPU_CTRL_ENABLE_Msk | MPU_CTRL_PRIVDEFENA_Msk; // 啟用 MPU 并允許特權(quán)模式默認(rèn)訪(fǎng)問(wèn)
__ISB(); // 指令同步屏障
__DSB(); // 數(shù)據(jù)同步屏障
}
(2) 配置內(nèi)存區(qū)域
以保護(hù) SRAM 區(qū)域?yàn)槔?/p>
void MPU_Config_SRAM(void) {
// 區(qū)域編號(hào)(例如 Region 0)
MPU->RNR = 0;
// 基地址(需對(duì)齊到區(qū)域大?。? MPU->RBAR = 0x20000000; // SRAM 起始地址
// 區(qū)域大小和屬性(如 64KB,全權(quán)限,特權(quán)模式訪(fǎng)問(wèn))
MPU->RASR = MPU_RASR_ENABLE_Msk | // 啟用區(qū)域
MPU_RASR_SIZE_64KB | // 區(qū)域大小
MPU_RASR_AP_FULL | // 特權(quán)模式全權(quán)限
MPU_RASR_XN_Msk | // 禁止執(zhí)行
MPU_RASR_C_Msk | // 緩存屬性(若有)
MPU_RASR_S_Msk; // 共享屬性
}
(3) 處理 MPU 異常
當(dāng)非法訪(fǎng)問(wèn)觸發(fā) MPU 錯(cuò)誤時(shí),系統(tǒng)會(huì)進(jìn)入 HardFault 異常。需在異常處理函數(shù)中調(diào)試定位問(wèn)題:
void HardFault_Handler(void) {
uint32_t *sp = __get_MSP(); // 獲取堆棧指針
uint32_t cfsr = SCB->CFSR; // 讀取錯(cuò)誤狀態(tài)寄存器
// 分析錯(cuò)誤類(lèi)型(如 MMARVALID 標(biāo)志判斷非法地址)
while(1); // 調(diào)試斷點(diǎn)
}
4. 關(guān)鍵注意事項(xiàng)
- 對(duì)齊要求:基地址必須對(duì)齊到區(qū)域大?。ㄈ?64KB 區(qū)域需對(duì)齊到 0x10000)。
- 優(yōu)先級(jí)覆蓋:多個(gè)區(qū)域重疊時(shí),編號(hào)高的區(qū)域優(yōu)先級(jí)更高。
- 默認(rèn)訪(fǎng)問(wèn)規(guī)則:?jiǎn)⒂?
PRIVDEFENA后,未覆蓋的區(qū)域允許特權(quán)模式訪(fǎng)問(wèn)。 - 性能影響:頻繁切換 MPU 配置可能增加中斷延遲,需謹(jǐn)慎設(shè)計(jì)實(shí)時(shí)任務(wù)。
5. 參考資源
- 數(shù)據(jù)手冊(cè):查閱 MM32F5330 數(shù)據(jù)手冊(cè)中 Memory Protection Unit (MPU) 章節(jié)。
- Arm 文檔:Arm Cortex-M3/M4 技術(shù)參考手冊(cè)中的 MPU 部分。
- 示例代碼:靈動(dòng)微電子提供的 SDK 或 HAL 庫(kù)中的 MPU 配置例程。
通過(guò)合理配置 MPU,可以顯著提升系統(tǒng)魯棒性,適用于安全關(guān)鍵型應(yīng)用(如工業(yè)控制、物聯(lián)網(wǎng)設(shè)備等)。建議結(jié)合具體應(yīng)用場(chǎng)景逐步調(diào)試權(quán)限設(shè)置,確保功能與安全的平衡。
MM32F5330內(nèi)存保護(hù)單元(MPU)設(shè)計(jì)
靈動(dòng)微電子發(fā)布了搭載安謀科技“星辰”STAR-MC1處理器的全新高性能 MM32F5 微控制器系列,該系列在內(nèi)核、總線(xiàn)和外設(shè)配置等多個(gè)方面進(jìn)行了創(chuàng)新
2023-09-07 18:29:07
如何為MPC5744P配置內(nèi)存保護(hù)單元?
我想知道更多關(guān)于如何為 MPC5744P 配置內(nèi)存保護(hù)單元,我需要知道如何使用這個(gè)配置器。
遠(yuǎn)風(fēng)
2023-04-04 09:03:26
管理STM32 MCU中的內(nèi)存保護(hù)單元
本應(yīng)用筆記介紹如何管理 STM32 產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須對(duì)其進(jìn)行編程并加以啟用。如果 MPU 沒(méi)有啟用,則存儲(chǔ)系統(tǒng)的行為不會(huì)變化。
2022-12-23 11:04:24
如何管理STM32產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)
本應(yīng)用筆記介紹如何管理 STM32 產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須
sgaasag
2023-09-07 06:23:26
為什么要使用MPU?MPU如何實(shí)現(xiàn)內(nèi)存保護(hù)?
如果你開(kāi)發(fā)的嵌入式項(xiàng)目,因內(nèi)存溢出,或者內(nèi)存故障等一些原因,造成了重大經(jīng)濟(jì)損失,或者造成了重大事故,你就能體會(huì)為什么要使用內(nèi)存保護(hù)單元(MPU)了。
2022-07-05 17:38:12
Armv8-M內(nèi)存模型與內(nèi)存保護(hù)用戶(hù)指南
本指南概述了Armv8-M內(nèi)存模型和內(nèi)存保護(hù)單元(MPU)在Cortex-M處理器中實(shí)現(xiàn)。本指南使用示例來(lái)幫助解釋這些概念 它介紹了。 本章概述以下主題: ?內(nèi)存模型 ?內(nèi)存保護(hù)單元(MPU) ?Armv7-M和Armv8-M主控板的區(qū)別
lan23
2023-08-02 08:12:17
為什么要使用MPU?MPU如何實(shí)現(xiàn)內(nèi)存保護(hù)?
如果你開(kāi)發(fā)的嵌入式項(xiàng)目,因內(nèi)存溢出,或者內(nèi)存故障等一些原因,造成了重大經(jīng)濟(jì)損失,或者造成了重大事故,你就能體會(huì)為什么要使用內(nèi)存保護(hù)單元(MPU)了。
2023-02-24 11:59:32
靈動(dòng)股份MM32F5330微控制器獲得芯片技術(shù)突破獎(jiǎng)
8月,在OFweek維科網(wǎng)主辦的“OFweek 2023(第八屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)”暨“維科杯·OFweek 物聯(lián)網(wǎng)行業(yè)年度評(píng)選”中,靈動(dòng)股份MM32F5330榮獲“維科杯·OFweek 2023物
2023-09-04 17:12:03
Armv8-M架構(gòu)STAR-MC1處理器單片機(jī)MM32F5330系列
MM32F5330微控制器工作電壓為1.8V~5.5V,工作溫度范圍為擴(kuò)展工業(yè)型-40℃~+105℃。內(nèi)置多種省電工作模式保證低功耗應(yīng)用的要求。封裝采用LQFP64/48,QFN32。適合于工業(yè)控制、電機(jī)控制、數(shù)字電源、新能源光伏、變頻器、編碼器等多種應(yīng)用場(chǎng)合。購(gòu)買(mǎi)及樣品測(cè)試請(qǐng)洽官方代理英尚微電子。
2023-05-23 17:27:07
MM32F5330微控制器基本介紹 TinyUSB Host基本移植介紹
MM32F5330微控制器搭載了由安謀科技授權(quán)的Armv8-M架構(gòu)“星辰”STAR-MC1處理器,最高工作頻率可達(dá)180MHz。內(nèi)置了128KB Flash,32KB SRAM,并集成了豐富的I/O
2023-10-20 09:27:31
應(yīng)用筆記|管理STM32 MCU中的內(nèi)存保護(hù)單元
的內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須對(duì)其進(jìn)行編程并加以啟用。如果 MPU 沒(méi)有啟用,則
2022-12-21 21:05:01
靈動(dòng)微電子MM32F5370 MCU產(chǎn)品特色
MM32F3、靈動(dòng)·天樞 MM32F5、靈動(dòng)·玉衡 MM32G5、靈動(dòng)·天璣 MM32H5 等子系列,MM32F5270、MM32F5260、MM32F5330 等系列產(chǎn)品如天上的北斗星一般,熠熠生輝。
2025-01-10 10:02:10
PMP物理內(nèi)存保護(hù)介紹
PMP 和 Paging 物理內(nèi)存保護(hù)機(jī)制旨在與 RISC?V 指令集手冊(cè),第二卷:特權(quán)架構(gòu),版本 1.10 中描述的基于頁(yè)面的虛擬內(nèi)存系統(tǒng)組合。啟用分頁(yè)后,訪(fǎng)問(wèn)虛擬內(nèi)存的指令可能會(huì)導(dǎo)致多次物理內(nèi)存
2023-10-07 17:49:17
什么是MPU?MPU在哪些方面保護(hù)內(nèi)存安全?
內(nèi)存保護(hù)單元(MPU)是一種硬件機(jī)制,通過(guò)只允許代碼訪(fǎng)問(wèn)需要的內(nèi)存和外設(shè)來(lái)提高嵌入式設(shè)備的安全性。
2023-06-12 09:06:40
基于MM32G5330的FlexCAN實(shí)現(xiàn)CANopenNode協(xié)議棧移植
本文將介紹如何基于靈動(dòng)MM32G5330的FlexCAN實(shí)現(xiàn)CANopenNode協(xié)議棧的移植,并使用靈動(dòng)官方提供的開(kāi)發(fā)板Mini-G5333進(jìn)行驗(yàn)證。
2024-04-12 09:15:59
主要講armv7-m架構(gòu)下的MPU內(nèi)存保護(hù)單元
簡(jiǎn)介MPU(Memory Protection Unit) 內(nèi)存保護(hù)單元。 本文主要講 armv7-m 架構(gòu) 架構(gòu)下的 MPU。在 armv7-m 架構(gòu)下,Cortex-M3 和 Cortex-M4
hdfsf
2022-04-08 11:00:06
靈動(dòng)股份推出基于STAR-MC1的MM32G5330
繼今年2月靈動(dòng)股份重磅發(fā)布了MM32G新系列MCU產(chǎn)品——基于Arm Cortex-M0內(nèi)核的G0140和G0160后,靈動(dòng)再次推出基于“星辰”STAR-MC1內(nèi)核的高性能MM32G5330,擴(kuò)展其MM32G系列的產(chǎn)品布局。
2023-05-08 14:44:50
基于Cortex?-M4F核的高性能MCU UM324xF芯片
UM324xF系列是高性能低功耗的ARM Cortex -M4F核的工業(yè)級(jí)處理器芯片。其中,M4處理器核支持DSP指令集、單精度浮點(diǎn)運(yùn)算單元(FPU)、內(nèi)存保護(hù)單元(MPU)。
2022-11-09 20:06:11
STM32F405xx系列芯片的特點(diǎn)性能介紹
ARM單精度數(shù)據(jù)處理指令和數(shù)據(jù)類(lèi)型。它還實(shí)現(xiàn)了一套完整的DSP指令和一個(gè)內(nèi)存保護(hù)單元(MPU),提高了應(yīng)用程序的安全性。
2019-05-15 15:31:57
「ALIENTEK 阿波羅 STM32F767 開(kāi)發(fā)板資料連載」第十七章 內(nèi)存保護(hù)(MPU)實(shí)驗(yàn)
STM32 的 Cortex M4(STM32F3/F4 系列)和 Cortex M7(STM32F7 系列)系列的產(chǎn)品,都帶有內(nèi)存保護(hù)單元(memory protection unit),簡(jiǎn)稱(chēng):MPU
正點(diǎn)原子運(yùn)營(yíng)官
2020-05-12 15:45:41
靈動(dòng)股份推出基于STAR-MC1的MM32G5330
MM32G5330微控制器搭載了由安謀科技授權(quán)的 Armv8-M 架構(gòu)“星辰”STAR-MC1 內(nèi)核,性能上比傳統(tǒng)的Cortex-M3/M4提升了近20%
2023-05-23 17:24:49
STM32F407IGT6型號(hào)MCU微控制器的產(chǎn)品介紹
STM32F407IGT6型號(hào)MCU微控制器,是一款32位176引腳高級(jí)連接與加密微控制器單元,帶有單精準(zhǔn)度浮點(diǎn)運(yùn)算單元,支持所有ARM單精準(zhǔn)度數(shù)據(jù)處理指令與數(shù)據(jù)類(lèi)型,它還允許執(zhí)行全套DSP指令,以及包含1個(gè)用于增強(qiáng)應(yīng)用程序安全性的內(nèi)存保護(hù)單元。
2022-11-17 17:24:06
STM32F302xB,STM32F302xC數(shù)據(jù)手冊(cè)
的corder-m 432位cpu(72 mhz最大),單周期乘法和HW部門(mén)、DSP指令和MPU(內(nèi)存保護(hù)單元) 記憶 128至256千字節(jié)的閃存 最高可達(dá)40千字節(jié)的SRAM,具有HW奇偶校驗(yàn)檢查實(shí)現(xiàn)的前
普羅旺斯的薰衣草
2022-11-28 06:26:48
STM32F411xC/STM32F411xE數(shù)據(jù)手冊(cè)
執(zhí)行從閃存,頻率高達(dá)100兆赫,內(nèi)存保護(hù)單元,125 DMIPS/1 25 DMIPS/MHz(Dhrystone2.1),和DSP指令?! ∮洃洝 ∽疃?12千字節(jié)的Flash內(nèi)存 128千字節(jié)的SRAM
RATION
2022-11-28 07:34:44
單片機(jī)STM32F373xx的數(shù)據(jù)手冊(cè)
)(最大)、單周期乘法與HW除法,DSP指令帶FPU(浮點(diǎn)-)點(diǎn)單元)和MPU(內(nèi)存保護(hù)單元)1.25 DMIPS/MHz(Dhrystone 2.1)記憶64到256千字節(jié)的閃存具有HW奇偶校驗(yàn)的一
hnui2002
2022-11-28 07:07:48
STM32F767XX微控制器的功能及特性分析
?M7內(nèi)核具有一個(gè)浮點(diǎn)單元(FPU),支持ARM?雙精度和單精度數(shù)據(jù)處理指令和數(shù)據(jù)類(lèi)型。它還實(shí)現(xiàn)了一套完整的DSP指令和一個(gè)內(nèi)存保護(hù)單元(MPU),提高了應(yīng)用程序的安全性。
2019-05-14 15:17:54
STM32架構(gòu)及最小系統(tǒng)的相關(guān)資料分享
不能支持帶虛擬內(nèi)存的操作系統(tǒng)比如Linux,但是M4支持MPU即內(nèi)存保護(hù)單元,一般用于對(duì)UcosII系統(tǒng)代碼的保護(hù)。另外,M4具備功耗更低的優(yōu)勢(shì)。3.STM32最小系統(tǒng)包括:(1)...
fanB
2022-02-09 07:56:49
基于ARM? Cortex?-M4的STM32F410XX數(shù)據(jù)手冊(cè)
)允許0-等待狀態(tài)執(zhí)行從閃存,頻率高達(dá)100兆赫,內(nèi)存保護(hù)單元,125 DMIPS/1.25 DMIPS/MHz(Dhrystone2.1)和DSP指令?! ∮洃洝 ∽疃?28千字節(jié)的Flash內(nèi)存 512字節(jié)OTP內(nèi)存 32千字節(jié)的SRAM
笑盡往事
2022-11-28 06:11:35
通過(guò)STM32IDE調(diào)試工具手動(dòng)寫(xiě)入0x40026410內(nèi)存地址失敗咋辦?
stm32f207zg (nucleo-f207zg)嗨,我正在嘗試寫(xiě)入我的 DMA2 Stream0 CR 寄存器(映射為 0x40026410)。但是該內(nèi)存地址不能用我的初始化代碼寫(xiě)入,也不能通過(guò) STM32IDE 調(diào)試工具手動(dòng)寫(xiě)入。我缺少任何內(nèi)存保護(hù)或鎖嗎??
hzmbs2016
2022-12-23 08:51:54