ZHCAEP5A November 2024 – October 2025 F29H850TU , F29H859TU-Q1
為應(yīng)用程序配置 SSU 的第一步是確定所需的系統(tǒng)分區(qū)。SSU 為應(yīng)用程序子系統(tǒng)的分區(qū)提供了三個(gè)層次:
這種分區(qū)使第三方開發(fā)商能夠在同一芯片上開發(fā)、調(diào)試和維護(hù)應(yīng)用程序功能,而無需訪問主用戶的代碼和數(shù)據(jù)資產(chǎn)。此外,每個(gè)用戶 ZONE 還提供兩級(jí)調(diào)試授權(quán):
例如,第三方開發(fā)人員等輔助用戶可在 ZONE2 中調(diào)試應(yīng)用模塊,同時(shí)也可獲得 ZONE1 的部分調(diào)試訪問權(quán)限,這樣輔助用戶就能在上下文中有效調(diào)試應(yīng)用,而無需訪問主用戶的資產(chǎn)。
每個(gè)器件都有 3 個(gè)可用的用戶 ZONE:ZONE1、ZONE2 和 ZONE3。ZONE1 是主用戶 ZONE;ZONE2 和 ZONE3 是輔助用戶 ZONE。
從一個(gè) STACK 跨到另一個(gè) STACK 時(shí),需要使用特殊的 C29 CPU 門指令。編譯器必須在每個(gè)函數(shù)的入口和出口以及函數(shù)調(diào)用或分支處插入這些指令。這些機(jī)制可提供安全保護(hù),防止試圖重定向代碼執(zhí)行或操縱棧的惡意軟件攻擊。
沙盒由 SSU STACK 以及與 STACK 相關(guān)的所有內(nèi)容(包括棧內(nèi)存 AP 區(qū)域)組成。每個(gè) STACK 屬于一個(gè) ZONE,但一個(gè) ZONE 可以包含多個(gè) STACK
| STACK # | 說明 |
|---|---|
| STACK0 | 此 STACK 保留供 TI 內(nèi)部使用,無法由用戶配置。 |
| STACK1 | 此 STACK 主要用于引導(dǎo)加載程序,但也可以與其他用戶應(yīng)用程序代碼相關(guān)聯(lián)。STACK1 始終與 ZONE1 關(guān)聯(lián),僅包含一個(gè) LINK (LINK1)。 |
| STACK2 | 這是主用戶 STACK。STACK2 始終與 ZONE1 關(guān)聯(lián)。STACK2 始終包含 LINK2,但也可以包含其他 LINK。 |
通常,代碼 AP 區(qū)域包含 .text 和其他包含代碼的鏈接器輸出段,數(shù)據(jù) AP 區(qū)域包含 .bss、.const 和其他包含數(shù)據(jù)和變量的鏈接器輸出段。
每個(gè) LINK 都能啟用 SSU 內(nèi)存保護(hù),提供 CPU 中其他 LINK 的安全保護(hù)。每個(gè) AP 區(qū)域都為每個(gè) LINK 定義了訪問權(quán)限。這些權(quán)限會(huì)根據(jù) LINK ID 指令,在每條執(zhí)行內(nèi)存訪問的指令中實(shí)時(shí)執(zhí)行。需要相互功能安全隔離的功能可以放在單獨(dú)的模塊中。如果需要信息安全隔離,則將這些模塊置于單獨(dú)的沙盒中;如果不需要,則可將這些模塊置于同一沙盒中。
| LINK # | 說明 |
|---|---|
| LINK0 | 此 LINK 保留供 TI 內(nèi)部使用,無法由用戶配置。 |
| LINK1 | 此 LINK 主要用于引導(dǎo)加載程序,但也可以與其他用戶應(yīng)用程序代碼相關(guān)聯(lián)。CPU1.LINK1 具有一些特殊的固定權(quán)限,除了 AP 定義的保護(hù)外,還能訪問某些系統(tǒng)配置寄存器。 |
| LINK2 | 這是主用戶 LINK。CPU1.LINK2 是系統(tǒng)安全根 LINK (SROOT),具有特殊的固定權(quán)限,可訪問系統(tǒng)配置寄存器和覆蓋控制。該 LINK 通常在 RTOS 級(jí)別執(zhí)行特權(quán)主機(jī)功能。 |
圖 6-1 展示了單 CPU、單 ZONE 系統(tǒng)上的 SSU 系統(tǒng)分區(qū)示例,并且表 6-3 介紹了該配置背后的詳細(xì)信息。
| STACK | LINK | 詳細(xì)信息 |
|---|---|---|
| STACK 2 | LINK2 | RTOS 在 STACK2.LINK2 中運(yùn)行,負(fù)責(zé)初始化系統(tǒng)配置、設(shè)置外設(shè)和中斷,并啟動(dòng)主執(zhí)行循環(huán)。雖然可以將各種任務(wù)和各自的任務(wù)棧放置在其他 LINK 中,但所有 RTOS 任務(wù)/棧都需要位于 SSU STACK2 中。如果使用了 RTINT,則與 RTINT 相關(guān)的代碼和數(shù)據(jù)應(yīng)置于 SSU STACK2 以外的單獨(dú) SSU STACK 中。 |
| STACK 3 | LINK3 和 LINK 4 | 有兩個(gè)控制功能:Control Loop1 和 Control Loop 2。這些控制功能中的每一個(gè)都放在單獨(dú)的應(yīng)用模塊 (LINK) 中,并且兩個(gè)應(yīng)用模塊放在同一沙盒中。在此系統(tǒng)中,兩個(gè)控制功能之間需要物理安全隔離,但不需要信息安全隔離。 |
| STACK 4 | LINK 5 | LINK5 包含主機(jī)通信代碼,例如 UART 或 CAN-FD 代碼。由于來自外部接口的數(shù)據(jù)可能會(huì)對(duì)系統(tǒng)中的其他功能構(gòu)成安全威脅,因此該模塊被置于單獨(dú)的沙盒中。 |
| STACK 5 | LINK 6 | 包含系統(tǒng)中所有其他模塊之間共享的公共代碼函數(shù)。LINK 6 被定義為其他 LINK 的訪問保護(hù)繼承 LINK (APILINK)。通用代碼模塊也被置于單獨(dú)的沙盒中,以保持與系統(tǒng)其他部分的信息安全隔離(同時(shí)保持繼承的權(quán)限)。建議將通用代碼 LINK 放置在其自身的 STACK 中。 |
SysConfig 完全支持多核應(yīng)用。內(nèi)置內(nèi)存分配器工具可自動(dòng)管理多個(gè) CPU 上與應(yīng)用模塊相關(guān)的內(nèi)存區(qū)域,還可管理整個(gè)器件的外設(shè)分配。SysConfig 工具還包括共享內(nèi)存功能,用于定義可在同一 CPU 或多個(gè) CPU 上的模塊之間共享的內(nèi)存區(qū)域。