女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

第三十二章 MPU——內存保護單元

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-07-01 15:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗——W55MH32高性能以太網單片機

W55MH32是WIZnet重磅推出的高性能以太網單片機,它為用戶帶來前所未有的集成化體驗。這顆芯片將強大的組件集于一身,具體來說,一顆W55MH32內置高性能Arm? Cortex-M3核心,其主頻最高可達216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數據處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協議棧、內置MAC以及PHY,擁有獨立的32KB以太網收發緩存,可供8個獨立硬件socket使用。如此配置,真正實現了All-in-One解決方案,為開發者提供極大便利。

在封裝規格上,W55MH32提供了兩種選擇:QFN100和QFN68。

W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復雜工控場景設計。它擁有66個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、5個串口、2個SPI接口(其中1個帶I2S接口復用)、1個CAN、1個USB2.0以及1個SDIO接口。如此豐富的外設資源,能夠輕松應對工業控制中多樣化的連接需求,無論是與各類傳感器、執行器的通信,還是對復雜工業協議的支持,都能游刃有余,成為復雜工控領域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網關模組等場景,軟件使用方法一致。更多信息和資料請進入http://www.w5500.com/網站或者私信獲取。

此外,本W55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網絡通信安全再添保障。

為助力開發者快速上手與深入開發,基于W55MH32L這顆芯片,WIZnet精心打造了配套開發板。開發板集成WIZ-Link芯片,借助一根USB C口數據線,就能輕松實現調試、下載以及串口打印日志等功能。開發板將所有外設全部引出,拓展功能也大幅提升,便于開發者全面評估芯片性能。

若您想獲取芯片和開發板的更多詳細信息,包括產品特性、技術參數以及價格等,歡迎訪問官方網頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZPGhjkceAQighABA5X7BENG0290.png

第三十二章 MPU——內存保護單元

MPU(Memory Protection Unit,內存保護單元)是W55MH32中用于管理內存區域訪問權限與屬性的關鍵模塊。它通過劃分內存區域并設置訪問規則(如讀/寫/執行權限、緩存策略),增強系統的安全性和穩定性,尤其適用于多任務系統(如RTOS)或需要隔離關鍵資源的場景。

1MPU功能概述

1.1基本概念

MPU是W55MH32內置的硬件模塊,不支持虛擬內存(與MMU不同),但能通過物理內存區域劃分實現以下功能:

限制任務/程序對特定內存區域的訪問(如禁止寫、禁止執行)。

定義內存區域的屬性(如緩存策略、共享性),優化系統性能。

檢測非法內存訪問(如越界、權限違規),觸發異常(如 MemManage Fault),避免系統崩潰。

1.2關鍵術語

內存區域(Region):MPU將內存劃分為多個獨立區域,每個區域需配置基地址、大小、權限等參數。

訪問權限(Access Permission):定義區域的讀(R)、寫(W)、執行(X)權限(如僅讀、可讀可寫、不可執行)。

內存屬性(Memory Attribute:包括緩存策略(如無緩存、寫通、寫回)、共享性(是否被多處理器共享)等,影響數據訪問效率。

2MPU核心功能

2.1內存區域劃分

MPU通過配置區域基地址(Base Address)和區域大?。⊿ize),將物理內存劃分為多個獨立區域。

大小限制:區域大小必須是2的冪次(如32B、64B、1KB、64KB等),且基地址需對齊到區域大小(例如 64KB區域的基地址必須是 64KB的整數倍)。

區域重疊:若多個區域重疊,編號大的區域優先級更高(覆蓋小編號區域的配置)。

2.2訪問權限控制

每個區域可獨立設置特權級(Privileged)和用戶級(Unprivileged)的訪問權限(如 RTOS中內核運行在特權級,任務運行在用戶級)。常見權限組合如下:

權限類型 說明
PRIV_RW 特權級可讀可寫,用戶級無權限
PRIV_RW_USER_RO 特權級可讀可寫,用戶級僅可讀
PRIV_RO 特權級僅可讀,用戶級無權限
NO_ACCESS 任何級別均不可訪問(用于標記非法區域)

2.3內存屬性配置

通過設置內存類型(Memory Type)和緩存策略(Cache Policy),優化數據訪問效率:

內存類型:如普通內存(Normal)、設備內存(Device)。

普通內存:支持緩存(如SRAM中的變量)。

設備內存:通常為外設寄存器(如 GPIO、UART),需禁用緩存(避免緩存導致的讀寫延遲)。

緩存策略:

無緩存(Non-Cacheable):直接訪問物理內存(如設備寄存器)。

寫通(Write-Through):寫數據時同時更新緩存和內存(適合需要實時性的場景)。

寫回(Write-Back):寫數據時僅更新緩存,后續統一寫入內存(適合高頻讀寫場景,提升效率)。

3應用場景

MPU的核心價值在于內存安全防護和資源隔離,以下是其典型應用場景,結合核心功能說明其實際意義:

RTOS任務隔離(多任務系統核心需求):在RTOS(實時操作系統)中,多個任務共享同一內存空間,若未隔離可能因任務異常(如棧溢出、野指針)導致系統崩潰。MPU通過區域劃分與權限控制實現任務隔離。

關鍵數據/代碼保護(防篡改與誤操作):系統中某些數據或代碼(如固件、校準參數、加密密鑰)一旦被修改,可能導致功能失效或安全漏洞。MPU通過只讀或禁止訪問權限保護這些資源。

外設寄存器訪問控制(防止誤操作外設):外設寄存器(如GPIO、UART的控制寄存器)的錯誤修改可能導致外設異常。MPU限制僅特權級代碼(如內核)可修改關鍵寄存器。

內存越界檢測(開發調試輔助):開發階段,程序可能因數組越界、野指針等錯誤訪問未分配內存。MPU將未使用的內存區域配置為NO_ACCESS(無訪問權限),觸發異常以快速定位問題。

安全啟動與固件保護(系統級安全需求):在需要安全啟動的系統中(如醫療設備、工業控制),MPU保護啟動代碼和安全配置區域,確保系統從可信代碼啟動。

4注意事項

引腳驅動能力:MCO輸出頻率不宜過高(需低于GPIO的最大可靠頻率,通常建議不超過50MHz),高頻時需考慮信號完整性(如阻抗匹配)。

時鐘源使能順序:配置MCO前需確保時鐘源已穩定(如HSE起振完成),避免輸出無效信號。

5程序設計

MPU的核心配置通過RASR(Region Attribute and Size Register,區域屬性與大小寄存器)實現,具體配置步驟如下:

5.1內存區域大小宏(SIZE字段)

#define MPU_DEFS_RASR_SIZE_1KB      (0x09

作用:設置內存區域的大小。

原理:RASR的SIZE字段(位 [5:0])用于定義區域大小,實際大小為2(SIZE+1)字節。

0x09對應SIZE=9,計算得210=1024字節(1KB);

0x0D對應SIZE=13,計算得214=16384字節(16KB);

0x0F對應SIZE=15,計算得216=65536字節(64KB)。

5.2內存類型與緩存策略宏(C和S字段)

#define MPU_DEFS_NORMAL_MEMORY_WT   (MPU_RASR_C_Msk| MPU_RASR_S_Msk)

作用:定義普通內存的直寫(Write-Through, WT)緩存策略。

原理:

C_Msk(位 [16]):使能緩存(Cacheable);

S_Msk(位 [18]):標記為共享內存(Sharable),用于多主設備(如 CPU與 DMA)訪問時的一致性;

組合后表示“可緩存、共享的直寫內存”(寫操作直接更新內存,不經過緩存)。

5.3訪問權限宏(AP字段)

#define MPU_DEFS_RASE_AP_FULL_ACCESS (0x3 

作用:設置內存區域的完全訪問權限(無限制)。

原理:RASR的AP字段(位 [23:21])定義訪問權限,0x3表示:

特權模式(Privileged)允許讀/寫;

用戶模式(User)允許讀/寫(無限制訪問)。

5.4設置內存保護規則

內存保護規則由MPU_Set()函數實現,函數內容如下:

{
    SCB->SHCSR|= SCB_SHCSR_MEMFAULTENA_Msk;
 
    mpu_disable();
    mpu_region_config(0,0x8000000, MPU_DEFS_RASR_SIZE_64KB,
                      MPU_DEFS_NORMAL_MEMORY_WT | MPU_DEFS_RASE_AP_FULL_ACCESS| MPU_RASR_ENABLE_Msk);
    mpu_region_config(1,0x20000000, MPU_DEFS_RASR_SIZE_16KB,
                      MPU_DEFS_NORMAL_MEMORY_WT | MPU_DEFS_RASE_AP_FULL_ACCESS| MPU_RASR_ENABLE_Msk);
    mpu_region_config(2, USART1_BASE, MPU_DEFS_RASR_SIZE_1KB,
                      MPU_DEFS_NORMAL_MEMORY_WT | MPU_DEFS_RASE_AP_FULL_ACCESS| MPU_RASR_ENABLE_Msk);
    mpu_region_disable(3);
    mpu_region_disable(4);
    mpu_region_disable(5);
    mpu_region_disable(6);
    mpu_region_disable(7);
 
    mpu_enable();
}

該函數首先使能了內存錯誤(MemFault)異常,以便檢測非法內存訪問;隨后禁用MPU(配置前需禁用以避免沖突),依次配置3個內存區域:

區域0(起始地址0x8000000,64KB,對應Flash)

區域1(起始地址0x20000000,16KB,對應RAM)

區域2(起始地址USART1_BASE,1KB,對應串口1外設寄存器)

這3個區域均設置為“直寫緩存+完全訪問權限”并啟用;接著禁用未使用的區域3~7(MPU通常支持8個區域,未使用的需禁用以防意外訪問);最后啟用MPU,使所有配置的內存保護規則生效,確保Flash、RAM及串口外設的訪問受限于預設的大小、權限和緩存策略,提升系統內存訪問的安全性與穩定性。

5.5主函數main()

主函數main()的內容如下:

int main(void)
{
    RCC_ClocksTypeDef clocks;
 
    delay_init();
    UART_Configuration(115200);
    RCC_GetClocksFreq(&clocks);
 
    printf("n");
    printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency /1000000,(float)clocks.HCLK_Frequency/1000000,
           (float)clocks.PCLK1_Frequency /1000000,(float)clocks.PCLK2_Frequency/1000000,(float)clocks.ADCCLK_Frequency/1000000);
    printf("MPU Test.n");
 
    printf("MPU->TYPE, Value: 0x%xn", MPU->TYPE);
    printf("MPU->CTRL, Value: 0x%xn", MPU->CTRL);
    printf("MPU->RNR, Value: 0x%xn", MPU->RNR);
    printf("MPU->RBAR, Value: 0x%xn", MPU->RBAR);
    printf("MPU->RASR, Value: 0x%xn", MPU->RASR);
    printf("MPU->RBAR_A1;, Value: 0x%xn", MPU->RBAR_A1);
    printf("MPU->RASR_A1, Value: 0x%xn", MPU->RASR_A1);
    printf("MPU->RBAR_A2, Value: 0x%xn", MPU->RBAR_A2);
    printf("MPU->RASR_A2, Value: 0x%xn", MPU->RASR_A2);
    printf("MPU->RBAR_A3, Value: 0x%xn", MPU->RBAR_A3);
    printf("MPU->RASR_A3, Value: 0x%xnn", MPU->RASR_A3);
 
    printf("LimiteToPrivilege Accessn");
    SHOW_PrintFlash(0x08000000,64);
 
    MPU_Set();
 
    printf("LimiteToUser Accessn");
    SHOW_PrintFlash(0x08000000,64);
    while(1);
}

main()函數是MPU功能測試的主程序:首先初始化延時函數和串口(波特率115200),調用標準庫獲取系統各時鐘域頻率(SYSCLK、HCLK等)并打印;接著打印MPU核心寄存器(TYPE、CTRL等)的初始狀態用于調試;

隨后調用MPU_Set配置內存保護規則,對比配置前后對Flash起始地址(0x08000000)前64字節的訪問結果(特權模式與用戶模式),驗證MPU對內存訪問權限的限制效果;最后進入無限循環保持運行。

6下載驗證

程序下載運行之后,首先打印了時鐘信息,接著是MPU的相關寄存器初始狀態信息,然后用特權限制訪問內存成功,之后設置為用戶訪問,再次訪問則無法讀取內容:

wKgZO2hjk9mAG2msAAS5JCifZR8071.pngwKgZPGhjk9qASh6cAAUAcQQVxjI260.png

7總結

MCO功能通過靈活配置時鐘源和分頻系數,為W55MH32提供了對外輸出時鐘的能力,簡化了系統設計中的時鐘同步問題。先理解其應用場景(如多芯片同步、調試測量),再掌握配置步驟(時鐘源選擇、GPIO設置、分頻配置),可更高效地應用于實際項目中。

WIZnet是一家無晶圓廠半導體公司,成立于1998年。產品包括互聯網處理器iMCU?,它采用TOE(TCP/IP卸載引擎)技術,基于獨特的專利全硬連線TCP/IP。iMCU?面向各種應用中的嵌入式互聯網設備。

WIZnet在全球擁有70多家分銷商,在香港、韓國、美國設有辦事處,提供技術支持和產品營銷。

香港辦事處管理的區域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6067

    文章

    44969

    瀏覽量

    649177
  • 以太網
    +關注

    關注

    40

    文章

    5619

    瀏覽量

    175453
  • 封裝
    +關注

    關注

    128

    文章

    8626

    瀏覽量

    145197
  • WIZnet
    +關注

    關注

    3

    文章

    20

    瀏覽量

    42423
  • MPU
    MPU
    +關注

    關注

    0

    文章

    412

    瀏覽量

    49809
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    第二十二章 TIM——高級定時器

    本章介紹了W55MH32的高級定時器(TIM1和TIM8),其含時基單元等,具備輸入捕獲、輸出比較、PWM生成等功能,還支持互補輸出、死區插入等,適用于工業電機控制,也提及相關配置結構體。
    的頭像 發表于 06-20 13:58 ?614次閱讀
    第二<b class='flag-5'>十二章</b> TIM——高級定時器

    RK3568驅動指南|第十二篇 GPIO子系統-第130 GPIO的調試方法

    RK3568驅動指南|第十二篇 GPIO子系統-第130 GPIO的調試方法
    的頭像 發表于 06-03 11:32 ?435次閱讀
    RK3568驅動指南|第<b class='flag-5'>十二</b>篇 GPIO子系統-第130<b class='flag-5'>章</b> GPIO的調試方法

    RK3568驅動指南|第十二篇 GPIO子系統-第135 GPIO子系統與pinctrl子系統相結合實驗

    RK3568驅動指南|第十二篇 GPIO子系統-第135 GPIO子系統與pinctrl子系統相結合實驗
    的頭像 發表于 05-23 13:47 ?314次閱讀
    RK3568驅動指南|第<b class='flag-5'>十二</b>篇 GPIO子系統-第135<b class='flag-5'>章</b> GPIO子系統與pinctrl子系統相結合實驗

    十二章 SysTick——系統定時器

    本章介紹了W55MH32的SysTick系統定時器,它是24位遞減計數器,含4個寄存器,可配置定時、中斷,用于產生時基 等。
    的頭像 發表于 05-22 17:16 ?405次閱讀
    第<b class='flag-5'>十二章</b> SysTick——系統定時器

    MPU的性能評估方法

    MPU(Microprocessor Unit,微處理器單元)的性能評估是確保其在實際應用中能夠滿足需求的重要環節。以下是一些常用的MPU性能評估方法: 一、基準測試(Benchmark
    的頭像 發表于 01-08 09:39 ?720次閱讀

    MPU與數字信號處理的關系

    ,特別是在音頻、視頻和通信領域。 MPU的定義與功能 微處理器單元MPU)是一種集成電路,它集成了中央處理單元(CPU)、內存、輸入/輸出
    的頭像 發表于 01-08 09:29 ?568次閱讀

    MPU與MCU的區別

    和應用上存在顯著差異。 MPU與MCU的定義 微處理器單元MPU) : MPU是一種通用的中央處理單元,它主要設計用于執行復雜的計算任務。
    的頭像 發表于 01-08 09:25 ?1530次閱讀

    MPU微處理器的工作原理

    在現代電子設備中,微處理器(MPU)扮演著至關重要的角色。從個人電腦到智能手機,再到嵌入式系統,MPU都是實現復雜計算任務的關鍵。 MPU的基本結構 MPU的核心是中央處理
    的頭像 發表于 01-07 18:08 ?1325次閱讀

    首頁-2025年第三十二屆上海國際電力設備及技術展覽會 EP Shanghai

    今年展會展出內容集合五大專區--站式輸配電、電力自動化、電力智能制造裝備能源數字化” 專區及“新能源儲還有新設的”能館”。涵蓋智能電網、新能源、光儲充、微電網、儲能、電力5G通信等領域。方便展商與其針對客戶進行有效交流對接,促進了電力行業的創新和發展,與業界攜手“升級、轉型、融合。
    的頭像 發表于 12-26 16:35 ?606次閱讀
    首頁-2025年<b class='flag-5'>第三十二</b>屆上海國際電力設備及技術展覽會 EP Shanghai

    《DNESP32S3使用指南-IDF版_V1.6》第三十二章 IIC_QMA6100P實驗

    第三十二章 IIC_QMA6100P實驗 前面,我們介紹了IIC驅動XL9555、AP3216C、AT24C02等器件,本章我們將向大家介紹如何使用IIC來驅動QMA6100P三軸加速度計,獲取X
    發表于 12-26 09:45

    上能電氣亮相2024上海國際電力設備及技術展覽會

    近日,第三十二屆上海國際電力設備及技術展覽會(EP Shanghai 2024)暨上海國際儲能技術應用展覽會(ES Shanghai 2024)在上海新國際博覽中心正式落下帷幕。上能電氣攜全球領先的電能質量解決方案重磅亮相,助推電力系統建設邁向新時代。
    的頭像 發表于 12-10 13:47 ?530次閱讀

    《DNK210使用指南 -CanMV版 V1.0》第三十七章 image圖像對比實驗

    第三十七章 image圖像對比實驗 在上一節中,介紹了image模塊中圖像色塊追蹤方法給的使用,本章將繼續介紹image模塊中圖像對比方法的使用。通過本章的學習,讀者將學習到image模塊中圖像
    發表于 11-07 09:33

    《DNK210使用指南 -CanMV版 V1.0》第三十二章 音頻FFT實驗

    第三十二章 音頻FFT實驗 本章將介紹CanMV下FFT的應用,通過將時域采集到的音頻數據通過FFT為頻域。通過本章的學習,讀者將學習到CanMV下控制FFT加速器進行FFT的使用。本章分為如下幾個
    發表于 11-04 14:18

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+第三四章閱讀報告

    在深入閱讀了《嵌入式Hypervisor:架構、原理與應用》的第三、四后,我對嵌入式Hypervisor的設計與實現技術有了更為詳盡和系統的理解。以下是我對這兩內容的閱讀報告: 第三章
    發表于 10-09 18:29

    第1 有限單元法和ANSYS簡介

    ?第1 ?有限單元法和ANSYS簡介
    發表于 08-27 17:20 ?1次下載
    主站蜘蛛池模板: 合阳县| 黄冈市| 闽侯县| 汕尾市| 枣阳市| 大方县| 巧家县| 鱼台县| 金川县| 南靖县| 婺源县| 南宁市| 临安市| 多伦县| 嵊州市| 新营市| 宁化县| 澄城县| 唐山市| 平山县| 宜州市| 安阳县| 宝应县| 维西| 革吉县| 会同县| 石景山区| 宝鸡市| 平顶山市| 德昌县| 永善县| 噶尔县| 崇阳县| 桃江县| 田阳县| 武宣县| 奉贤区| 江阴市| 连南| 疏勒县| 岑溪市|