chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

FreeRTOS-MPU特性說明

strongerHuang ? 來源:麥克泰技術 ? 作者:麥克泰技術 ? 2022-06-22 14:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MPU(Memory Protection Unit,內存保護單元)在 Cortex-M內核中是可選模塊,帶MPU的微控制器允許內存映射(包括Flash、RAM和外圍設備)細分為若干區(qū)域,分別給每個區(qū)域分配不同的訪問權限。

FreeRTOS-MPU是FreeRTOS針對MPU實現(xiàn)的一個安全版本,支持ARMv7-M(Cortex-M3, Cortex-M4 和 Cortex-M7)和ARMv8-M (Cortex-M23和Cortex-M33)內核的微控制器。 針對ARMv7-M的FreeRTOS移植存在兩個版本,一個支持MPU,一個不支持。針對ARMv8-M只有一個移植版本,通過編譯開關控制是否支持MPU。 FreeRTOS通過將任務分為特權和非特權運行模式和限制對RAM、外設、可執(zhí)行代碼、任務堆棧內存的訪問,使得應用更健壯和安全。例如,防止代碼從RAM中執(zhí)行可以獲得巨大的好處,因為這樣做可以防止許多攻擊向量,如緩沖區(qū)溢出漏洞或加載到RAM中的惡意代碼的執(zhí)行。 使用MPU必然會使應用程序設計更加復雜,首先必須確定MPU的內存區(qū)域限制并向RTOS進行描述,其次MPU限制應用程序任務可以做什么和不能做什么。

MPU的策略

創(chuàng)建一個將每個任務限制在其自己的內存區(qū)域的應用程序可能是最安全的,但它也是設計和實現(xiàn)最復雜的。通常最好使用一個MPU來創(chuàng)建一個偽進程和線程模型——允許線程組共享內存空間。例如,創(chuàng)建一個可被可信的第一方代碼訪問的內存空間,以及一個僅可被不可信的第三方代碼訪問的內存空間。

FreeRTOS-MPU特性

兼容ARM Cortex-M3和Cortex-M4F標準移植。

可以創(chuàng)建以特權模式或非特權模式運行的任務。非特權任務只能訪問它們自己的堆棧和最多三個用戶可定義的內存區(qū)域(每個任務三個)。用戶可定義內存區(qū)域是在創(chuàng)建任務時分配給任務的,如果需要,可以在運行時重新配置。

用戶可定義的內存區(qū)域可以單獨參數(shù)化。例如,一些區(qū)域可能被設置為只讀,而另一些區(qū)域可能被設置為不可執(zhí)行(在ARM術語中簡稱為XN),等等。

非特權任務之間不共享數(shù)據(jù)內存,但非特權任務可以使用標準隊列和信號量機制相互傳遞消息??梢酝ㄟ^使用用戶可定義的內存區(qū)域顯式地創(chuàng)建共享內存區(qū)域,但是不建議這樣做。

特權模式任務可以將自己設置為非特權模式,但一旦進入非特權模式,它就不能再將自己設置為特權模式。

FreeRTOS API位于Flash的一個區(qū)域,該區(qū)域只能在微控制器處于特權模式(調用API函數(shù)導致臨時切換到特權模式)時訪問。

內核維護的數(shù)據(jù)位于RAM的一個區(qū)域,只有在微控制器處于特權模式時才能訪問。

系統(tǒng)外設只能在微控制器處于特權模式時訪問。任何代碼都可以訪問標準外設(UART等),但是可以使用可定義的內存區(qū)域顯式地對其進行保護。

FreeRTOS-MPU可以創(chuàng)建兩種類型的任務:

特權任務:特權任務可以訪問整個內存映射。特權任務可以使用xTaskCreate()或xTaskCreateRestricted() API函數(shù)來創(chuàng)建。

非特權任務:非特權任務只能訪問它的堆棧。此外,可以授予它最多三個用戶可定義內存區(qū)域的訪問權限(每個任務三個)。非特權任務只能使用xTaskCreateRestricted()創(chuàng)建。注意,xTaskCreate()不能用于創(chuàng)建非特權任務。

如果一個任務想要使用MPU,那么必須提供以下附加信息:

任務堆棧的地址。

最多三個用戶可定義內存區(qū)域的開始、大小和訪問參數(shù)。

因此,創(chuàng)建任務所需的參數(shù)總數(shù)非常大。為了使創(chuàng)建MPU任務更容易, xTaskCreateRestricted()使用了一個名為xTaskParameters的參數(shù)結構體,通常定義為結構常量存儲在Flash中,并將該結構地址作為單個參數(shù)傳遞給xTaskCreateRestricted()。

typedef struct xTASK_PARAMTERS{  TaskFunction_t   pvTaskCode;  const signed char *  const pcName;  unsigned short   usStackDepth;  void *       pvParameters;  UBaseType_t    uxPriority;  portSTACK_TYPE * puxStackBuffer;  MemoryRegion_t  xRegions[ portNUM_CONFIGURABLE_REGIONS ];} TaskParameters_t;typedef struct xMEMORY_REGION{  void *pvBaseAddress;      /* 起始地址 */  unsigned long ulLengthInBytes;  /* 長度   */  unsigned long ulParameters;   /* 訪問屬性 */} MemoryRegion_t;
7d38d546-f1e4-11ec-ba43-dac502259ad0.png

分配給任務的內存區(qū)域可以使用vTaskAllocateMPURegions()來更改。

預定義區(qū)域和用戶可定義區(qū)域

區(qū)域0~4被內核配置為可用的運行環(huán)境,其中:

運行狀態(tài)的任務可以訪問它自己的棧,但是所有其他的RAM只有當運行在特權模式時才可以訪問。

只有當在特權模式下運行時,才能訪問內核和系統(tǒng)外設所在的Flash內存區(qū)域。

Flash內存(除了內核所在的內存)和所有非系統(tǒng)外設(例如UART和模擬輸入)都可以被特權和用戶模式任務訪問。

內核在每次上下文切換期間都會重新配置MPU,因此每個任務可以不同地定義其余三個區(qū)域。

區(qū)域起始地址和大小限制

MPU硬件強加了兩個規(guī)則,區(qū)域起始地址和大小定義必須遵守:

1、區(qū)域大小必須是32字節(jié)到4G(包括)之間的二進制的2次方。例如,32字節(jié)、64字節(jié)、128字節(jié)、256字節(jié)等等都是有效的區(qū)域大小。

2、起始地址必須是區(qū)域大小的倍數(shù)。例如,一個配置為65536字節(jié)長的區(qū)域必須從能被65536整除的地址開始。

FreeRTOS-MPUAPI

1、xTaskCreateRestricted()xTaskCreate()的擴展版本,用于創(chuàng)建執(zhí)行權限受限或者內存訪問權限受限的任務。

xTaskCreateRestricted()需要xTaskCreate()使用的所有參數(shù),加上四個額外的參數(shù)來定義三個任務特定的MPU區(qū)域和一個堆棧緩沖區(qū)。如果在普通函數(shù)參數(shù)列表中使用這個數(shù)量的參數(shù)會很麻煩,而且可能會大量使用堆??臻g。xTaskCreateRestricted()將一個指向xTaskParameters結構的指針作為其兩個參數(shù)之一,第二個參數(shù)用于向創(chuàng)建的任務傳遞句柄,與xTaskCreate()參數(shù)相同。如果不需要任務句柄, pxCreatedTask可以設置為NULL。

portBASE_TYPE xTaskCreateRestricted( xTaskParameters *pxTaskDefinition,

xTaskHandle *pxCreatedTask );

2、vTaskAllocateMPURegions()定義一組內存保護單元(MPU)區(qū)域,供受MPU限制的任務使用。如果創(chuàng)建任務時沒有分配MPU區(qū)域,可以在運行時使用vTaskAllocateMPURegions()函數(shù)重新分配。

void vTaskAllocateMPURegions( TaskHandle_t xTaskToModify,

const MemoryRegion_t * const xRegions );

3、特權模式任務可以調用portSWITCH_TO_USER_MODE()將自己設置為非特權模式。在非特權模式下運行的任務不能設置為特權模式。

原文標題:FreeRTOS MPU使系統(tǒng)更健壯!

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    8175

    瀏覽量

    159820
  • MPU
    MPU
    +關注

    關注

    0

    文章

    438

    瀏覽量

    50701
  • FreeRTOS
    +關注

    關注

    14

    文章

    495

    瀏覽量

    65691
  • Cortex-M3
    +關注

    關注

    9

    文章

    276

    瀏覽量

    60785

原文標題:FreeRTOS MPU使系統(tǒng)更健壯!

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    邊聊安全 | 功能安全開發(fā)之MPU

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智庫”功能安全開發(fā)之MPU寫在前面:在與從事功能安全開發(fā)行業(yè)的同事以及SASETECH社區(qū)的成員討論時,筆者經常被問及有關芯片內存保護單元(MPU
    的頭像 發(fā)表于 09-05 16:21 ?1655次閱讀
    邊聊安全 | 功能安全開發(fā)之<b class='flag-5'>MPU</b>

    詳解FreeRTOS與SAFERTOS的區(qū)別

    開源免費的FreeRTOS由Richard Barry在WHIS工作時創(chuàng)建,WHIS基于FreeRTOS的功能模型,通過完整的HAZOP分析,確定了功能模型和API中的所有的弱點,減輕所有薄弱環(huán)節(jié),并采用IEC 61508 SIL 3的開發(fā)生命周期,重新設計實現(xiàn)了SAFE
    的頭像 發(fā)表于 06-04 16:58 ?559次閱讀
    詳解<b class='flag-5'>FreeRTOS</b>與SAFERTOS的區(qū)別

    邊緣AI MPU深度盤點:品牌、型號與技術特性全解析

    邊緣AI MPU深度盤點:品牌、型號與技術特性全解析 隨著邊緣計算與人工智能的深度融合,邊緣AI MPU(微處理器)已成為支撐物聯(lián)網、智能制造、自動駕駛等場景的核心硬件。本文從品牌、型號、技術
    的頭像 發(fā)表于 04-30 17:27 ?2921次閱讀

    MPU-6000和MPU-6050產品規(guī)格書

    電子發(fā)燒友網站提供《MPU-6000和MPU-6050產品規(guī)格書.pdf》資料免費下載
    發(fā)表于 04-29 16:52 ?0次下載

    STM32CubeMX生成的FreeRTOS源碼格式如何優(yōu)化?

    如圖,STM32CubeMX生成的FreeRTOS源碼格式有待優(yōu)化,空格都是以箭頭的方式呈現(xiàn),觀感很差。FreeRTOS官方下載的源碼則不存在這個問題,說明是STM32CubeMX生成源碼的過程出現(xiàn)的格式問題,希望ST官方能對
    發(fā)表于 03-10 08:04

    關于mpu6050問題

    我很早之前買了一個,我現(xiàn)在使用這個mpu6050,我在調mpu6050數(shù)據(jù)時候,數(shù)據(jù)抖動特別大,我沒動這個mpu6050,它自己都有抖動,然后本來放在水平,他的機械中值是2.5,但是我水平抖動后,機械中值突然變成了-258,這是
    發(fā)表于 03-09 17:17

    如何優(yōu)化MPU的能耗

    選擇合適的低功耗MPU。不同的MPU在工作模式下有不同的功耗表現(xiàn),包括活動模式、睡眠模式和待機模式等。選擇具有低功耗特性MPU是優(yōu)化能耗的基礎。 電源管理 : 使用低功耗的電源管理芯
    的頭像 發(fā)表于 01-08 09:41 ?879次閱讀

    MPU的性能評估方法

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

    MPU數(shù)據(jù)傳輸協(xié)議詳解

    在現(xiàn)代電子系統(tǒng)中,微控制器(MPU)扮演著核心角色,負責處理各種任務和數(shù)據(jù)。為了實現(xiàn)這些功能,MPU需要與其他設備進行數(shù)據(jù)交換。數(shù)據(jù)傳輸協(xié)議就是規(guī)定這些數(shù)據(jù)交換如何進行的一套規(guī)則。 MPU數(shù)據(jù)傳輸
    的頭像 發(fā)表于 01-08 09:37 ?1219次閱讀

    MPU的故障排除技巧

    MPU(微處理單元)的故障排除技巧涉及多個方面,包括硬件連接、軟件配置、通信協(xié)議以及系統(tǒng)集成等。以下是一些詳細的故障排除技巧: 一、硬件連接檢查 接口兼容性 : 確保MPU與其他設備的接口兼容
    的頭像 發(fā)表于 01-08 09:36 ?1137次閱讀

    MPU與數(shù)字信號處理的關系

    在數(shù)字化時代,微處理器單元(MPU)和數(shù)字信號處理(DSP)技術已經成為實現(xiàn)復雜計算和數(shù)據(jù)處理任務的關鍵技術。MPU作為計算機系統(tǒng)的大腦,負責執(zhí)行程序指令和處理數(shù)據(jù),而DSP則專注于高效地處理信號
    的頭像 發(fā)表于 01-08 09:29 ?873次閱讀

    MPU在嵌入式系統(tǒng)中的應用

    一、MPU的基本功能 微處理器單元(MPU)是嵌入式系統(tǒng)中的大腦,負責執(zhí)行程序指令、處理數(shù)據(jù)和控制其他硬件設備。MPU的基本功能包括: 指令執(zhí)行:MPU能夠從存儲器中讀取指令,解碼這些
    的頭像 發(fā)表于 01-08 09:26 ?1279次閱讀

    MPU與MCU的區(qū)別

    在現(xiàn)代電子系統(tǒng)中,微處理器單元(MPU)和微控制器單元(MCU)扮演著至關重要的角色。它們是計算機和其他電子設備的核心,負責處理數(shù)據(jù)和執(zhí)行程序。盡管兩者在某些方面有相似之處,但它們在設計、功能
    的頭像 發(fā)表于 01-08 09:25 ?2235次閱讀

    什么是MPU控制器及其應用

    MPU控制器是現(xiàn)代電子系統(tǒng)中不可或缺的組成部分,它們在各種設備中扮演著核心角色,從簡單的嵌入式系統(tǒng)到復雜的計算機和服務器。MPU控制器的設計旨在提供高效、可靠的數(shù)據(jù)處理能力,同時保持較低的功耗和成本
    的頭像 發(fā)表于 01-08 09:23 ?1185次閱讀

    MPU微處理器的工作原理

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