哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS-MPU特性說明

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

掃碼添加小助手

加入工程師交流群

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

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

MPU的策略

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

FreeRTOS-MPU特性

兼容ARM Cortex-M3和Cortex-M4F標(biāo)準(zhǔn)移植。

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

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

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

特權(quán)模式任務(wù)可以將自己設(shè)置為非特權(quán)模式,但一旦進(jìn)入非特權(quán)模式,它就不能再將自己設(shè)置為特權(quán)模式。

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

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

系統(tǒng)外設(shè)只能在微控制器處于特權(quán)模式時(shí)訪問。任何代碼都可以訪問標(biāo)準(zhǔn)外設(shè)(UART等),但是可以使用可定義的內(nèi)存區(qū)域顯式地對其進(jìn)行保護(hù)。

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

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

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

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

任務(wù)堆棧的地址。

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

因此,創(chuàng)建任務(wù)所需的參數(shù)總數(shù)非常大。為了使創(chuàng)建MPU任務(wù)更容易, xTaskCreateRestricted()使用了一個(gè)名為xTaskParameters的參數(shù)結(jié)構(gòu)體,通常定義為結(jié)構(gòu)常量存儲(chǔ)在Flash中,并將該結(jié)構(gòu)地址作為單個(gè)參數(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

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

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

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

運(yùn)行狀態(tài)的任務(wù)可以訪問它自己的棧,但是所有其他的RAM只有當(dāng)運(yùn)行在特權(quán)模式時(shí)才可以訪問。

只有當(dāng)在特權(quán)模式下運(yùn)行時(shí),才能訪問內(nèi)核和系統(tǒng)外設(shè)所在的Flash內(nèi)存區(qū)域。

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

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

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

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

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

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

FreeRTOS-MPUAPI

1、xTaskCreateRestricted()xTaskCreate()的擴(kuò)展版本,用于創(chuàng)建執(zhí)行權(quán)限受限或者內(nèi)存訪問權(quán)限受限的任務(wù)。

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

portBASE_TYPE xTaskCreateRestricted( xTaskParameters *pxTaskDefinition,

xTaskHandle *pxCreatedTask );

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

void vTaskAllocateMPURegions( TaskHandle_t xTaskToModify,

const MemoryRegion_t * const xRegions );

3、特權(quán)模式任務(wù)可以調(diào)用portSWITCH_TO_USER_MODE()將自己設(shè)置為非特權(quán)模式。在非特權(quán)模式下運(yùn)行的任務(wù)不能設(shè)置為特權(quán)模式。

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

文章出處:【微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    49

    文章

    8800

    瀏覽量

    165471
  • MPU
    MPU
    +關(guān)注

    關(guān)注

    0

    文章

    461

    瀏覽量

    51536
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    499

    瀏覽量

    67199
  • Cortex-M3
    +關(guān)注

    關(guān)注

    9

    文章

    276

    瀏覽量

    61779

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

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    探秘MPU/MDU200系列AC - DC電源:特性、參數(shù)與應(yīng)用指南

    探秘MPU/MDU200系列AC - DC電源:特性、參數(shù)與應(yīng)用指南 近期在電源設(shè)計(jì)與應(yīng)用領(lǐng)域,MPU/MDU200系列AC - DC電源產(chǎn)品憑借其出色的性能和廣泛的適用性,吸引了眾多電子工程師
    的頭像 發(fā)表于 04-05 13:55 ?609次閱讀

    Renesas RZ/T2M:高性能MPU的技術(shù)剖析與應(yīng)用指南

    基于Arm架構(gòu)的高端32 64位MPU,憑借其豐富的功能和卓越的性能,在工業(yè)控制、自動(dòng)化等領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力。本文將對RZ/T2M的關(guān)鍵特性、電氣特性以及使用過程中的注意事項(xiàng)進(jìn)行詳細(xì)剖析,為電子
    的頭像 發(fā)表于 04-01 13:50 ?179次閱讀

    RZ/G2UL Group:32&64位MPU的硬件設(shè)計(jì)與特性詳解

    RZ/G2UL Group:3264位MPU的硬件設(shè)計(jì)與特性詳解 在硬件設(shè)計(jì)領(lǐng)域,RZ/G2UL Group的32 64位MPUs(微處理器單元)憑借其卓越的性能和豐富的功能,成為了眾多電子工程師
    的頭像 發(fā)表于 04-01 13:50 ?152次閱讀

    RZ/N2L Group:高性能MPU的技術(shù)剖析與應(yīng)用潛力

    基于Arm架構(gòu)的高端32 64位MPU,具備諸多卓越特性,為電子工程師們帶來了新的設(shè)計(jì)思路和應(yīng)用可能。 文件下載: rzn2l.pdf 一、產(chǎn)品概述 RZ/N2L Group MPU集成了Arm
    的頭像 發(fā)表于 04-01 11:45 ?173次閱讀

    RZ/G3S Group:一款功能強(qiáng)大的MPU芯片全面解析

    系列MPU芯片。這款芯片在設(shè)計(jì)上融合了多種先進(jìn)技術(shù),具備廣泛的應(yīng)用前景,下面讓我們一起詳細(xì)了解它的特點(diǎn)和性能。 文件下載: rzg3s.pdf 1. 芯片總體特性概述 RZ/G3S Group 擁有
    的頭像 發(fā)表于 04-01 11:40 ?145次閱讀

    RZ/T2ME Group:高端32 & 64位MPU的技術(shù)剖析

    出色特性,今天咱們就來深入剖析一番。 文件下載: rzt2me.pdf 一、概述 RZ/T2ME MPU是一款高性能的ASSP,集成了雙Arm Cortex? - R52處理器,還配備了浮點(diǎn)運(yùn)算單元
    的頭像 發(fā)表于 04-01 11:30 ?142次閱讀

    DR1 系列評估板 PS 端裸機(jī)與 FreeRTOS 開發(fā)案例手冊

    本文為創(chuàng)龍科技DR1 系列評估板 PS 端裸機(jī)與 FreeRTOS 開發(fā)指南,涵蓋三大核心案例與雙開發(fā)模式實(shí)現(xiàn)。核心內(nèi)容包括 LED 定時(shí)閃爍、按鍵控制 LED 亮滅、串口數(shù)據(jù)回顯功能,詳細(xì)說明工程
    的頭像 發(fā)表于 01-19 17:12 ?283次閱讀
    DR1 系列評估板 PS 端裸機(jī)與 <b class='flag-5'>FreeRTOS</b> 開發(fā)案例手冊

    RZ/T2M MPU:工業(yè)控制與自動(dòng)化應(yīng)用的理想之選

    MPU憑借其卓越的性能、豐富的功能和廣泛的應(yīng)用場景,成為了眾多工程師的首選。本文將深入剖析RZ/T2M MPU特性、功能以及應(yīng)用,為電子工程師們提供全面的參考。 文件下載: Renesas
    的頭像 發(fā)表于 12-29 16:30 ?513次閱讀

    ucos與freertos哪個(gè)好?

    ,FreeRTOS是一個(gè)不錯(cuò)的選擇。 如果項(xiàng)目需要更高級的特性和組件,或者愿意為使用RTOS支付費(fèi)用以獲得更豐富的功能和更強(qiáng)大的可擴(kuò)展性,uCOS可能更適合。 最終的選擇應(yīng)基于項(xiàng)目的具體需求和資源限制進(jìn)行評估。
    發(fā)表于 12-05 07:13

    FreeRTOS 空閑任務(wù)

    FreeRTOS 中很多人會(huì)注意到為什么有一個(gè)叫IDLE task的任務(wù)占用了CPU百分之九十多的使用權(quán),但是這個(gè)任務(wù)并沒有自己手動(dòng)創(chuàng)建。原因就是這個(gè)空閑任務(wù)是系統(tǒng)自己創(chuàng)建的,每當(dāng)系統(tǒng)沒有其他任務(wù)要運(yùn)行時(shí)
    發(fā)表于 12-04 07:35

    FreeRTOS和uC/OS-II的功能特性

    。 多核支持 (FreeRTOS SMP): 有官方對稱多處理 (SMP) 版本,支持多核處理器。 MPU 支持: 支持內(nèi)存保護(hù)單元 (MPU),用于任務(wù)隔離和提升可靠性/安全性。 POSIX 兼容層
    發(fā)表于 11-17 08:17

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

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

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

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

    邊緣AI MPU深度盤點(diǎn):品牌、型號與技術(shù)特性全解析

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

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

    電子發(fā)燒友網(wǎng)站提供《MPU-6000和MPU-6050產(chǎn)品規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 04-29 16:52 ?3次下載
    祁东县| 南昌县| 保康县| 宾阳县| 浠水县| 桦川县| 景宁| 芜湖市| 买车| 含山县| 富蕴县| 沁阳市| 达尔| 通山县| 荃湾区| 广德县| 元谋县| 彰化市| 卢氏县| 乃东县| 葫芦岛市| 万宁市| 云林县| 朝阳县| 获嘉县| 曲松县| 台北市| 黎城县| 松江区| 金乡县| 申扎县| 西宁市| 肃宁县| 南通市| 江西省| 临颍县| 芦山县| 楚雄市| 那曲县| 临沧市| 乌鲁木齐县|