<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

Jacinto 7系列HS芯片中的JTAG調試控制

星星科技指導員 ? 來源:ti ? 作者:Neo Wang ? 2023-03-14 10:44 ? 次閱讀

1. 背景介紹:

TI最新一代JacintoTM 7處理器芯片中,為了保證客戶系統安全以及功能隱私,保證應用鏡像不被惡意篡改、復制以及刪除,TI為每一顆JacintoTM 7 家族的SoC芯片都提供了HS(high security)的芯片類型。

而JTAG作為嵌入式開發過程中必不可少的調試接口,在應用開發以及產品發布階段,推薦進行不同的處理,從而避免第三方通過JTAG接口對產品系統進行攻擊從而造成損失。針對這種考慮,在GP和HS芯片中,JTAG接口具有不同的權限,如下表1所示:

表 1 不同芯片類型中的JTAG狀態

芯片類型 芯片狀態 M3 JTAG 狀態 其它核心JTAG 狀態
General Purpose (GP) GP Open Open
High Security (HS) HS-FS Closed Open
High Security (HS) HS-SE Closed Controlled

本文旨在介紹并幫助開發人員在HS-SE芯片中實現對JTAG的控制,進而保證產品的安全以及隱私性

2. 測試條件:

DRA821 EVM開發板

DRA821 RTOS SDK8.2

開發環境:Linux Ubuntu 18.04

值得一提的是,本文基于DRA821 HS-SE芯片進行測試以及介紹,但此方法適用于JacintoTM 7家族其它系列芯片,例如TDA4x系列SoC。

3. JTAG Debug Unlock的兩種方法及適用場景

一般來說,JacintoTM 7家族HS-SE系列SoC中,如上表1所示,M3/M4F核心的JTAG默認關閉且不能打開,從而確保DMSC核心的安全,進而保證芯片內部的時鐘電源安全。

而對于其它核心,例如R5F/A72/DSP等等,則可以通過JTAG Debug的預加鎖/預解鎖以及實時解鎖兩種方案來實現對JTAG的控制。

JTAG Debug的預加鎖/預解鎖方案通過直接對各個核心鏡像的x509證書進行授權,使其在運行時在芯片內部直接進行對JTAG的加鎖/解鎖,從而實現對JTAG的控制。其適用于能夠對鏡像進行實時更新的開發環境。

JTAG Debug的實時解鎖方案默認對JTAG進行鎖死,然后通過外部JTAG口或者TISCI等方式向芯片發送特定的解鎖證書,從而實現對指定核心的JTAG進行解鎖;芯片下電后,會繼續保持JTAG死鎖。其適用于對鏡像文件更新受限的開發環境。

總的來說,相對于預加鎖/解鎖方案,實時解鎖方案的安全性更高,部署成功后操作更加便捷且高效;相對的,預加鎖/解鎖方案在前期部署工作上會更加簡單。

4. JTAG Debug的預加鎖/預解鎖方案

所有在HS-SE芯片中執行的binary,都需要對鏡像進行簽名/加密才可正常運行,具體的流程可以參考應用手冊“SPRAD04“中的第二章節。而JTAG Debug的預加鎖/預解鎖則是在對binary進行簽名加密生成x509證書時,通過配置默認的debug extension來設置芯片JTAG Debug的權限。以SBL為例,在 /packages/ti/build/makerules/common.mk文件中,當開發人員執行make sbl_mmcsd_img_hs編譯SBL時,會調用下述指令對SBL進行簽名并設置debug extension的權限。

poYBAGQP33OAOConAAAPc-DnUAg006.png

其中“DBG_FULL_ENABLE”代表默認將JTAG Debug設置為full,即打開對應核心的所有debug權限,即預解鎖。若刪除此編譯選項,即默認JTAG Debug設置為關閉,即預加鎖。

5. JTAG Debug的實時解鎖方案

出于安全性考慮,在實時解鎖方案中,可以首先默認配置JTAG是鎖死狀態。以DRA821 SBL為例,在SDK8.2中,在SBL的Makefile中默認會配置x509證書的debug extension并設置其為FULL權限,即MCU1_0 JTAG enable狀態,所以需要將其先進行關閉并刪除debug extension,改動如下patch所示:

pYYBAGQP33SAIHFFAABIy1qnf7E996.png

其次,需要在板級配置文件中,設置其為支持外部實時解鎖JTAG Debug,其改動如下patch所示:

pYYBAGQP33SAM5oLAAAwIzky1iI999.png

其中變量allow_jtag_unlock 等于0x5A代表支持外部進行實時的JTAG unlock,同樣的,JTAG Debug中其它變量的取值以及對應含義如下圖1所示。

poYBAGQP33WAO2kTAABicjRMYVI841.png

圖 1 boardcfg中Secure Debug配置中的參量取值及含義

修改完成之后,需要重新編譯boardcfg以及SBL等文件:

pYYBAGQP33aAFjDtAAAMDY6oA9U155.png

5.1 JTAG Debug的實時解鎖流程:

外部設備通過JTAG來解鎖對應核心JTAG調試權限時,首先需要將設計過的且符合ANS.1規則的x509證書傳輸給DMSC,DMSC會解析此x509證書,并經過校驗UID,revision等通過之后,對JTAG Debug進行對應的權限解鎖。其大致流程如下圖2所示:

poYBAGQP33aANnJvAABgdAz0QdM450.png

圖 2 JTAG Debug的實時解鎖流程

5.2 創建x509調試證書配置文件:

如5.1中圖2所示的,首先要編寫一個能夠通過DMSC檢查,并通過各項UID,revision等校驗的x509證書,而在生成證書之前,首先需要按照ANS.1的規則編寫一個配置文件。這樣才能保證生成的調試證書能夠被DMSC正確識別并進行配置。如下所示,為在DRA821中的x509調試證書配置文件模板。

pYYBAGQP33eAa50QAAAzuouF9xo493.png

值得注意的是,在不同芯片平臺(TDA4x或DRA8x),亦或同一芯片平臺的不同UID芯片中,進行不同核心(R5F/A72/DSP)的JTAG Unlock權限配置,開發人員只需對【debug】下的內容進行更改。下面將對【debug】中的四個配置參數含義以及設置原則進行介紹:

a. UID獲取

UID是對于每顆芯片的獨一無二的標志,在JacintoTM 7家族中,其為256bit的64個16進制數構成。一般來說,獲取UID的方法有三種:

UART boot模式下通過MCU UART獲取,并經過腳本解析得到。

利用dbgauth工具通過命令行獲取。

利用TISCI在代碼中獲取TISCI_MSG_GET_SOC_UID

其中第一種方法可參考應用手冊“SPRAD04“中的第四章節獲取。

其中第二中方法,將在本文5.4小節中介紹。

第三種方法參照TISCI手冊。

開發人員只需根據自身開發環境選擇其一即可。在獲取到UID之后,只需將其替換到 【debug】規則下的deviceUID中即可。

b. DebugType配置原則

DebugType為一個32bit數,其中低16bit數為debug level權限控制,高16bit目前為保留位,默認取全0即可。其中debug level的取值以及對應的含義如圖3所示:

poYBAGQP33iAZAk9AABev78OOvs081.png

圖 3 debug level取值及其含義

c. coreDbgEn配置原則

coreDbgEn控制哪些核心的non-secure debug將被打開,以Processor ID的形式列出,以DRA821為例,其內部所有處理器核心的processor ID如下所示:

pYYBAGQP33iAfXgjAABTu8mWD9M212.png

圖 4 DRA821芯片內部處理器核心對應ID取值

d. coreDbgSecEn配置原則

coreDbgSecEn控制哪些核心的secure debug將被打開,以Processor ID的形式列出,以DRA821為例,其內部所有處理器核心的processor ID同樣可參照圖4所示。

5.3 通過x509配置文件生成x509證書并簽名:

開發人員根據需求設計完配置文件后,需要適用openssl來生成對應的x509證書,并適用自己的密鑰對此證書進行簽名,才能保證此證書能被對應的HS-SE板子驗簽并解析。

poYBAGQP33mACMclAAAJpDtHl3Q278.png

其中“-key”后需要保持和開發人員HS-SE板子中燒寫的密鑰保持一致;“-out”后的文件即為將生成的x509證書文件;“-config”中即為在本文5.2小節中設計得到的配置文件。

5.4 CCS環境及dbgauth工具搭建:

在使用外部JTAG進行實時解鎖JTAG Debug時,需要使用CCS中的組件工具dbgauth。開發人員需要安裝CCS,建議安裝CCS 9.3及其之后版本:https://www.ti.com/tool/CCSTUDIO

安裝完畢后,按照下列步驟來配置環境:

針對芯片類型新建CCS configuration并進行launch,完畢后會在~/.ti/《ccs_version》/0/0/BrdDat/目錄下有對應的配置文件dat。

同樣的,安裝后dbgauth工具會在《ccs install》/ccs/ccs_base/common/uscif/目錄下。

需要確認當前版本的dbgauth是支持JacintoTM 7系列SoC的K3架構的:

pYYBAGQP33qAAA94AAAJxG6_xIc575.png

至此,環境搭建完畢。

5.5 利用證書進行實時JTAG解鎖:

基于5.4小節建立的環境,可通過dbgauth工具來獲取設備UID,以及實時解鎖JTAG等操作。首先需要將5.1小節中編譯得到的SBL以及TIFS放到boot media中,確認MCU1_0以及DMSC已經正常運行起來,例如獲取UID的命令以及打印為:

poYBAGQP33uAHJQkAAAZVId-NMg924.png

此時如果通過CCS直接鏈接MCU1_0的核心是無法連接的,因為默認的JTAG配置為lock狀態。

通過5.3小節中生成的證書進行JTAG解鎖的命令及打印為:

poYBAGQP33uABzGGAAApiX8gAg0494.png

執行完上述指令后,JTAG Debug將被打開,可以通過CCS對MCU1_0進行連接。

審核編輯:郭婷

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

    關注

    68

    文章

    18304

    瀏覽量

    222383
  • 芯片
    +關注

    關注

    447

    文章

    47838

    瀏覽量

    409689
  • soc
    soc
    +關注

    關注

    38

    文章

    3750

    瀏覽量

    215773
收藏 人收藏

    評論

    相關推薦

    可以實現的JTAG調試器的嵌入式系統

    ARM系列處理器正是通過JTAG 接口使用內部集成的ICE 功能, 并采用這種方式實現在線調試。此外CPLD、FPGA 等器件大多都可以使用JTAG 接口實現在線編程或下載。因此,
    的頭像 發表于 10-16 08:11 ?5852次閱讀
    可以實現的<b class='flag-5'>JTAG</b><b class='flag-5'>調試</b>器的嵌入式系統

    HS3210系列芯片datasheet pdf

    HS3210系列芯片datasheet pdf HS3210系列芯片是高集成度的高性能
    發表于 11-23 11:58

    Trimedia DSP芯片JTAG接口的仿真器設計

    Trimedia DSP芯片JTAG接口的仿真器設計:提出Trimedia DSP 芯片硬件仿真器的硬件電路組成和接口軟件設計; 介紹JTAG 接口的標準、工作原理及在
    發表于 05-12 17:15 ?70次下載

    JTAG調試原理(推薦)

    JTAG調試原理(推薦):ARM JTAG 調試原理
    發表于 05-27 08:59 ?21次下載

    JTAG調試原理(推薦)

    JTAG調試原理(推薦):溫度循環監測儀
    發表于 05-27 10:38 ?54次下載

    ARM JTAG調試的基本原理

    JTAG調試原理(推薦):這篇文章主要介紹ARM JTAG調試的基本原理?;镜膬热莅薚AP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECT
    發表于 05-27 10:44 ?147次下載

    ARM JTAG 調試原理

    這篇文章主要介紹ARM JTAG調試的基本原理?;镜膬热莅薚AP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的介紹,在此基礎上,結合ARM7TDMI詳細介紹了的JTAG
    發表于 07-14 23:19 ?82次下載

    JTAG調試接口電路

    JTAG調試接口電路 注:VPUMP和VJTAG需要接3.
    發表于 03-17 09:25 ?2586次閱讀
    <b class='flag-5'>JTAG</b><b class='flag-5'>調試</b>接口電路

    基于ARM開發的JTAG仿真器的調試設計

    基于JTAG仿真器的調試是目前ARM開發中采用最多的一種方式。大多數ARM設計采用了片上JTAG接口,并將其作為測試、調試方法的重要組成。 JTA
    發表于 06-30 15:20 ?3029次閱讀
    基于ARM開發的<b class='flag-5'>JTAG</b>仿真器的<b class='flag-5'>調試</b>設計

    基于JTAG的ARM芯片系統調試

    ARM處理器采用一種基于JTAG的ARM的內核調試通道,它具有典型的ICE功能,基于ARM的包含有Embedded ICE(嵌入式在線仿真器)模塊的系統芯片通過JTAG端口與主計算機連
    發表于 08-16 09:51 ?2432次閱讀
    基于<b class='flag-5'>JTAG</b>的ARM<b class='flag-5'>芯片</b>系統<b class='flag-5'>調試</b>

    《ARM JTAG 調試原理》下載

    這篇文章主要介紹ARM JTAG調試的基本原理?;镜膬热莅薚AP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的介紹,在此基礎上,結合ARM7TDMI詳細介紹了的JTAG
    發表于 11-15 17:35 ?0次下載
    《ARM <b class='flag-5'>JTAG</b> <b class='flag-5'>調試</b>原理》下載

    ARM JTAG 調試原理

    ARM JTAG 調試原理對于了解jtag結構由很好的幫助。
    發表于 03-10 14:08 ?10次下載

    天嵌科技Jtag調試小板介紹

    產品名稱:Jtag調試小板
    的頭像 發表于 11-13 09:53 ?2119次閱讀
    天嵌科技<b class='flag-5'>Jtag</b><b class='flag-5'>調試</b>小板介紹

    digilent JTAG-HS3編程電線 介紹

     JTAG-HS3是Digilent高性價比的高速Xilinx FPGA編程解決方案系列產品中的最新一款。在JTAG-HS1產品成功的基礎上,JTAG-HS3通過增加一個開漏緩沖器到引
    的頭像 發表于 11-13 17:12 ?5090次閱讀
    digilent <b class='flag-5'>JTAG-HS</b>3編程電線 介紹

    digilent JTAG-HS2編程電線 介紹

    JTAG-HS2編程電線是一款專為Xilinx FPGA所設計的高速編程解決方案。該電線完全兼容所有Xilinx工具,能被iMPACT?,ChipScope?和EDK無縫驅動。JTAG-HS2編程電線可以通過如下兩種方式與目標板相連
    的頭像 發表于 11-13 17:13 ?4807次閱讀
    digilent <b class='flag-5'>JTAG-HS</b>2編程電線 介紹
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>