女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

使用Cortex-M v7 MPU以實現現代嵌入式系統

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Micro Digital ? 2022-06-09 17:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Cortex-M v7 內存保護單元 (MPU) 很難使用,但它是 Cortex-M3、-M4 和 -M7 處理器可用的硬件內存保護的主要手段。這些處理器廣泛用于中小型嵌入式系統。因此,學習有效地使用 Cortex-M v7 MPU 以實現現代嵌入式系統所需的可靠性、安全性和安全性非常重要。

以前的博客介紹了 MPU和術語、MPU 多任務處理和定義 MPU 區域。在第一篇博客中,定義了特權任務 ( ptasks) 和非特權任務 ( utasks)。前者以特權線程模式運行,后者以非特權線程模式運行[2]。任務的模式umode由其任務控制回(TCB)中的標志確定,并在實時操作系統(RTOS)調度程序調度時生效。umode可以在創建任務后隨時設置標志pmode。

ptasks可以直接調用系統服務,但是utasks不能。有兩個原因:

保護 RTOS 及其數據免受utasks. 這可能是未知譜系的軟件 (SOUP),或者它可能容易受到惡意軟件的攻擊(例如,TCP/IP 堆棧)。

限制此軟件可以使用的 RTOS 服務。不希望utasks能夠執行可能損害正常系統操作的操作,例如斷電或刪除任務。

本博客討論了實現上述保護的機制。應該注意的是,MPU 安全性的主要目標是將盡可能多的應用程序代碼放入utasks.

utask MPA 地區

每個任務都有自己的內存保護數組 (MPA),它是從 MPA 模板初始化的。一個utask(例如ut2a)的典型 MPA 模板如下:

poYBAGKhu7iAfH8uAAGRE4WhScc353.png

該模板在創建任務后加載到任務的 MPA 中,然后在分派該任務時加載到 MPU 中。MPA[0]任務堆棧的區域是在任務首次啟動時定義并放入的。因此,上面utask可以訪問它自己的堆棧、它自己的代碼和數據區域、公共代碼和數據區域,而沒有其他任何東西。區域 5、6 和 7 被禁用或特權。因此,這utask被阻止直接訪問系統服務和數據。后者適用于 all utasks,盡管它們的模板可能不同。

umode 服務

utasks必須使用軟件中斷 (SWI) 應用程序編程接口 (API) 來訪問系統服務,并且他們永遠無法直接訪問系統數據。此外,只有不受限制的系統服務才能被utasks. 這些障礙有助于保護操作系統 (OS) 免受不受信任的代碼的影響。

SWI API 是通過 Cortex-M SVC 指令“ SVC n”實現的,其中n指定要執行的系統服務。

對于 smx RTOS 內核,頭文件 ,xapi.h包含所有 smx 服務的原型函數。在開頭包含此文件pcode允許它訪問其中任何一個。對于ucode,xapiu.h被定義。它由 。 中允許的系統服務的映射宏組成umode。例如:

pYYBAGKhu5KAACnTAAA680Xm4HM785.png

這個宏覆蓋了函數原型,xapi.h因此對于應用程序模塊的其余部分,它不是直接調用系統服務,而是調用一個 shell 函數:

pYYBAGKhu5iAQ3zAAABaFHMjhxM187.png

該外殼函數用于調用n == ID系統服務的 SVC 指令。NI(Not Inline) 是一個由編譯器阻止函數內聯的宏。請注意,shell 函數具有相同的名稱,只是它的前綴smxu_不是smx_. 貝殼位于該ucom_code區域中,因此它們可以通過utasks.

應用程序模塊可以以pcode開頭ucode,也可以完全是pcode或ucode。無論哪種方式,ucode都以:

poYBAGKhu56AYBiiAAAw5iEyBMY249.png

在那之后不能直接調用任何系統服務。以上所有內容都是在編譯時完成的,因此變成了硬編碼,因此可以抵抗惡意軟件和錯誤,特別是如果代碼位于 ROM 中。

混合pcode/ucode模塊很方便,因為系統的功能部分通常會有一個根任務,它是一個ptask為該部分創建、初始化和啟動所有其他任務的任務,其中大部分可能是utasks. 因此,所有相關的任務都可以放在一起。內在的想法是系統部分的某些任務可能是執行關鍵任務功能的精心構建的任務。這些任務可能是ptasks。系統部分的其他任務可能正在執行非關鍵功能,例如收集要發送到云的統計信息。這些將是utasks.

有些任務可能會隨著項目的發展而開始存在ptasks并被遷移到。utasks通常更容易在其中調試代碼pmode然后將其移至umode. 此外,任務可以啟動ptasks并執行pcode,設置自己的umode標志,然后重新啟動自己utasks并執行ucode。

另一個有趣的特性是xapiu.h可以部署多個文件并由不同的utasks. 這允許不同級別的信任。因此,與可信度較低的任務相比,可信度更高的任務可以訪問更多的 RTOS 服務。這允許收緊 SOUP 或高度易受攻擊的任務的絞索。但是,這僅在編譯時有效。為了防止惡意軟件,還需要有對應于不同xapiu.h文件的不同跳轉表(參見下面的圖 5)以及為每個任務選擇跳轉表的機制。

utask服務調用機制

如上所述,軟件中斷 API 的基本概念非常簡單。但是當調用的系統服務可能導致任務切換時,事情就變得更加復雜了——尤其是對于 Cortex-M 架構,它要求 RTOS 調度程序駐留在PendSV_Handler. 同樣復雜的是,處理程序以特權模式運行并使用系統堆棧 (SS)[3] 而不是當前的任務堆棧 TS。

如下圖所示,SVC_Handler()由 SVC 指令調用并以處理程序模式運行:

poYBAGKhu6SAU26XAACFXiExuEE915.png

開始運行時,由于處理器堆疊SVC_Handler(),系統服務參數處于 TS 中。處理程序將參數 0 到 3 移動到thru中,并將第 5 個參數(如果有)移動到系統堆棧的頂部,SS(這是系統服務期望找到這些參數的地方)。然后通過跳轉表調用系統服務(SSR),使用傳遞給它的索引(ID)(見上文)。r0r3SVC_Handler()ssrt[]n

系統服務正常執行并返回SVC_Handler(),將系統服務返回值從r0TS 移動到正確位置。處理器執行的處理程序返回操作將TS 中所有堆疊的寄存器取消堆疊,因此返回值以r0.

如果系統服務導致任務調度程序需要運行 ( sched 》 0) 或中斷導致鏈接服務例程 (LSR) 調度程序需要運行 ( lqctr 》 0),PendSV_Handler() 則將被掛起。在這種情況下,處理器尾鏈 [4] 從SVC_Handler()到PendSV_Handler(由圖中的虛線所示),而不是返回到utask.

在這種情況下,控制不會返回到utask尚未調用的點,而是返回到在PendSV_Handler()。 這可能會導致當前任務被掛起,而另一個任務被恢復運行(如圖右側所示)。搶占任務可以是 autask或 a ptask。最終,掛起的utask將被恢復、取消堆棧,并從調用點繼續運行,前提是它沒有被搶占任務停止或刪除。(注意:以上所有操作都是在特權模式下完成的,因此可以防止受到感染的惡意軟件的侵害ucode。)

ptask服務調用機制

相比之下,下圖顯示了從ptask.

pYYBAGKhu6qAGjaGAACHcwOkSMQ318.png

請注意,這更簡單(更快):SVC_Handler()不涉及。ptask直接調用系統服務,如果設置sched,PendSV_Handler()則掛起。從那里開始,操作與 a 的操作相同utask。

交叉操作

無論系統服務是從utasks還是調用,系統服務的操作都是一樣的ptasks。例如,autask可以測試一個信號量并在它上面掛起。Aptask可以發出信號量并且utask將恢復。或相反亦然。Aptask可能具有比 a 更高或更低的優先級utask,調度程序將根據其優先級調度它(特權在這里沒有優先級!)。不同的是,ptask執行受信任的代碼 ( pcode) 并且通常可以完全訪問內存、外圍設備和系統服務,而utask執行非特權代碼 ( ucode) 并且只能訪問 MPU 允許的內容。此外,MPU 只能通過 更改pcode。

以免擔心ptasks不受約束的代理,請注意,即使啟用了后臺區域,也可以阻止通過 MPU 訪問區域。因此,對一個任務進行讀/寫 (RW) 的區域可能對另一個任務是只讀 (RO) 并且從不對兩者執行 (XN)。另一方面,ptasks確實可以直接訪問所有 smx 服務。隨著系統安全性的加強,應考慮限制ptasks以及utasks.

審核編輯:郭婷

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

    關注

    68

    文章

    19885

    瀏覽量

    235058
  • 嵌入式
    +關注

    關注

    5149

    文章

    19659

    瀏覽量

    317352
  • API
    API
    +關注

    關注

    2

    文章

    1609

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux嵌入式和單片機嵌入式的區別?

    Linux嵌入式與單片機嵌入式在多個方面存在顯著的區別,以下是詳細的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統運行在
    發表于 06-20 09:46

    嵌入式開發入門指南:從零開始學習嵌入式

    開發(設備驅動、內核編譯) 4. 推薦的學習資源書籍:《嵌入式系統軟件設計基礎》《ARM Cortex-M系列嵌入式開發》在線課程:慕課網、B站嵌入
    發表于 05-15 09:29

    RZ/V2N中檔嵌入式AI MPU 數據手冊和產品介紹

    Renesas Electronics RZ/V2N中檔嵌入式AI微處理器 (MPU) 設計用于提供強大的人工智能 (AI)性能和出色的效率,非常適用于需要先進嵌入式處理能力的應用。R
    的頭像 發表于 05-08 18:40 ?619次閱讀
    RZ/<b class='flag-5'>V</b>2N中檔<b class='flag-5'>嵌入式</b>AI <b class='flag-5'>MPU</b> 數據手冊和產品介紹

    MPU嵌入式系統中的應用

    一、MPU的基本功能 微處理器單元(MPU)是嵌入式系統中的大腦,負責執行程序指令、處理數據和控制其他硬件設備。MPU的基本功能包括: 指令
    的頭像 發表于 01-08 09:26 ?895次閱讀

    ARM嵌入式實時操作系統比較

    嵌入式系統領域,實時操作系統(RTOS)是確保任務按時完成的關鍵技術。ARM架構因其低功耗、高性能的特點,在嵌入式系統中得到了廣泛應用。本
    的頭像 發表于 12-28 09:15 ?1400次閱讀

    如何使用Ozone分析Cortex-M異常

    Ozone可以幫助用戶快速分析和查找導致CPU故障的軟件bug。本文解釋如何使用Ozone的調試功能,深入了解Cortex-M架構上的這些錯誤。
    的頭像 發表于 11-29 11:14 ?1682次閱讀
    如何使用Ozone分析<b class='flag-5'>Cortex-M</b>異常

    嵌入式系統與物聯網的結合

    隨著科技的飛速發展,嵌入式系統和物聯網(IoT)已經成為現代技術領域的重要組成部分。嵌入式系統是指嵌入
    的頭像 發表于 11-06 10:23 ?1105次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    現代科技浪潮中,嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式
    的頭像 發表于 10-16 10:14 ?2592次閱讀

    嵌入式系統的硬件架構

    嵌入式系統是一種專用的計算機系統,它以應用為中心,現代計算機技術為基礎,能夠根據用戶的具體需求(如功能、可靠性、成本、體積、功耗、環境等)
    的頭像 發表于 09-29 16:29 ?1001次閱讀

    嵌入式系統的未來趨勢有哪些?

    智能家居領域,嵌入式系統可以集成語音識別和自然語言處理技術,去實現智能家電的語音控制。 2. 更強大的處理能力 在未來的嵌入式系統將具備更加
    發表于 09-12 15:42

    ARM MCU嵌入式開發 | 基于國產GD32F10x芯片+嵌入的開始

    ,其低功耗和高效能的特點使其成為嵌入式系統和移動設備的首選。ARM處理器架構包括Cortex-A、Cortex-R和Cortex-M系列,廣
    發表于 09-09 14:48

    七大嵌入式GUI盤點

    采用純C語言開發。它的作者是來自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C語言編寫,實現最大的兼容性(與C++兼容),模擬器可在沒有嵌入式硬件的PC上啟動
    發表于 09-02 10:58

    瑞薩電子基于Arm Cortex-A55和雙Cortex-M33 MPU的SOM方案 加速物聯網設計

    隨著工業物聯網技術的不斷發展,數以億計的嵌入式設備實現了無縫互聯。在這宏大圖景中,網關作為連接設備與網絡的核心樞紐,重要性不言而喻。為滿足市場對高性能、高安全性以及高靈活性的工業網關需求,瑞薩推出
    的頭像 發表于 08-15 17:23 ?2403次閱讀
    瑞薩電子基于Arm <b class='flag-5'>Cortex</b>-A55和雙<b class='flag-5'>Cortex-M</b>33 <b class='flag-5'>MPU</b>的SOM方案 加速物聯網設計

    【出版發行】嵌入式系統原理與開發——基于RISC-V和Linux系統

    【出版發行】嵌入式系統原理與開發——基于RISC-V和Linux系統
    的頭像 發表于 07-26 08:36 ?671次閱讀
    【出版發行】<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>原理與開發——基于RISC-<b class='flag-5'>V</b>和Linux<b class='flag-5'>系統</b>

    專家力薦|《嵌入式系統原理與開發——基于RISC-V和Linux系統》新書發售

    當前,嵌入式系統已成為智能設備的核心之一,RISC-V+Linux的開源力量為嵌入式系統注入強大的創新動力。作為中國RISC-
    的頭像 發表于 07-24 08:20 ?1098次閱讀
    專家力薦|《<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>原理與開發——基于RISC-<b class='flag-5'>V</b>和Linux<b class='flag-5'>系統</b>》新書發售