色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

FreeRTOS-MPU特性說明

strongerHuang ? 來源:麥克泰技術 ? 作者:麥克泰技術 ? 2022-06-22 14:05 ? 次閱讀

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

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

MPU的策略

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

FreeRTOS-MPU特性

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

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

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

非特權任務之間不共享數據內存,但非特權任務可以使用標準隊列和信號量機制相互傳遞消息。可以通過使用用戶可定義的內存區域顯式地創建共享內存區域,但是不建議這樣做。

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

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

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

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

FreeRTOS-MPU可以創建兩種類型的任務:

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

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

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

任務堆棧的地址。

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

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

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

預定義區域和用戶可定義區域

區域0~4被內核配置為可用的運行環境,其中:

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

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

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

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

區域起始地址和大小限制

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

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

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

FreeRTOS-MPUAPI

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

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

portBASE_TYPE xTaskCreateRestricted( xTaskParameters *pxTaskDefinition,

xTaskHandle *pxCreatedTask );

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

void vTaskAllocateMPURegions( TaskHandle_t xTaskToModify,

const MemoryRegion_t * const xRegions );

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

原文標題:FreeRTOS MPU使系統更健壯!

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

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

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • MPU
    MPU
    +關注

    關注

    0

    文章

    357

    瀏覽量

    48775
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62140
  • Cortex-M3
    +關注

    關注

    9

    文章

    269

    瀏覽量

    59463

原文標題:FreeRTOS MPU使系統更健壯!

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

收藏 人收藏

    評論

    相關推薦

    軟啟動:TPS2373X特性說明

    電子發燒友網站提供《軟啟動:TPS2373X特性說明.pdf》資料免費下載
    發表于 09-25 11:20 ?0次下載
    軟啟動:TPS2373X<b class='flag-5'>特性</b><b class='flag-5'>說明</b>

    在TM4C MCU上用FreeRTOS開發通用應用程序應用說明

    電子發燒友網站提供《在TM4C MCU上用FreeRTOS開發通用應用程序應用說明.pdf》資料免費下載
    發表于 09-11 14:15 ?0次下載
    在TM4C MCU上用<b class='flag-5'>FreeRTOS</b>開發通用應用程序應用<b class='flag-5'>說明</b>

    在TM4C MCU上使用FreeRTOS開發高級應用

    電子發燒友網站提供《在TM4C MCU上使用FreeRTOS開發高級應用.pdf》資料免費下載
    發表于 09-06 10:17 ?0次下載
    在TM4C MCU上使用<b class='flag-5'>FreeRTOS</b>開發高級應用

    freertos最多支持多少個任務

    FreeRTOS是一個輕量級的實時操作系統(RTOS),其設計初衷就是為了提供簡單、可靠且高效的實時任務管理。關于FreeRTOS最多支持多少個任務的問題,實際上并沒有一個固定的上限,這主要取決于
    的頭像 發表于 09-02 14:21 ?846次閱讀

    freertos和rtos區別是什么

    FreeRTOS 和 RTOS(實時操作系統)是兩個不同的概念,但它們之間有緊密的聯系。FreeRTOS 是一個特定的開源實時操作系統,而 RTOS 是實時操作系統的一般概念。 概念定義 RTOS
    的頭像 發表于 09-02 14:18 ?1172次閱讀

    freertos和裸機有什么區別

    FreeRTOS 和裸機編程是兩種不同的嵌入式系統開發方法,它們在設計理念、資源使用、功能實現等方面有著顯著的差異。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一個小型的、可裁剪
    的頭像 發表于 09-02 14:13 ?1333次閱讀

    瑞薩RZ/T系列MPU的中斷重入實現

    基于Arm的RZ/T系列MPU通過工業以太網通信提供高性能和高速實時控制,為自動化市場構建高性能系統。RZ/T MPU和RZ/N MPU均基于類似的硬件架構開發而成,并共享相同的軟件環境,可實現可
    的頭像 發表于 07-23 14:47 ?582次閱讀
    瑞薩RZ/T系列<b class='flag-5'>MPU</b>的中斷重入實現

    HPM SDK 1.6.0 FreeRTOS LTS更改及適配指南

    1、HPM_SDKFreeRTOSLTS特性總覽HPMSDKV1.6.0中FreeRTOS升級前后特性支持對比:特性V10.4.4LTS202210.01中斷搶占√√RISCV浮點擴展
    的頭像 發表于 07-06 08:17 ?3481次閱讀
    HPM SDK 1.6.0 <b class='flag-5'>FreeRTOS</b> LTS更改及適配指南

    實時操作系統之RT-Thread及FreeRTOS

    RT-Thread與其他很多RTOS如FreeRTOS的主要區別之一是,它不僅僅是一個實時內核,還具備豐富的中間層組件,如下圖所示。FreeRTOS和RT-Thread是兩種常見的嵌入式實時操作系統
    的頭像 發表于 05-29 08:10 ?3849次閱讀
    實時操作系統之RT-Thread及<b class='flag-5'>FreeRTOS</b>

    產品簡介 | RZ/A系列MPU

    產品簡介 | RZ/A系列MPU
    的頭像 發表于 05-24 08:06 ?428次閱讀
    產品簡介 | RZ/A系列<b class='flag-5'>MPU</b>

    FreeRTOS的heap_5.c用了系統就啟動不了怎么解決?

    FreeRTOS的heap_5.c是怎么回事啊 用了系統就啟動不了 調度器函數直接返回 這是什么策略? 查了一下百度也沒有相關的說明
    發表于 05-11 06:52

    淺析FreeRTOS任務調度器的三種調度算法和應用

    FreeRTOS在MCU領域應用非常廣泛,今天就給大家講解一下FreeRTOS調度器中的三種調度算法,以及在瑞薩RZ/T2L MPU中的應用。
    的頭像 發表于 05-10 14:02 ?7318次閱讀
    淺析<b class='flag-5'>FreeRTOS</b>任務調度器的三種調度算法和應用

    STM32F76X CUBEMX LAN8742 FreeRTOS Lwip配置Ping不通的原因?如何解決?

    : 使用了TCM,這時如果使用A**線一樣Ping不通。 ETH配置 如圖,直接使能 使用RMII模式 FreeRTOS使能 Lwip使能 開啟回調函數 配置靜態地址 配置LAN8742
    發表于 03-21 06:10

    FreeRTOS內存機制詳解

    FreeRTOS是一種實時操作系統,它提供了多種內存分配方式,包括動態內存分配和靜態內存分配。
    的頭像 發表于 12-31 16:49 ?2685次閱讀
    <b class='flag-5'>FreeRTOS</b>內存機制詳解

    mpu6500和mpu6000哪個好

    mpu6500和mpu6000各有優勢。MPU6500和MPU6000是由英飛凌(InvenSense)公司開發的兩種九軸慣性測量單元(IMU),它們集成了三軸加速度計、三軸陀螺儀和三
    的頭像 發表于 12-27 17:52 ?4071次閱讀
    主站蜘蛛池模板: 亚洲成人黄色在线| 免费国产成人手机在线观看| 国产原创剧情麻豆在线| 国产伦精品一区二区免费| 黑人巨茎vide抽搐| 久久婷婷五月综合色丁香花| 年轻的老师5理伦片| 人妖欧美一区二区三区四区| 色爱AV综合区| 无限资源在线完整高清观看1| 亚洲精品123区在线观看| 在线 国产 欧美 亚洲 天堂 | 日本伦子欲| 小护士大pp| 嘴巴舔着她的私处插| 岛国大片在线观看完整版| 国产视频成人| 老头操美女| 神马电影我不卡4k手机在线观看| 亚洲国产成人爱AV在线播放丿| 中文字幕在线不卡精品视频99| 变形金刚7免费观看完整| 国产午夜精品片一区二区三区| 久久亚洲精品成人| 日本午夜视频在线| 亚洲午夜久久久精品电影院 | 中文字幕AV亚洲精品影视| 成人无码精品一区二区在线观看| 国产在线高清视频无码不卡| 噜噜噜狠狠夜夜躁| 无码人妻精品一区二区蜜桃在线看 | 男人边吃奶边摸边做刺激情话| 特级毛片内射WWW无码| 伊人国产视频| 国产1000部成人免费视频| 久久欧洲AV无码精品色午夜麻豆| 日本九九热在线观看官网| 怡春院国产精品视频| 国产99RE在线观看69热| 美女胸禁止18以下看| 亚洲AV午夜福利精品香蕉麻豆 |