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

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

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

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

要長高 ? 來源:embedded ? 作者:Ralph Moore ? 2023-09-29 10:53 ? 次閱讀

作者:Ralph Moore

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

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

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

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

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

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

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

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

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

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

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

目標(biāo)

這種安全的實(shí)時(shí)操作系統(tǒng)既旨在促進(jìn)現(xiàn)有系統(tǒng)的安全改進(jìn),也旨在作為新系統(tǒng)的安全基礎(chǔ)。開發(fā)人員可以根據(jù)需要使用盡可能多或盡可能少的功能。易受攻擊的代碼(如開源 [Ref 3] 或網(wǎng)絡(luò)堆棧和新開發(fā)的軟件包)可以通過一系列定義明確的步驟與系統(tǒng)的其余部分隔離。隔離可以根據(jù)需要盡可能強(qiáng),如果需要,可以施加限制。同時(shí),系統(tǒng)的其余部分可以繼續(xù)按原樣運(yùn)行,基本上保持不變。因此,對于開始被黑客入侵的現(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ù)可以訪問的內(nèi)存。SVC 指令用于允許 umode 任務(wù)訪問系統(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 開始運(yùn)行時(shí),該陣列會加載到 MPU 中?;蛘?,任務(wù)可以使用默認(rèn)的 MPA。此時(shí),任務(wù)之間會獲得一些隔離,具體取決于每個(gè)任務(wù)具有自己的 MPA 的程度以及 MPA 區(qū)域定義的緊密程度。為了實(shí)現(xiàn)更大的隔離,可以將任務(wù)移動到 umode。然后,系統(tǒng)的所有其余部分都受到硬件強(qiáng)制 pmode 屏障的保護(hù)。

wKgaomUFUbWAU9z2AAHUgnhA_Fs409.png

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

什么是分區(qū)?

分區(qū)由它們包含的一個(gè)或多個(gè)任務(wù)定義。他們沒有控制塊。通常,分區(qū)對應(yīng)于系統(tǒng)的邏輯部分,通常稱為模塊,例如文件系統(tǒng)。像這樣的分區(qū)通常有一個(gè)頂級任務(wù)和一個(gè)或兩個(gè)子任務(wù)來幫助它。但是,根據(jù)特定系統(tǒng),分區(qū)可以由多個(gè)頂級任務(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)《》]。對于安全MCU設(shè)計(jì)來說,這是一個(gè)不幸的挫折。但是,我們發(fā)現(xiàn)了許多克服此問題的方法,這些方法已合并到我們的新RTOS中。以下段落詳細(xì)描述了這些方法,以便呈現(xiàn)令人信服的圖片。

定義節(jié)

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

鏈接器命令文件

我們開發(fā)了一種簡單的方法來創(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,其對齊方式 = region_size,以及它包含的部分。這種方法的一個(gè)很好的功能是,在開發(fā)過程中,當(dāng)鏈接器報(bào)告某個(gè)區(qū)域已被超出時(shí),將其大小提高 8/5 或上升到下一個(gè) 8*8/8 的冪(如果它已經(jīng)是 《》/《》)是一件簡單的事情。

模板、內(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ū)域塊大小自動生成的(例如,如果區(qū)域塊大小 = region_size*5/8,則設(shè)置 SRD 5、6 和 7)。這避免了用戶的復(fù)雜性,同時(shí)最大限度地減少了區(qū)域大小。

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

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

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

v8M 分區(qū)

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

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

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

ptasks 可以進(jìn)行直接系統(tǒng)調(diào)用,因?yàn)樗鼈冊谄?MPA 中具有sys_code和sys_data區(qū)域。這些區(qū)域?qū)⑻鎿Q為 utask 的 ucom_code 和 ucom_data,這些區(qū)域無法進(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)用。對于每個(gè)調(diào)用 SVC n 的系統(tǒng)服務(wù),ucom_code都有一個(gè) shell 函數(shù),其值由枚舉定義。此系統(tǒng)可以輕松添加或刪除服務(wù)呼叫。

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

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

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

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

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

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

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

門戶

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

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

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

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

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

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

提供兩種類型的門戶:

免費(fèi)消息門戶

免費(fèi)消息門戶

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

隧道門戶

隧道門戶旨在快速發(fā)送大量多塊數(shù)據(jù)。在這種情況下,客戶端保留對 pmsg 區(qū)域的所有權(quán)和訪問權(quán)限。數(shù)據(jù)塊成為客戶端和服務(wù)器分區(qū)之間的隧道,從而允許發(fā)送和接收多個(gè)數(shù)據(jù)塊。信號量用于協(xié)調(diào)操作。傳輸完成后,門戶關(guā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ā)送到門戶交換。服務(wù)器接收 pmsg 并使用 switch 語句將 ID 轉(zhuǎn)換為函數(shù)調(diào)用,進(jìn)行調(diào)用,然后將函數(shù)返回回 shell 函數(shù),shell 函數(shù)將其返回給應(yīng)用程序。所有這些都對應(yīng)用程序是透明的,只是操作速度較慢。

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

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

性能

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

以下是將我們的文件系統(tǒng) (FS) 寫入同一處理器STM32F746,Cortex-M7)上的 SD 卡的測量性能(KB/秒),與兩者都沒有。它還顯示了無復(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 和門戶將讀取性能降低了 16%,將寫入性能降低了 9%,直接在客戶端中使用門戶緩沖區(qū)(無復(fù)制)時(shí)略有改進(jìn)。

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

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

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

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

調(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ù)首次開始運(yùn)行時(shí),前者可用于執(zhí)行任務(wù)初始化并獲取任務(wù)所需的資源。刪除任務(wù)后,后者可用于釋放資源并進(jìn)行任務(wù)清理。由于 DELETE 通常是 switch 語句中低于 START 大小寫的情況,因此很容易確保不會遺漏任何內(nèi)容。因此,分區(qū)可以循環(huán)打開和關(guān)閉而不會泄漏,以支持僅分區(qū)恢復(fù)。

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

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

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

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

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

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

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

令 牌

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

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

令牌 控制信號量訪問

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

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

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

ISR 問題

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

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

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

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

需要注意的一件有趣的事情是,安全的 LSR 可能使用相同的 MPA 作為分區(qū)中的任務(wù),或者它可能更像一個(gè)子任務(wù),并且具有一些共享區(qū)域和一些唯一區(qū)域(例如 IO)。安全LSR具有非常小的控制塊,通常需要非常小的堆棧。此外,它們在 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ū)域大小和屬性。此外,門戶操作顯示在事件時(shí)間線圖中,MPU 區(qū)域顯示在內(nèi)存映射概述圖中。

事件監(jiān)控

監(jiān)視大量內(nèi)核事件,例如服務(wù)調(diào)用、ISR 運(yùn)行、LSR 運(yùn)行、任務(wù)操作、錯(cuò)誤等。每個(gè)事件的相關(guān)信息都存儲在事件緩沖區(qū) EVB 中。此外,還可以定義和記錄用戶事件??梢赃^濾日志記錄,以便 EVB 不會太快填滿。EVB 可以定期上傳到安全監(jiān)控站點(diǎn),在該站點(diǎn)中,特殊軟件會查找可能表明攻擊正在進(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 移動到彼此高度隔離的 umode 分區(qū),門戶用于分區(qū)間通信,所有不受信任的任務(wù)都是運(yùn)行時(shí)和令牌限制的,延遲中斷處理在安全的 LSR 中完成,任務(wù)關(guān)鍵型代碼和數(shù)據(jù)受到 pmode 屏障的雙重保護(hù)。

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

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

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

為了簡化現(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)用程序移動到它應(yīng)該導(dǎo)致更好的操作,并允許訪問上面討論的所有安全功能。

未來

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

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

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

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

結(jié)論

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

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

編輯:黃飛

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

    關(guān)注

    146

    文章

    16667

    瀏覽量

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

    關(guān)注

    40

    文章

    3520

    瀏覽量

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

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61492
  • RTOS
    +關(guān)注

    關(guān)注

    20

    文章

    804

    瀏覽量

    119117
收藏 人收藏

    評論

    相關(guān)推薦

    RTOS正在縮小與Linux的差距

    RTOS與Linux的物聯(lián)網(wǎng)設(shè)備操作系統(tǒ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 ?458次閱讀
    <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è)自動化、汽車電子、醫(yī)療設(shè)備等領(lǐng)域
    的頭像 發(fā)表于 09-02 14:18 ?332次閱讀

    RTOS的特性和類型

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

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

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

    risc-v的mcuRTOS兼容性如何

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

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

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

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

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

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

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

    微軟開源Azure RTOS,并更名為Eclipse ThreadX

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

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

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

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

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

    盤點(diǎn)評估RTOS的重要指標(biāo)

    如果RTOS沒有通過功能安全認(rèn)證,則極有可能存在未經(jīng)測試的執(zhí)行路徑,這可能會導(dǎo)致失敗。對于安全關(guān)鍵設(shè)備來說,這可能是災(zāi)難性的。即使對于非安全
    的頭像 發(fā)表于 10-25 11:18 ?574次閱讀
    盤點(diǎn)評估<b class='flag-5'>RTOS</b>的重要指標(biāo)

    AT32 MCU USB設(shè)備庫應(yīng)用說明

    AT32 MCU USB Device Library Application Note主要描述AT32F4xx 系列USB 設(shè)備庫的架構(gòu)和使用方法,方便開發(fā)者使用庫快速開發(fā)USB相關(guān)
    發(fā)表于 10-25 07:07

    MCU是怎么為物聯(lián)網(wǎng)端點(diǎn)設(shè)備提高安全性的?

    MCU 是怎么為物聯(lián)網(wǎng)端點(diǎn)設(shè)備提高安全性的?
    發(fā)表于 10-17 08:53

    RTOS工具、安全和網(wǎng)絡(luò)能力三個(gè)指標(biāo)介紹

    PX5 RTOS開發(fā)在很大程度上依賴于IAR bembedded workbench,特別是IDE、編譯器、調(diào)試器、代碼覆蓋率和靜態(tài)分析功能。所有這一切都集成在一個(gè)IDE,這真是太好了。更好的是,IAR工具套件的每個(gè)功能都是一流的。
    發(fā)表于 09-26 14:46 ?477次閱讀
    <b class='flag-5'>RTOS</b>工具、<b class='flag-5'>安全</b>和網(wǎng)絡(luò)能力三個(gè)指標(biāo)介紹