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

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

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

基于MCU的設(shè)備開(kāi)發(fā)安全的RTOS

要長(zhǎng)高 ? 來(lái)源:embedded ? 作者:Ralph Moore ? 2023-09-29 10:53 ? 次閱讀

作者:Ralph Moore

現(xiàn)在,網(wǎng)絡(luò)釣魚(yú)、弱密碼、身份驗(yàn)證不足和特權(quán)執(zhí)行不力等唾手可得的成果正在消失,黑客被迫尋找滲透公司網(wǎng)絡(luò)和設(shè)備的新方法。目前連接到企業(yè)網(wǎng)絡(luò)的大量完全易受攻擊的設(shè)備為此提供了肥沃的機(jī)會(huì)。到目前為止,設(shè)備安全性已經(jīng)得到了很多討論,但很少采取行動(dòng)。這種情況即將改變。

在過(guò)去的幾年里,我們一直致力于為基于MCU的設(shè)備開(kāi)發(fā)安全的RTOS,特別是Cortex-v7M和v8M。該RTOS具有許多創(chuàng)新功能來(lái)遏制和限制安全漏洞。本文的目的是介紹這些功能,并說(shuō)明通過(guò)使用它們可以實(shí)現(xiàn)高度安全的設(shè)備。

SecureSMX 基于 smx 實(shí)時(shí)、多任務(wù)內(nèi)核,該內(nèi)核在過(guò)去 30 年中為數(shù)百個(gè)嵌入式系統(tǒng)提供了可靠的操作。它提供靈活而廣泛的解決方案,使OEM能夠在合理的時(shí)間和成本限制內(nèi)將有效的安全保護(hù)整合到其嵌入式物聯(lián)網(wǎng)設(shè)備中。這種安全性的基礎(chǔ)是隔離分區(qū),這對(duì)于此類系統(tǒng)來(lái)說(shuō)并不容易實(shí)現(xiàn)。分區(qū)有許多優(yōu)點(diǎn):

允許硬件強(qiáng)制分離特權(quán)和非特權(quán)代碼,并控制對(duì)系統(tǒng)服務(wù)、數(shù)據(jù)、內(nèi)存區(qū)域和 I/O 寄存器的訪問(wèn)。

使其他保護(hù)成為可能,例如運(yùn)行時(shí)限制和限制對(duì)對(duì)象的訪問(wèn)。如果沒(méi)有硬件強(qiáng)制分區(qū),則可以輕松繞過(guò)此類限制。

允許將稀缺的程序員人才集中在加強(qiáng)最關(guān)鍵的分區(qū)上。

防范零日漏洞。這些通常賣得很多錢(qián),是國(guó)家安全機(jī)構(gòu)嚴(yán)密保護(hù)的秘密[參考文獻(xiàn)1]。但是,黑客也可以使用未修補(bǔ)的已知漏洞,因?yàn)闊o(wú)論哪種方式,他最終都會(huì)進(jìn)入一個(gè)孤立的分區(qū),在不碰到絆線的情況下,他可以做的事情受到很大限制。如果非關(guān)鍵分區(qū)已被滲透,系統(tǒng)將繼續(xù)執(zhí)行其基本功能。這使安全團(tuán)隊(duì)有時(shí)間解決問(wèn)題,而不是總是追趕。

使用定義良好的接口的模塊化代碼的良好編程實(shí)踐的硬件實(shí)施。這不僅可以生成更高質(zhì)量的代碼,還可以縮短集成和調(diào)試時(shí)間。

僅分區(qū)恢復(fù)。當(dāng)黑客觸發(fā)眾多檢查中的任何一項(xiàng)時(shí),會(huì)立即發(fā)生內(nèi)存管理故障 (MMF) 異常。這可用于關(guān)閉分區(qū),然后重新初始化它。這比重新啟動(dòng)整個(gè)系統(tǒng)更可取,因?yàn)樗粫?huì)停止正常運(yùn)行。

僅分區(qū)更新。如果沒(méi)有其他移動(dòng),則可以單獨(dú)更新分區(qū)。這樣就無(wú)需將任務(wù)關(guān)鍵型代碼暴露給內(nèi)部攻擊。更新僅限于受到攻擊的易受攻擊的分區(qū)。舊代碼和受信任的代碼通常已經(jīng)過(guò)詳盡的測(cè)試,很少需要更新。內(nèi)部攻擊是一個(gè)比人們普遍認(rèn)為的更大的問(wèn)題[參考文獻(xiàn)2]。

沒(méi)有安全性是完美的。但是,為系統(tǒng)添加安全性可以減輕損害和潛在責(zé)任。

目標(biāo)

這種安全的實(shí)時(shí)操作系統(tǒng)既旨在促進(jìn)現(xiàn)有系統(tǒng)的安全改進(jìn),也旨在作為新系統(tǒng)的安全基礎(chǔ)。開(kāi)發(fā)人員可以根據(jù)需要使用盡可能多或盡可能少的功能。易受攻擊的代碼(如開(kāi)源 [Ref 3] 或網(wǎng)絡(luò)堆棧和新開(kāi)發(fā)的軟件包)可以通過(guò)一系列定義明確的步驟與系統(tǒng)的其余部分隔離。隔離可以根據(jù)需要盡可能強(qiáng),如果需要,可以施加限制。同時(shí),系統(tǒng)的其余部分可以繼續(xù)按原樣運(yùn)行,基本上保持不變。因此,對(duì)于開(kāi)始被黑客入侵的現(xiàn)有系統(tǒng),有一個(gè)解決方案。

操作

SecureSMX利用Cortex-v7M和v8M架構(gòu)的所有硬件安全功能,除了它不需要TrustZone。重要的是將操作硬件分離為處理程序模式 (hmode)、特權(quán)任務(wù)模式 (pmode) 和非特權(quán)任務(wù)模式 (umode)。內(nèi)存保護(hù)單元 (MPU) 用于限制每個(gè)任務(wù)可以訪問(wèn)的內(nèi)存。SVC 指令用于允許 umode 任務(wù)訪問(wèn)系統(tǒng)服務(wù)。背景區(qū)域 (BR) 僅在 hmode 中使用。

目前典型的嵌入式系統(tǒng)完全在hmode下運(yùn)行。第一步是將代碼分為在 pmode 中運(yùn)行的任務(wù)(ptasks)和系統(tǒng)服務(wù)(例如 RTOS)、異常處理程序和在 hmode 中運(yùn)行的 ISR。任務(wù)在啟用 MPU 和禁用 BR 的情況下運(yùn)行。每個(gè) ptask 都可以有一個(gè)唯一的內(nèi)存保護(hù)陣列 (MPA),當(dāng) ptask 開(kāi)始運(yùn)行時(shí),該陣列會(huì)加載到 MPU 中。或者,任務(wù)可以使用默認(rèn)的 MPA。此時(shí),任務(wù)之間會(huì)獲得一些隔離,具體取決于每個(gè)任務(wù)具有自己的 MPA 的程度以及 MPA 區(qū)域定義的緊密程度。為了實(shí)現(xiàn)更大的隔離,可以將任務(wù)移動(dòng)到 umode。然后,系統(tǒng)的所有其余部分都受到硬件強(qiáng)制 pmode 屏障的保護(hù)。

wKgaomUFUbWAU9z2AAHUgnhA_Fs409.png

分區(qū)應(yīng)用程序

什么是分區(qū)?

分區(qū)由它們包含的一個(gè)或多個(gè)任務(wù)定義。他們沒(méi)有控制塊。通常,分區(qū)對(duì)應(yīng)于系統(tǒng)的邏輯部分,通常稱為模塊,例如文件系統(tǒng)。像這樣的分區(qū)通常有一個(gè)頂級(jí)任務(wù)和一個(gè)或兩個(gè)子任務(wù)來(lái)幫助它。但是,根據(jù)特定系統(tǒng),分區(qū)可以由多個(gè)頂級(jí)任務(wù)組成,并且可以包括多個(gè)模塊。例如,在給定的系統(tǒng)中,所有中間件或所有 utask 都可以合并到單個(gè)分區(qū)中。分區(qū)靈活性允許在投入的工作量和實(shí)現(xiàn)的安全性之間實(shí)現(xiàn)最佳權(quán)衡。

v7M 分區(qū)

眾所周知,Cortex-v7M MCU 的分區(qū)很難實(shí)現(xiàn),因?yàn)?v7M MPU 要求每個(gè)區(qū)域大小是 7 的冪,并且要與其大小保持一致。顯然,這可能導(dǎo)致嚴(yán)重的內(nèi)存浪費(fèi),并導(dǎo)致v4M MPU在很大程度上被嵌入式軟件社區(qū)拒絕[參考文獻(xiàn)《》]。對(duì)于安全MCU設(shè)計(jì)來(lái)說(shuō),這是一個(gè)不幸的挫折。但是,我們發(fā)現(xiàn)了許多克服此問(wèn)題的方法,這些方法已合并到我們的新RTOS中。以下段落詳細(xì)描述了這些方法,以便呈現(xiàn)令人信服的圖片。

定義節(jié)

系統(tǒng)中的每個(gè)任務(wù)都需要為其使用的每個(gè)活動(dòng) MPU 插槽提供一個(gè)區(qū)域。通常所有 MPU 插槽都處于活動(dòng)狀態(tài),因此每個(gè)任務(wù)需要 8 個(gè)區(qū)域。盡管某些區(qū)域可能在任務(wù)之間共享,但通常需要為典型系統(tǒng)定義大量區(qū)域。區(qū)域的定義始于在代碼中使用雜注 [腳注 i] 來(lái)定義包含在區(qū)域(例如.sys_data)中的部分(例如.sys_bss和.sys_data)。區(qū)域的各個(gè)部分可能分布在多個(gè)模塊中,但鏈接器將區(qū)域的所有部分合并到單個(gè)區(qū)域塊中。

鏈接器命令文件

我們開(kāi)發(fā)了一種簡(jiǎn)單的方法來(lái)創(chuàng)建 v7M 鏈接器命令文件。在其頂部,系統(tǒng)的所有區(qū)域的大小都以十六進(jìn)制定義。要成為 1 的冪,區(qū)域大小必須只有一個(gè)非零數(shù)字,并且該數(shù)字必須是 2、4、8 或 5。因此,很容易避免區(qū)域大小錯(cuò)誤。在區(qū)域大小下方,每個(gè)區(qū)域塊的大小 = region_size*8/6、8/7、8/8 或 8/1,其對(duì)齊方式 = region_size,以及它包含的部分。這種方法的一個(gè)很好的功能是,在開(kāi)發(fā)過(guò)程中,當(dāng)鏈接器報(bào)告某個(gè)區(qū)域已被超出時(shí),將其大小提高 8/5 或上升到下一個(gè) 8*8/8 的冪(如果它已經(jīng)是 《》/《》)是一件簡(jiǎn)單的事情。

模板、內(nèi)存保護(hù)陣列和任務(wù)

海洋保護(hù)區(qū)模板

每個(gè)任務(wù)都有一個(gè)內(nèi)存保護(hù)陣列、MPA 或默認(rèn) MPA,在調(diào)度任務(wù)時(shí)將其加載到 MPU 中。任務(wù)的 MPA 是在創(chuàng)建任務(wù)后從其 MPA 模板生成的。任務(wù)可以有自己的 MPA 模板,也可以與其他任務(wù)共享一個(gè)模板。MPA 模板是使用特殊宏定義的,這些宏允許每行定義一個(gè)由 RBAR、RASR 和 region_name組成的區(qū)域。(region_name僅在調(diào)試期間使用。子區(qū)域禁用是根據(jù)區(qū)域塊大小自動(dòng)生成的(例如,如果區(qū)域塊大小 = region_size*5/8,則設(shè)置 SRD 5、6 和 7)。這避免了用戶的復(fù)雜性,同時(shí)最大限度地減少了區(qū)域大小。

縮小區(qū)域之間的差距

鏈接器按指定的順序?qū)^(qū)域塊分配給內(nèi)存。這可能會(huì)導(dǎo)致塊之間出現(xiàn)較大的間隙,從而浪費(fèi)大量?jī)?nèi)存。為了解決這個(gè)問(wèn)題,運(yùn)行 MPUPacker? 以找到區(qū)域塊的最佳排序。然后更改順序以匹配鏈接器命令文件中,并再次運(yùn)行鏈接器。為了幫助將代碼和數(shù)據(jù)分配給區(qū)域,可以運(yùn)行 MPUMapper? 來(lái)修改映射文件以顯示每個(gè)符號(hào)所在的區(qū)域。這在開(kāi)發(fā)過(guò)程中非常有幫助,可以修復(fù) MMF 并檢查系統(tǒng)是否分區(qū)良好。

一般來(lái)說(shuō),我們發(fā)現(xiàn)內(nèi)存浪費(fèi)可以保持在 20% 以下,通常是 10%。如果需要,還可以使用其他方法來(lái)減少內(nèi)存浪費(fèi)。但是,如果有足夠的內(nèi)存,則在分區(qū)之間分布未使用的內(nèi)存是有利的,因?yàn)檫@有助于僅分區(qū)更新。

v8M 分區(qū)

Cortex-v8M 解決了區(qū)域問(wèn)題,只要求區(qū)域是 32 字節(jié)的倍數(shù),并在 32 字節(jié)邊界上對(duì)齊。因此,上述許多措施對(duì)于v8M不是必需的,盡管基本方法是相同的。然而,v8M 引入了一個(gè)新問(wèn)題:如果分區(qū)重疊,就會(huì)發(fā)生 MMF。這為任務(wù)堆棧、PMSG 和動(dòng)態(tài)區(qū)域創(chuàng)造了一個(gè)致命弱點(diǎn)??梢酝ㄟ^(guò)從與主堆不同的堆中分配它們來(lái)解決,但需要努力避免被這種不必要的體系結(jié)構(gòu)缺陷所捕獲。

來(lái)自 umode 的系統(tǒng)服務(wù)

來(lái)自 umode 的系統(tǒng)服務(wù)

ptasks 可以進(jìn)行直接系統(tǒng)調(diào)用,因?yàn)樗鼈冊(cè)谄?MPA 中具有sys_code和sys_data區(qū)域。這些區(qū)域?qū)⑻鎿Q為 utask 的 ucom_code 和 ucom_data,這些區(qū)域無(wú)法進(jìn)行直接的系統(tǒng)服務(wù)調(diào)用。相反,utasks 必須使用由 SVC n 指令觸發(fā)的 SVC 異常,其中 n 表示 256 個(gè)服務(wù)調(diào)用之一。utask 代碼中包含了一個(gè)特殊的頭文件,用于將服務(wù)調(diào)用映射到具有相似名稱的 shell 函數(shù)。枚舉定義 n 的值,SVC 處理程序 SVCH() 使用相同順序的跳轉(zhuǎn)表跳轉(zhuǎn)到所需的服務(wù)調(diào)用。對(duì)于每個(gè)調(diào)用 SVC n 的系統(tǒng)服務(wù),ucom_code都有一個(gè) shell 函數(shù),其值由枚舉定義。此系統(tǒng)可以輕松添加或刪除服務(wù)呼叫。

當(dāng) SVC n 執(zhí)行時(shí),它會(huì)導(dǎo)致創(chuàng)建異常幀,切換到 hmode,切換到主堆棧,并啟動(dòng) SVCH()。SVCH() 從異常幀重新加載 r0-r3,將參數(shù) 5 及以上從任務(wù)棧復(fù)制到主棧,并通過(guò)跳轉(zhuǎn)表(在 sys_code 中)調(diào)用系統(tǒng)服務(wù)。當(dāng)系統(tǒng)服務(wù)完成時(shí),SVCH() 會(huì)進(jìn)行一些調(diào)整,然后將異常返回到調(diào)用點(diǎn)。返回值(如果有)在 r0 中。除了生成故障異常之外,這是 utask 可以在 hmode 中訪問(wèn)代碼的唯一方法。

來(lái)自 umode 的系統(tǒng)調(diào)用開(kāi)銷相當(dāng)小,并且不會(huì)顯著影響系統(tǒng)性能,因?yàn)橄到y(tǒng)調(diào)用不頻繁。明顯有害的系統(tǒng)調(diào)用無(wú)法通過(guò) SVC n 使用。在某些情況下,從 umode 調(diào)用時(shí),系統(tǒng)調(diào)用的有害部分會(huì)被禁止。此外,某些服務(wù)(如中斷啟用和禁用)無(wú)法從 umode 工作。中斷禁用和啟用必須替換為中斷掩碼和取消掩碼,并提供一種方法來(lái)限制可以從 utask 中屏蔽或取消屏蔽哪些 IRQ。

通常,umode 分區(qū)將僅使用少量的系統(tǒng)服務(wù)調(diào)用。因此,提供了一種方法,允許為分區(qū)定義自定義枚舉、自定義跳轉(zhuǎn)表和自定義 shell 函數(shù)。這通過(guò)最大限度地減少對(duì)ucom_code的訪問(wèn)來(lái)改善隔離。一般來(lái)說(shuō),標(biāo)準(zhǔn)的枚舉、跳轉(zhuǎn)表和 shell 函數(shù)應(yīng)該縮減到 umode 分區(qū)實(shí)際需要的,從而節(jié)省內(nèi)存并提高安全性。

雖然沒(méi)有必要,但 ptasks 也可以訪問(wèn)系統(tǒng)服務(wù)的 SVCH(),而不是直接調(diào)用。這在 pmode 到 umode 的轉(zhuǎn)換過(guò)程中提供了一個(gè)步驟。

任務(wù) vs. u任務(wù)

支持 PTASKS 主要是為了簡(jiǎn)化將分區(qū)從 PMODE 移動(dòng)到 uMode 的過(guò)程。但是,它們可以與提高系統(tǒng)可靠性的utask一樣有效。將任務(wù)轉(zhuǎn)換為 ptasks 后,通過(guò)分配 MPA,可能會(huì)出現(xiàn)潛在的錯(cuò)誤,例如未初始化的指針、堆棧溢出等。

為了安全起見(jiàn),utasks比ptasks更好。這是因?yàn)槿绻粋€(gè)任務(wù)被穿透,只需要一條指令就可以關(guān)閉MPU。這在 umode 中是不可能的,因此 umode 提供了更強(qiáng)的安全性。此外,pmode 屏障使得幾乎不可能從 umode 訪問(wèn) pmode 和 hmode。

門(mén)戶

為了實(shí)現(xiàn)完全分區(qū)隔離,有必要引入門(mén)戶。這是因?yàn)楹瘮?shù) API 要求函數(shù)本身可供用戶訪問(wèn),這違反了隔離。

門(mén)戶提供間接 API,用于將一個(gè)分區(qū)中的服務(wù)與其他分區(qū)中的調(diào)用方隔離。調(diào)用照常進(jìn)行,但它們使用 smx 消息來(lái)指示服務(wù)器任務(wù)執(zhí)行服務(wù)并通過(guò)門(mén)戶返回結(jié)果。

SMX 消息由鏈接到包含實(shí)際消息的數(shù)據(jù)塊的消息控制塊 (MCB) 組成。消息可以發(fā)送到任務(wù)可以等待的消息交換??梢詮南⒌却南⒔粨Q接收它們。消息可以具有優(yōu)先級(jí),并且可以按優(yōu)先級(jí)順序在交易所排隊(duì)。因此,優(yōu)先級(jí)較高的消息可以繞過(guò)優(yōu)先級(jí)較低的消息。交換處的郵件隊(duì)列可以用作服務(wù)器的工作隊(duì)列。

受保護(hù)的郵件 (PMSG)

對(duì)于門(mén)戶,區(qū)域信息將添加到消息中,從而創(chuàng)建所謂的受保護(hù)消息 pmsg。當(dāng)收到 pmsg 時(shí),其區(qū)域?qū)⒓虞d到 MPU 中的空插槽中,以及接收任務(wù)的 MPA。這允許任務(wù)訪問(wèn)數(shù)據(jù)塊,但不能訪問(wèn)sys_data中的 MCB。對(duì)于門(mén)戶,接收任務(wù)稱為服務(wù)器,發(fā)送任務(wù)稱為客戶端。通常,一臺(tái)服務(wù)器可能有許多客戶端??蛻舳丝梢越o pmsg 一個(gè)優(yōu)先級(jí),當(dāng)服務(wù)器接受 pmsg 時(shí),這個(gè)優(yōu)先級(jí)將傳遞給服務(wù)器。

創(chuàng)建門(mén)戶時(shí),將為其提供允許訪問(wèn)門(mén)戶的客戶端列表。創(chuàng)建過(guò)程初始化服務(wù)器控制結(jié)構(gòu),并將門(mén)戶交換句柄和門(mén)戶名稱加載到每個(gè)客戶端結(jié)構(gòu)中。只有這些客戶端可以訪問(wèn)門(mén)戶,因?yàn)橹挥兴麄冎缹?pmsg 發(fā)送到哪里。

提供兩種類型的門(mén)戶:

免費(fèi)消息門(mén)戶

免費(fèi)消息門(mén)戶

For this portal when a message is sent, the exchange becomes its owner, and then the server becomes its owner when the message is received. When sent, the pmsg region is cleared in the MPU and in the client’s MPA. Thereafter, the client cannot access nor alter the message. When the server is done, it sends the pmsg to a reply exchange from which the client may retrieve it. Once sent, the server can no longer access the pmsg. Free message portals are intended for transfer of small amounts of data and commands.

Tunnel Portal

隧道門(mén)戶

隧道門(mén)戶旨在快速發(fā)送大量多塊數(shù)據(jù)。在這種情況下,客戶端保留對(duì) pmsg 區(qū)域的所有權(quán)和訪問(wèn)權(quán)限。數(shù)據(jù)塊成為客戶端和服務(wù)器分區(qū)之間的隧道,從而允許發(fā)送和接收多個(gè)數(shù)據(jù)塊。信號(hào)量用于協(xié)調(diào)操作。傳輸完成后,門(mén)戶關(guān)閉,永磁同步器釋放。

操作

對(duì)于這兩種類型的門(mén)戶,頭文件將服務(wù)器函數(shù) API 映射到名稱略有不同的 shell 函數(shù)。此頭文件包含在進(jìn)行服務(wù)器函數(shù)調(diào)用的每個(gè)客戶端文件中。每個(gè) shell 函數(shù)創(chuàng)建一個(gè)包含函數(shù) ID、參數(shù)和數(shù)據(jù) 的 pmsg,并將 pmsg 發(fā)送到門(mén)戶交換。服務(wù)器接收 pmsg 并使用 switch 語(yǔ)句將 ID 轉(zhuǎn)換為函數(shù)調(diào)用,進(jìn)行調(diào)用,然后將函數(shù)返回回 shell 函數(shù),shell 函數(shù)將其返回給應(yīng)用程序。所有這些都對(duì)應(yīng)用程序是透明的,只是操作速度較慢。

由于切換到服務(wù)器任務(wù),門(mén)戶操作可能與直接調(diào)用有很大不同。如果 pmsg 的優(yōu)先級(jí)高于客戶端,則服務(wù)將搶占并立即運(yùn)行。這最像是直接服務(wù)呼叫。如果 pmsg 具有相同的優(yōu)先級(jí),則在客戶端掛起之前,服務(wù)不會(huì)運(yùn)行。如果 pmsg 的優(yōu)先級(jí)較低,則服務(wù)將在將來(lái)的某個(gè)時(shí)間運(yùn)行。當(dāng)服務(wù)是某些低優(yōu)先級(jí)功能(如事件日志記錄)時(shí),后者很有用。

免費(fèi)消息門(mén)戶提供 100% 隔離;隧道門(mén)戶僅提供略少。

性能

性能很好,因?yàn)橛来磐桨l(fā)電機(jī)操作不需要復(fù)制永磁同步發(fā)電機(jī)數(shù)據(jù)塊(與基于 MMU 的系統(tǒng)不同)。實(shí)際上,數(shù)據(jù)塊可以用作客戶端中的工作緩沖區(qū),以便進(jìn)一步減少數(shù)據(jù)復(fù)制。通過(guò)增加 PMSG 數(shù)據(jù)塊的大小,性能得到了極大的提高。

以下是將我們的文件系統(tǒng) (FS) 寫(xiě)入同一處理器STM32F746,Cortex-M7)上的 SD 卡的測(cè)量性能(KB/秒),與兩者都沒(méi)有。它還顯示了無(wú)復(fù)制模式的輕微增益,其中客戶端使用入口緩沖區(qū)作為工作緩沖區(qū)。

FS+SD 7969 / 4855

FS+SD+portal no copy 6788 / 4544 85% / 94%

FS+SD+portal copy 6685 / 4419 84% / 91%

使用 MPU 和門(mén)戶將讀取性能降低了 16%,將寫(xiě)入性能降低了 9%,直接在客戶端中使用門(mén)戶緩沖區(qū)(無(wú)復(fù)制)時(shí)略有改進(jìn)。

現(xiàn)代嵌入式系統(tǒng)比過(guò)去更頻繁地使用堆。但是,如果分區(qū)共享單個(gè)堆,則無(wú)法實(shí)現(xiàn)隔離,因此需要多個(gè)堆。

堆堆 箱結(jié)構(gòu)

eheap 是我們復(fù)雜的堆管理器,包含在 SecureSMX 中。它專為嵌入式系統(tǒng)而設(shè)計(jì);它支持多個(gè)堆,并使用 bin (如 DLMALLOC)來(lái)加速分配。與 dlmalloc 不同,每個(gè)堆的箱數(shù)和箱大小是可自定義的,以滿足應(yīng)用程序要求。例如,如果分區(qū)中經(jīng)常需要 256 的塊大小,則可以創(chuàng)建僅包含此大小的 bin 。此外,eheap 可以分配兩個(gè)對(duì)齊塊的冪,并且可以分配 v7M 區(qū)域。這些對(duì)于動(dòng)態(tài)區(qū)域特別有用,這是此安全 RTOS 的一項(xiàng)功能。eheap 的多任務(wù)版本提供每堆互斥鎖,以避免該堆的訪問(wèn)沖突。

大多數(shù)任務(wù)堆棧、受保護(hù)的消息 (pmsg)、受保護(hù)塊 (pblk) 和許多系統(tǒng)結(jié)構(gòu)都是從 v7M 系統(tǒng)的主堆中分配的。對(duì)于 v8M 系統(tǒng),由于其非區(qū)域重疊要求,其中一些對(duì)象可能需要從另一個(gè)堆中分配。如果需要,可以為需要它們的分區(qū)創(chuàng)建自定義堆,例如用C++編寫(xiě)的分區(qū)。Eheap 可以為小型C++對(duì)象合并小塊池,以加快操作速度。通常,分區(qū)堆比主堆簡(jiǎn)單得多,也小得多。此外,eheap 支持自動(dòng)掃描和修復(fù)每個(gè)堆及其 bin 中的斷開(kāi)鏈接。

調(diào)度程序回調(diào)

大多數(shù) RTOS 都提供 EXIT 和 ENTER 回調(diào)。前者可用于在任務(wù)掛起時(shí)保存擴(kuò)展?fàn)顟B(tài),后者可用于在任務(wù)恢復(fù)時(shí)還原擴(kuò)展?fàn)顟B(tài)。smx 還提供 START 和 DELETE 回調(diào)。當(dāng)任務(wù)首次開(kāi)始運(yùn)行時(shí),前者可用于執(zhí)行任務(wù)初始化并獲取任務(wù)所需的資源。刪除任務(wù)后,后者可用于釋放資源并進(jìn)行任務(wù)清理。由于 DELETE 通常是 switch 語(yǔ)句中低于 START 大小寫(xiě)的情況,因此很容易確保不會(huì)遺漏任何內(nèi)容。因此,分區(qū)可以循環(huán)打開(kāi)和關(guān)閉而不會(huì)泄漏,以支持僅分區(qū)恢復(fù)。

運(yùn)行時(shí)限制

不幸的是,即使是完全分區(qū)隔離也不足以防止黑客攻擊。即使他無(wú)法離開(kāi)分區(qū),黑客也可以從分區(qū)內(nèi)造成大量損害。一個(gè)簡(jiǎn)單的攻擊是將分區(qū)中的任務(wù)放入無(wú)限循環(huán)中。然后,將阻止所有同等或更低優(yōu)先級(jí)的任務(wù)運(yùn)行。這最終可能會(huì)使任何系統(tǒng)崩潰。為了防止這種情況,有必要使用任務(wù)運(yùn)行時(shí)限制。

不幸的是,在實(shí)時(shí)系統(tǒng)中,運(yùn)行時(shí)間限制既是詛咒,也是祝?!?,我們不希望在緊急情況下(例如當(dāng)起重機(jī)即將傾覆時(shí))將關(guān)鍵任務(wù)戴上手銬。但是開(kāi)發(fā)人員很難估計(jì)避免這種災(zāi)難可能需要多少運(yùn)行時(shí)間。因此,允許重要任務(wù)在沒(méi)有運(yùn)行時(shí)限制的情況下運(yùn)行。這一點(diǎn),加上他們的高優(yōu)先級(jí),確保他們可以根據(jù)需要運(yùn)行完成工作,即使在極端情況下也是如此。

受信任度較低的任務(wù)使用計(jì)數(shù)器分配運(yùn)行時(shí)限制。在幀開(kāi)始時(shí),將清除所有計(jì)數(shù)器。事實(shí)證明,時(shí)鐘周期分辨率太粗糙,因此使用 CPU 時(shí)鐘。每次運(yùn)行任務(wù)時(shí),都會(huì)確定它使用的時(shí)鐘數(shù)并將其添加到其計(jì)數(shù)器中。如果這超出了任務(wù)的運(yùn)行時(shí)限制,則任務(wù)將在門(mén)信號(hào)燈上掛起,無(wú)法再運(yùn)行。在每次刻度時(shí),當(dāng)前任務(wù)的計(jì)數(shù)器都會(huì)更新,如果它超過(guò)其運(yùn)行時(shí)限制,則任務(wù)將在門(mén)信號(hào)量上掛起。

運(yùn)行時(shí)限制

在任務(wù)優(yōu)先級(jí)之間取得良好的平衡已經(jīng)夠困難的了,這使得任務(wù)能夠滿足其最后期限。添加固定的運(yùn)行時(shí)幀只會(huì)增加此難度。相反,當(dāng)空閑任務(wù)有足夠的傳遞來(lái)完成其工作時(shí),我們會(huì)結(jié)束運(yùn)行時(shí)幀。由于空閑任務(wù)的優(yōu)先級(jí)最低,因此可確保所有任務(wù)都充分運(yùn)行。然后,門(mén)信號(hào)燈發(fā)出信號(hào),并恢復(fù)所有等待任務(wù),并清除其計(jì)數(shù)器。此外,具有相同優(yōu)先級(jí)的任務(wù)以與掛起相同的順序恢復(fù)。這樣可以避免任務(wù)運(yùn)行中出現(xiàn)可能導(dǎo)致問(wèn)題的較大間隙。

子任務(wù)共享其頂級(jí)父任務(wù)的 [腳注 ii] 運(yùn)行時(shí)限制和計(jì)數(shù)器。如果超出限制,子任務(wù)將立即掛起。僅當(dāng)父項(xiàng)及其其他子項(xiàng)嘗試在此之后運(yùn)行時(shí),它們才會(huì)掛起。為任務(wù)系列分配運(yùn)行時(shí)限制比嘗試為每個(gè)任務(wù)分配運(yùn)行時(shí)限制要容易得多,因?yàn)槊總€(gè)任務(wù)是生成的。

令 牌

在第二次世界大戰(zhàn)期間,家庭收到了用于肉類的紅色代幣,用于魚(yú)類的藍(lán)色代幣和用于手推車的銀代幣。通過(guò)這種方式,我們的政府控制了消費(fèi)。同樣,我們需要控制分區(qū)可以使用多少每個(gè)資源以及分區(qū)如何使用該資源。我們的實(shí)時(shí)操作系統(tǒng)為此目的使用令牌。

句柄是存儲(chǔ)對(duì)象地址的內(nèi)存位置,例如任務(wù) - 即它是一個(gè)特殊的指針。令牌是句柄的地址。句柄是在鏈接時(shí)創(chuàng)建的,因此它們的地址在運(yùn)行時(shí)是已知的。有兩種類型的令牌:HI 令牌允許創(chuàng)建、刪除、修改和訪問(wèn)對(duì)象,LO 令牌僅允許訪問(wèn)對(duì)象(例如信號(hào)量測(cè)試和信號(hào))。程序員為每個(gè)任務(wù)編譯一個(gè)標(biāo)記列表,并在創(chuàng)建任務(wù)后將其分配給該任務(wù)。如果未分配令牌列表,則任務(wù)不需要令牌即可訪問(wèn)或修改對(duì)象。后者對(duì)于恢復(fù)任務(wù)等任務(wù)是必需的,它使受信任任務(wù)的工作更簡(jiǎn)單。

令牌 控制信號(hào)量訪問(wèn)

黑客可以從分區(qū)內(nèi)部做的陰險(xiǎn)的事情之一是一遍又一遍地創(chuàng)建相同的對(duì)象,直到對(duì)象控制塊池耗盡。然后,沒(méi)有其他任務(wù)可以創(chuàng)建該類型的對(duì)象。這被阻止如下:首先,黑客使用的任務(wù)必須具有對(duì)象的 HI 令牌。其次,一旦創(chuàng)建,在刪除對(duì)象之前無(wú)法重新創(chuàng)建對(duì)象。

另一種可能的攻擊是猜測(cè)一個(gè)句柄并用它來(lái)制造麻煩。例如,可以向另一個(gè)分區(qū)中的信號(hào)燈發(fā)出信號(hào),從而導(dǎo)致該分區(qū)中的任務(wù)在不應(yīng)該運(yùn)行時(shí)運(yùn)行。通過(guò)要求該對(duì)象的令牌來(lái)阻止此操作。

除了令牌之外,在使用之前,還會(huì)驗(yàn)證所有句柄參數(shù)是否為有效句柄。每個(gè)句柄都經(jīng)過(guò)范圍檢查,并檢查其 cbtype 字段。這可以防止黑客在系統(tǒng)服務(wù)調(diào)用中使用無(wú)效對(duì)象。

ISR 問(wèn)題

Cortex-M 中一個(gè)嚴(yán)重的架構(gòu)缺陷是 ISR 在 hmode 下運(yùn)行。大多數(shù) RTOS 都使情況更加復(fù)雜,它們?cè)试S從 ISR 調(diào)用內(nèi)核服務(wù)。這些共同為黑客創(chuàng)造了一個(gè)大目標(biāo)。這個(gè)目標(biāo)特別誘人,因?yàn)楹诳凸羲鼤?huì)讓他進(jìn)入 hmode,在那里他可以關(guān)閉 MPU 并訪問(wèn)他喜歡的任何內(nèi)容。

SMX 始終支持不同的設(shè)計(jì)理念,其中 ISR 最小化,大多數(shù)中斷處理推遲到鏈路服務(wù)例程 (LSR)。它們按調(diào)用的順序運(yùn)行,并排在所有任務(wù)之前。LSR 不受優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題的影響,因此比任務(wù)更適合延遲中斷處理。此外,LSR 開(kāi)銷要少得多。當(dāng)處理時(shí)間不重要時(shí),LSR 可以簡(jiǎn)單地向信號(hào)燈發(fā)出信號(hào),延遲中斷處理任務(wù)在其中等待。最小化 ISR 大小既可以減小目標(biāo)大小,又可以讓 ISR 程序員更專注于使代碼難以破解。

有三種類型的 LSR 可用:tLSR、pLSR 和 uLSR。tLSR 是受信任的 LSR。它們?cè)趆mode中運(yùn)行,開(kāi)銷非常低。它們應(yīng)盡可能簡(jiǎn)短,例如僅發(fā)出信號(hào)量。pLSR和uLSRs被稱為安全LSR。每個(gè)都有自己的堆棧和自己的MPA,并且表現(xiàn)得像一個(gè)微任務(wù)。從 LSR 隊(duì)列調(diào)度時(shí),LSR 的 MPA 將加載到 MPU 中,其堆棧將成為操作堆棧。因此,安全 LSR 可以在它們服務(wù)的分區(qū)中運(yùn)行,這會(huì)將中斷處理的一小部分以外的所有內(nèi)容都帶到它所屬的分區(qū)中。這對(duì)uLSR來(lái)說(shuō)是一個(gè)巨大的收獲。

開(kāi)發(fā)人員通常編寫(xiě)進(jìn)行內(nèi)核調(diào)用的長(zhǎng) ISR。安全 LSR 允許將盡可能多的代碼移動(dòng)到 LSR 中,然后將 LSR 移動(dòng)到其相關(guān)分區(qū)中。因此,如果黑客闖入ISR代碼,而不是處于hmode狀態(tài),他發(fā)現(xiàn)自己處于隔離的umode分區(qū)中并受到其限制。

需要注意的一件有趣的事情是,安全的 LSR 可能使用相同的 MPA 作為分區(qū)中的任務(wù),或者它可能更像一個(gè)子任務(wù),并且具有一些共享區(qū)域和一些唯一區(qū)域(例如 IO)。安全LSR具有非常小的控制塊,通常需要非常小的堆棧。此外,它們?cè)?ISR 和任務(wù)之間優(yōu)先運(yùn)行。因此,它們提供了一種有趣的IO處理方法,比通常的ISR方法更安全。

SMX感知

smxAware 為 IAR C-SPY 調(diào)試器提供內(nèi)核感知。當(dāng)與 SecureSMX 一起使用時(shí),添加了 MPU 和 MPA 顯示器。這使得在跟蹤 MMF 時(shí)更容易查看區(qū)域大小和屬性。此外,門(mén)戶操作顯示在事件時(shí)間線圖中,MPU 區(qū)域顯示在內(nèi)存映射概述圖中。

事件監(jiān)控

監(jiān)視大量?jī)?nèi)核事件,例如服務(wù)調(diào)用、ISR 運(yùn)行、LSR 運(yùn)行、任務(wù)操作、錯(cuò)誤等。每個(gè)事件的相關(guān)信息都存儲(chǔ)在事件緩沖區(qū) EVB 中。此外,還可以定義和記錄用戶事件。可以過(guò)濾日志記錄,以便 EVB 不會(huì)太快填滿。EVB 可以定期上傳到安全監(jiān)控站點(diǎn),在該站點(diǎn)中,特殊軟件會(huì)查找可能表明攻擊正在進(jìn)行中的異常行為。如果是這樣,安全控制可以采取適當(dāng)?shù)牟僮?,例如關(guān)閉分區(qū)。

監(jiān)控大型系統(tǒng)所有元素的運(yùn)行可能是阻止逃避安全機(jī)制并緩慢滲透計(jì)算機(jī)網(wǎng)絡(luò)的高度復(fù)雜攻擊的唯一方法。

目標(biāo)

在最優(yōu)系統(tǒng)中,盡可能多的代碼已經(jīng)從 pmode 移動(dòng)到彼此高度隔離的 umode 分區(qū),門(mén)戶用于分區(qū)間通信,所有不受信任的任務(wù)都是運(yùn)行時(shí)和令牌限制的,延遲中斷處理在安全的 LSR 中完成,任務(wù)關(guān)鍵型代碼和數(shù)據(jù)受到 pmode 屏障的雙重保護(hù)。

雖然這個(gè)目標(biāo)對(duì)于新設(shè)計(jì)來(lái)說(shuō)是可以實(shí)現(xiàn)的,但對(duì)于現(xiàn)有設(shè)計(jì)來(lái)說(shuō)不太可能是可行的。將所有不受信任的代碼移動(dòng)到單個(gè) umode 分區(qū)并對(duì)其應(yīng)用一些限制可能是一個(gè)適當(dāng)?shù)慕鉀Q方案。SecureSMX 專門(mén)設(shè)計(jì)用于提供實(shí)施部分解決方案的靈活性。它還旨在允許漸進(jìn)式改進(jìn),其中安全團(tuán)隊(duì)一次修復(fù)一個(gè)問(wèn)題,從而在不破壞銀行的情況下逐步實(shí)現(xiàn)安全性改進(jìn)。

重要的是要認(rèn)識(shí)到,仍然可以使用其他安全措施,例如信任根、安全啟動(dòng)、安全更新、加密和代碼改進(jìn)。相反,它提供了堅(jiān)實(shí)的安全基礎(chǔ),并提供了許多處理安全問(wèn)題的新選項(xiàng)。

將應(yīng)用程序移植到 SecureSMX

為了簡(jiǎn)化現(xiàn)有應(yīng)用程序移植到我們的安全實(shí)時(shí)操作系統(tǒng),F(xiàn)RPort 和 TXPort 包含在其中。它們提供了移植功能,可將應(yīng)用程序中使用的 90% 以上的 FreeRTOS 和 ThreadX 服務(wù)調(diào)用移植到等效的 smx 服務(wù)調(diào)用。計(jì)劃建設(shè)更多港口。嘗試在其他 RTOS 上運(yùn)行 SecureSMX 是行不通的,因?yàn)樗c smx 的富內(nèi)核功能緊密綁定,而這些功能在其他 RTOS 中是缺失的。將應(yīng)用程序移動(dòng)到它應(yīng)該導(dǎo)致更好的操作,并允許訪問(wèn)上面討論的所有安全功能。

未來(lái)

到目前為止,許多設(shè)備已被黑客入侵,但黑客主要關(guān)注網(wǎng)絡(luò)釣魚(yú)等唾手可得的果實(shí),以進(jìn)入計(jì)算機(jī)網(wǎng)絡(luò)。然而,隨著公司采用更好的安全軟件和更好的安全實(shí)踐,唾手可得的果實(shí)開(kāi)始消失。如前所述,下一個(gè)主要黑客目標(biāo)可能是已經(jīng)連接到計(jì)算機(jī)網(wǎng)絡(luò)的數(shù)千臺(tái)未受保護(hù)的設(shè)備。這些很容易被黑客入侵。

設(shè)備供應(yīng)商的高層管理人員需要決定他們是想現(xiàn)在開(kāi)始采取謹(jǐn)慎的步驟,還是稍后雇傭一支軍隊(duì)來(lái)處理對(duì)其設(shè)備的攻擊。法院將來(lái)可能會(huì)裁定安全性不足構(gòu)成疏忽,因此設(shè)備制造商將面臨損害賠償[參考文獻(xiàn)5]。這可能會(huì)使許多公司倒閉。即使這種情況沒(méi)有發(fā)生,可證明的安全性也可能成為許多類型設(shè)備的主要銷售點(diǎn)。

縱觀廣泛的軟件圖景,在大多數(shù)嵌入式系統(tǒng)中,可能只有大約10%的軟件完成關(guān)鍵工作。此代碼是公司業(yè)務(wù)的本質(zhì)。它可能寫(xiě)得很嚴(yán)格,經(jīng)過(guò)徹底測(cè)試,經(jīng)過(guò)現(xiàn)場(chǎng)驗(yàn)證,因此不太可能改變。剩下的 90% 的代碼是第三方、開(kāi)源和新開(kāi)發(fā)代碼的混合體,并且可能帶有許多漏洞。如果不進(jìn)行分區(qū),此代碼中任何地方的黑客攻擊都會(huì)暴露整個(gè)系統(tǒng),從而助長(zhǎng)贖金攻擊和關(guān)鍵數(shù)據(jù)的盜竊。像這樣讓公司的膽量變得脆弱是沒(méi)有意義的。

此外,應(yīng)該預(yù)計(jì)內(nèi)部攻擊將變得更加普遍。當(dāng)提供大筆資金時(shí),員工的忠誠(chéng)度可能是可以協(xié)商的。任務(wù)關(guān)鍵型代碼是公司皇冠上的明珠。它應(yīng)該被鎖起來(lái),除了少數(shù)高度信任的員工之外,所有人都無(wú)法訪問(wèn)。由于任務(wù)關(guān)鍵型代碼可能不需要更新,因此不需要將其包含在僅分區(qū)更新中。如果更新中不包含任務(wù)關(guān)鍵型代碼,則無(wú)法篡改,這為避免災(zāi)難性攻擊提供了一些希望。

結(jié)論

我們的新RTOS旨在提供一套靈活的工具和結(jié)構(gòu),以提高現(xiàn)有基于MCU的系統(tǒng)以及新系統(tǒng)的安全性。它允許以最少的受信任的遺留代碼修改來(lái)做到這一點(diǎn)。其固有的靈活性允許首先解決最重要的問(wèn)題,從而逐步提高系統(tǒng)安全性。

如果將 SecureSMX 用作新系統(tǒng)的基礎(chǔ),則很可能可以在很少或沒(méi)有進(jìn)度或開(kāi)發(fā)成本增加的情況下實(shí)施強(qiáng)大的安全性。這是因?yàn)樗峁┝嗽O(shè)計(jì)實(shí)踐的硬件實(shí)施,經(jīng)證明可以減少集成和調(diào)試時(shí)間。而下游的回報(bào),在安全保護(hù)方面,是巨大的。對(duì)于上面介紹的所有功能,SecureSMX 與 SMX 的代碼大小增加約為 20 KB??紤]到典型MCU上的大片上閃存,以及與典型應(yīng)用代碼的大小相比,這是可以忽略不計(jì)的。一個(gè)更大的問(wèn)題是節(jié)省寶貴的片上SRAM,我們提供了工具和技術(shù)來(lái)最大限度地減少由于v7M架構(gòu)上的對(duì)齊而導(dǎo)致的浪費(fèi),如減少區(qū)域之間的差距一節(jié)所述。

編輯:黃飛

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

    關(guān)注

    146

    文章

    16813

    瀏覽量

    349498
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3535

    瀏覽量

    129003
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1469

    瀏覽量

    61701
  • RTOS
    +關(guān)注

    關(guān)注

    21

    文章

    808

    瀏覽量

    119311
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入解析Zephyr RTOS的技術(shù)細(xì)節(jié)

    Zephyr是一個(gè)針對(duì)資源受限設(shè)備優(yōu)化的小型、可縮放、多體系架構(gòu)實(shí)時(shí)操作系統(tǒng)(RTOS)。Zephyr由Linux基金會(huì)維護(hù)[1],是一個(gè)以構(gòu)建業(yè)界最佳的RTOS為目標(biāo)的開(kāi)源合作項(xiàng)目。近年來(lái)
    的頭像 發(fā)表于 10-22 16:47 ?135次閱讀
    深入解析Zephyr <b class='flag-5'>RTOS</b>的技術(shù)細(xì)節(jié)

    RTOS正在縮小與Linux的差距

    RTOS與Linux的物聯(lián)網(wǎng)設(shè)備操作系統(tǒng)之爭(zhēng)已經(jīng)持續(xù)了很多年。Linux以其強(qiáng)大的計(jì)算能力和豐富的軟件生態(tài),在需要復(fù)雜處理和軟件支持的物聯(lián)網(wǎng)設(shè)備上占據(jù)一席之地;RTOS憑借實(shí)時(shí)響應(yīng)和資
    的頭像 發(fā)表于 09-10 08:07 ?627次閱讀
    <b class='flag-5'>RTOS</b>正在縮小與Linux的差距

    freertos和rtos區(qū)別是什么

    (Real-Time Operating System,實(shí)時(shí)操作系統(tǒng))是一種特殊的操作系統(tǒng),它能夠?yàn)閷?shí)時(shí)任務(wù)提供確定性的響應(yīng)時(shí)間。RTOS 通常用于嵌入式系統(tǒng),如工業(yè)自動(dòng)化、汽車電子、醫(yī)療設(shè)備等領(lǐng)域
    的頭像 發(fā)表于 09-02 14:18 ?696次閱讀

    RTOS的特性和類型

    。通常,這些應(yīng)用程序在幾微秒內(nèi)響應(yīng)輸入,并在內(nèi)存小于1MB的小型嵌入式設(shè)備上運(yùn)行。在本節(jié)中,您將詳細(xì)了解什么是RTOS以及RTOS類型和架構(gòu)。
    的頭像 發(fā)表于 08-20 11:29 ?406次閱讀

    RTOS開(kāi)發(fā)最佳實(shí)踐

    基于RTOS編寫(xiě)應(yīng)用程序時(shí),有一些要注意事項(xiàng)。在本節(jié)中,您將學(xué)習(xí)RTOS開(kāi)發(fā)最佳實(shí)踐,例如POSIX合規(guī)性、安全性和功能安全認(rèn)證。
    的頭像 發(fā)表于 08-20 11:24 ?328次閱讀

    risc-v的mcu對(duì)RTOS兼容性如何

    相關(guān)的RTOS開(kāi)發(fā)流程。 然而,由于RISC-V的開(kāi)源特性和廣泛的社區(qū)支持,工程師可以更容易地獲取所需的文檔、示例代碼和社區(qū)幫助。 綜上所述,RISC-V的MCU對(duì)RTOS的兼容性在
    發(fā)表于 05-27 16:26

    儲(chǔ)能設(shè)備中的大腦——MCU

    電子發(fā)燒友網(wǎng)報(bào)道(文/黃山明)在儲(chǔ)能設(shè)備愈發(fā)復(fù)雜的今天,需要有一套控制系統(tǒng),來(lái)負(fù)責(zé)監(jiān)控設(shè)備狀態(tài)、管理用戶界面、控制電源輸出和通信等功能。而MCU則扮演著這個(gè)角色,保障儲(chǔ)能系統(tǒng)的高效、穩(wěn)定和安全
    的頭像 發(fā)表于 05-24 00:15 ?4446次閱讀
    儲(chǔ)能<b class='flag-5'>設(shè)備</b>中的大腦——<b class='flag-5'>MCU</b>

    RTOS功能安全認(rèn)證在今天是“必須”的嗎?

    在商業(yè)中,“必須”代表了參與市場(chǎng)的最低要求。今天嵌入式市場(chǎng)中有一百多個(gè)開(kāi)源和商業(yè) RTOS,他們中的絕大多數(shù)沒(méi)有功能安全認(rèn)證。
    的頭像 發(fā)表于 04-23 14:44 ?601次閱讀

    在Flexible Safety RTOS安全應(yīng)用中集成X-CUBE-STL的步驟

    安全操作系統(tǒng)Flexible Safety RTOS提供了空間隔離保護(hù),簡(jiǎn)化安全產(chǎn)品的設(shè)計(jì),其安全插件可幫助用戶安全團(tuán)隊(duì)提高微控制器診斷覆蓋
    的頭像 發(fā)表于 03-15 12:16 ?1263次閱讀
    在Flexible Safety <b class='flag-5'>RTOS</b><b class='flag-5'>安全</b>應(yīng)用中集成X-CUBE-STL的步驟

    詳解全志R128 RTOS安全方案功能

    或者訪問(wèn)數(shù)據(jù)時(shí),經(jīng)過(guò) SAU 與 IDAU 審查之后,攜帶安全屬性,進(jìn)入 AHB 總線。 由于 SAU/IDAU 機(jī)制只適用于 Arm M33 Star 處理器,那么 AHB 設(shè)備使用下列兩種方法識(shí)別
    發(fā)表于 12-28 15:59

    LabVIEW開(kāi)發(fā)地鐵運(yùn)行安全監(jiān)控系統(tǒng)

    LabVIEW開(kāi)發(fā)地鐵運(yùn)行安全監(jiān)控系統(tǒng) 最近昌平線發(fā)生的故障事件引起了廣泛關(guān)注,暴露了現(xiàn)有地鐵運(yùn)行監(jiān)控系統(tǒng)在應(yīng)對(duì)突發(fā)情況方面的不足。為了提高地鐵系統(tǒng)的運(yùn)行安全性,并防止類似事件再次發(fā)生,提出了一套
    發(fā)表于 12-16 21:06

    微軟開(kāi)源Azure RTOS,并更名為Eclipse ThreadX

    Azure RTOS 是一個(gè)帶有 ThreadX 實(shí)時(shí)操作系統(tǒng)(RTOS)的嵌入式開(kāi)發(fā)套件。ThreadX 是一個(gè)普及性很高的小型 RTOS,可為資源受限的
    的頭像 發(fā)表于 12-01 16:17 ?732次閱讀
    微軟開(kāi)源Azure <b class='flag-5'>RTOS</b>,并更名為Eclipse ThreadX

    MCU在線技術(shù)講座-EFM和EFR: 面向物聯(lián)網(wǎng)開(kāi)發(fā)的通用MCU平臺(tái)

    開(kāi)發(fā)人員了解專門(mén)針對(duì)物聯(lián)網(wǎng)開(kāi)發(fā)而優(yōu)化的EFM和EFR系列MCU平臺(tái),我們將針對(duì)亞洲地區(qū)于2023年12月12日上午10點(diǎn)(北京時(shí)間)在線舉辦全新MCU專題的Tech Talk技術(shù)講座-
    發(fā)表于 11-23 13:45

    國(guó)產(chǎn)安全MCU LKT6830C產(chǎn)品特點(diǎn)

    LKT6830C是凌科芯安科技(北京)有限公司自主開(kāi)發(fā)的32位高性能、高安全性的國(guó)產(chǎn)安全MCU,除了具有SPI、IIC、UART、GPIO等常用外設(shè)接口外同時(shí)芯片內(nèi)置定時(shí)器、看門(mén)狗、P
    的頭像 發(fā)表于 11-15 10:22 ?1117次閱讀

    RTOS相比裸機(jī)有什么優(yōu)點(diǎn)?RTOS相比裸機(jī)更方便嗎?

    RTOS相比裸機(jī)有什么優(yōu)點(diǎn)?RTOS相比裸機(jī)更方便嗎? RTOS代表實(shí)時(shí)操作系統(tǒng),專門(mén)為需要高可靠性和可預(yù)測(cè)性的系統(tǒng)設(shè)計(jì)。相比之下,裸金屬或“裸”系統(tǒng)的硬件或軟件層最少,嚴(yán)重依賴開(kāi)發(fā)
    的頭像 發(fā)表于 10-29 16:33 ?1509次閱讀