色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

DCSM模塊使用說明

星星科技指導員 ? 來源:TI ? 作者:Brian Wang ,Young H ? 2023-04-03 09:59 ? 次閱讀

一、功能描述:

CSM加密是C2000系列芯片最基礎的加密方式,也是在前代產品(如F2803x/F2806x)中廣泛采用的加密方式。在最新的28004x、2837x等芯片中增加了雙碼安全模塊(DCSM),該功能支持將芯片中的memory劃為兩個獨立區域,并設置各自獨立的的128位CSM密碼。該功能可以阻止未授權人員訪問加密內容,進而有效防止您的代碼被重復或逆向編譯;與此同時,需要維護與升級的代碼可以存儲于另一個獨立區域內,并授權給相關人員使用。合理運用此功能,可以進一步地提高產品的安全性以及易用性。

二、功能使用:

2.1 芯片存儲的分區設置

下面以Control Suite中TMS320F28377S的 blinky_with_DCSM工程為例,講解DCSM模塊的用法:

首先必須明確,雖然DCSM模塊中設計了相關機制允許用戶反復設置和使用該功能,但對于DCSM模塊的不當操作仍然可能鎖死芯片,因此建議您在工程開發的末尾階段再進行DCSM模塊的相關設置和操作。

為了充分發揮雙碼安全模塊的作用,需要根據工程需要對MCU中的資源進行分區配置。通過配置GRABRAMx/GRABSECTx寄存器,按需求將RAM/FLASH分別劃入不同的Zone中,從而實現用兩套獨立密碼對不同區域分別進行安全管理。

poYBAGQqMuWATgANAAA3GbmGcoc610.png

圖1 GRABRAMx/GRABSECTx寄存器設置

以工程blinky_with_DCSM為例,假如我們想要將FLASH A 分配至Zone1進行保護,FLASH B分配至Zone2進行保護。參考手冊中關于Zx_GRABSECTR Register及Zx_GRABSECTR Register,需要對DCSM_Zx_ZoneSelectBlock.asm進行如下修改。將Zone 1GRABSECT中FLASH A對應的[1:0]位改為01或10;將Zone 2 GRABSECT中FLASH B對應的[3:2]位改為01或10;特別需要注意的是,由于.asm中一個section是按位寫入的,因此在對.asm文件進行修改時,必須以section為單位進行修改,即便有reserve的部分也需要將注釋刪掉進行編譯,否則寫入時只會按位寫入已編譯的內容,發生錯位,難以修改。

.sect"dcsm_zsel_z1"

.long0xFFFFFFFF;Z1-EXEONLYRAM

.long0xFFFFFFFF;Z1-EXEONLYSECT

.long0xFFFFFFFF;Z1-GRABRAM

.long0xFFFFFFFE;Z1-GRABSECT

.sect"dcsm_zsel_z2"

.long0xFFFFFFFF;Z2-EXEONLYRAM

.long0xFFFFFFFF;Z2-EXEONLYSECT

.long0xFFFFFFFF;Z2-GRABRAM

.long0XFFFFFFF7;Z2-GRABSECT

2.2分區的基本設置

在完成了對要保護存儲的分區之后,我們需要了解如何給兩個區域設置不同的密碼。

對于兩個保護Zone,每個都有一個專屬的OTP Block,以對各Zone進行安全設置,具體包含的資源及作用如下:

Zx-LINKPOINTER1-3 配置Zx OTP中Zone Select Block的位置
Zx-PSWDLOCK 用于使能Password Lock
Zx-CRCLOCK 用于使能Safe CRC
ZoneSelectBlock(0x20-0x1F0) Zone Select Block 預留位置
Zx-EXEONLYRAM 用于使能RAM的Execute-only 保護
Zx-EXEONLYSECT 用于使能FLASH的Execute-only 保護
Zx-GRABRAM 用于配置RAM的所在分區
Zx-GRABSECT 用于配置FLASH的所在分區
Zx-CSMPASSWORD 用于配置分區的CSM密碼

為了能夠讓用戶多次使用該功能、設置不同的密碼,如圖2,28004x系列MCU在USERS OTP中設置了多個存儲密碼及相關信息的位置(ZoneSelect Block),用戶可以通過LINKPOINTER自由選擇當前使用哪一個Zone Select Block。

LINKPOINTER與Zone Select Block 對應關系如圖3所示。作為一種校驗措施三個LINKERPOINTER的值設為相同,若LINKERPOINTER1/2/3值不相同,則LINKPOINTER的值將被置為全1,系統將默認選擇Zone-Select Block 1(0x20)。此外,由于Zx-LINKERPOINTER位于OTP區域,因此該寄存器的各位只能由1寫成0,而不能逆向操作。因此,只有Zx-LINKPOINTER的值從“全F”寫起,并在每次重新設置時按照下表順序逐位寫0,才能夠充分利用到OTP中的所有Zone-Select Block。

poYBAGQqMuWAVgXZAADXR4Cr_kA387.png

圖2 Zonex OTP Flash

poYBAGQqMuaAaNPsAAFtVXzz_N4906.png

圖3 Zx-LINKPOINTER與Zone Select Block對應關系

以工程blinky_with_DCSM為例,假如是第一次使用DCSM功能,為了充分利用所有Blocks,選取Zone_Select Block0作為當前使用的Block,在DCSM_Zx_ZoneSelectBlock.asm中保證Z1-LINKPOINTER值為全F,此時選取的Zone_Select Block起始地址為0x70820。

.sect"dcsm_otp_z1_linkpointer"

.long0x1FFFFFFF;Z1-LINKPOINTER1

.long0xFFFFFFFF;Reserved

.long0x1FFFFFFF;Z1-LINKPOINTER2

.long0xFFFFFFFF;Reserved

.long0x1FFFFFFF;Z1-LINKPOINTER3

.long0xFFFFFFFF;Reserved

類似地,如果后續工程需要對密碼以及分區情況進行修改,我們可以啟用Zone_Select Block1,將LINKERPOINTER的最后一位寫0,對應的修改如下:

.sect"dcsm_otp_z1_linkpointer"

.long0x1FFFFFFE;Z1-LINKPOINTER1

.long0xFFFFFFFF;Reserved

.long0x1FFFFFFE;Z1-LINKPOINTER2

.long0xFFFFFFFF;Reserved

.long0x1FFFFFFE;Z1-LINKPOINTER3

.long0xFFFFFFFF;Reserved

此時需要注意還需要將CMD文件中對應Zone Select Block地址的內容進行修改,保證寫入的Flash地址與當前的Zone Select Block正確對應。

/*DCSMZ1ZoneSelectContents(!!Movable!!)*/

/*Z1OTP.Z1passwordlocations/FlashandRAMpartitioning*/

DCSM_ZSEL_Z1_P0:origin=0x78030,length=0x000010

最后在SECTIONS中將要寫入區域對應處的type=DSECT 刪除,否則FLASH寫入不會進行。

SECTIONS

{

b0_dcsm_otp_z1_linkpointer:>B0_DCSM_OTP_Z1_LINKPOINTERPAGE=0,type=DSECT

/*Delete type=DSECT when writing in OTP */

特別需要注意的是:由于以上涉及到的寄存器都位于OTP(One-Time Programmable)FLASH中,不能進行反復更改,因此建議在開發后期代碼以及內存分配確定之后,再進行相關的設置。

2.3 加密功能及其使用

在完成了對MCU中memory的分區以及Zone Select Block位置的設置后,下面來看DCSM所支持的幾種加密模功能:

1)CSM密碼加密與解密:

CSM加密是DCSM加密的基礎,在完成對MCU 存儲的分區之后,需要為分區設置各自的密碼才能使能加密功能。密碼寄存器Zx-CSMPSWD0/1/2/3位于各自的OTP的Zone Select Block中,具體位置由該區域的LINKPOINTER決定。對于2837x系列,當Zx-CSMPSWD0/1/2/3的值為默認值1,該區域處于解鎖狀態。當寄存器值為全0,該區域會被鎖死,因此用戶不應當使用全0密碼。

以工程blinky_with_DCSM為例,要設置Zone1的密碼,我們需要在DCSM_Zx_ZoneSelectBlock.asm中將Zx-CSMPSWDx寄存器改為想要設置的密碼:

.sect"dcsm_zsel_z1"

.long0xFFFFFFFF;Z1-EXEONLYRAM

.long0xFFFFFFFF;Z1-EXEONLYSECT

.long0xFFFFFFFF;Z1-GRABRAM

.long0xFFFFFFBF;Z1-GRABSECT

.long0x11223344;Z1-CSMPSWD0(LSWof128-bitpassword)

.long0x11223344 ;Z1-CSMPSWD1

.long0x55667788;Z1-CSMPSWD2

.long0x55667788;Z1-CSMPSWD3(MSWof128-bitpassword)

同樣需要在CMD中對相應的dcsm_zsel_zx 的sections 進行修改,刪除type=DSECT,對FLASH的操作才能夠進行。這樣就完成了Zonex 密碼的設置工作。

b0_dcsm_zsel_z1 : > B0_DCSM_ZSEL_Z1_P0 PAGE = 0

進行加密后,通過仿真器讀取Zone 1 OTP Flash結果如下:

pYYBAGQqMueAbB2bAAHa7dtnuZI989.png

圖3 加密后的OTP區域

可以看到此時Zone 1 OTP Flash中除了 CSMPSWDx寄存器中的密碼,其它部分均進行了加密操作。之所以采用這樣的設計,是為了在開發初期開發者可以利用這一特性隨時查看CSM,避免因為密碼遺忘或者寫入操作造成芯片被鎖死。對于密碼區域的加密需要通過Password Lock 功能進行,將在后文進行進一步描述。

此時,如果試圖通過仿真器讀取加密區域Flash B,可以看到Flash區域也進行了加密(返回全0):

poYBAGQqMuiAfLoXAALlEHysYUI054.png

圖3 未加密的Flash(左)與加密后的Flash(右)

要對CSM進行解密,需要經過Password match flow(PMF)流程,程序將從兩個Zone讀取CSM PWL并與寫入CSMKEYx寄存器的密碼進行比對,若密碼完全一致,則為該區域解密,否則解密失敗。

pYYBAGQqMuiAIHEMAABwolV1LLg364.png

圖4 Password Match Flow 流程圖

解密操作可以通過幾種方法進行,首先可以在debug界面單擊tools -> on chip flash -> 在對應位置處輸入密碼,點擊Unlock:

poYBAGQqMumAAFuDAAArpOhJ2mo380.png

圖5在On chip flash中進行密碼匹配

也可以在.gel文件中找到寫入csmkey寄存器的代碼段,并自行修改密碼:

*(unsignedlong*)0x5F010=0x11223344;// Virtual password

*(unsignedlong*)0x5F012=0x55667788;

*(unsignedlong*)0x5F014=0x11223344;

*(unsignedlong*)0x5F016=0x55667788;

另外,也可以通過在芯片內部執行一段解密程序完成解密操作,具體代碼可參照.gel文件。

以blinky_with_DCSM為例,如果把代碼段寫入FLASH A,并將FLASH A劃入Zone1設置密碼保護。在正確輸入密碼時,燒錄操作可以正常進行。

而在不輸入正確密碼時,會出現解鎖失敗的提示,燒錄也會報錯。

pYYBAGQqMuqAScbcAAA1qbG-g44085.png

圖6 未解鎖狀態下進行燒錄報錯

NOTE:特別需要注意的是,在使用280049系列芯片時,與傳統C2000系列芯片不同,其ZxOTP_CSMPSWD1寄存中寫入的默認密碼不是全“1”。由于OTP寄存器的特殊性,只能在默認設置的基礎上將1改成0,否則可能發生FLASH寫入錯誤。

poYBAGQqMuuAa1cRAABmywbGNUg221.png

圖8 28004x CSMPWSD1默認密碼表(部分)

2)仿真代碼保密邏輯 Emulation Code Security Logic(ECSL)

在CSM的基礎上,芯片利用CSM密碼的后64位設計了仿真加密邏輯。如果試圖在加密代碼中Halt就會觸發該保護,斷開仿真連接。用戶需要在CSMKEY(0/1)中寫入正確的64位密碼才能啟用仿真,但此時并不會解鎖CSM保護,對CSMKEY(0/1)的寫入方法可以參考上一條。

pYYBAGQqMuuACjMdAABH9EiZljE465.png

圖8 在加密代碼中Halt觸發仿真保護

特別注意,在debug一個加密MCU時,仿真器需要一些時間控制CPU,但此時CPU可能已經運行并觸發ECSL保護導致斷連。要解決此問題,請使用Wait Boot Mode boot選項,在此模式中,CPU會運行在一個循環中而不進入應用程序,從而避免觸發保護。具體設置方法請參考技術手冊Boot Rom部分,Launchpad可以通過撥動相應的開關進入此模式。

3)CPU加密邏輯 CPU Secure Logic(CPUSL)

CPU加密邏輯可以防止未授權者通過Watch Window讀取CPU寄存器,在程序指針指向保護區域時,所有對于CPU寄存器的訪問都被禁止(程序指針除外)。在此情況下,最好不要對CPU寄存器進行寫入。另外,如果CSM被解鎖,此外,CPUSL也將被關閉。

poYBAGQqMuyAc63eAAB2GEpF9Jk788.png

圖8 加密代碼運行過程中CPU Registers不可見

4)僅執行保護 Execute-Only Protection

對于存儲關鍵數據的RAM或FLASH,TI提供了Execute-Only Protection。當該邏輯啟用,任何對該區域數據的讀取都將被禁止。例如如果試圖使用另一個加密區域中的代碼對Execute-Only Protection加密區域中的代碼進行復制、讀取等操作都將被禁止。通過寫入EXEONLYSECT以及EXEONLYRAM寄存器對應位的值,可以啟用該功能。

5)密碼鎖 Password Lock

如前文所述,若只采用CSM加密,可以通過Memory Browser發現此時對應CSM密碼的位置并沒有進行加密。在開發完成后,開發者需要通過Password Lock功能對此區域進行加密,以防他人讀取密碼并進行解密。啟用該保護的方法是向對應區域的PSWDLOCK寄存器0:3位寫入0xF以外的值。

pYYBAGQqMu2ACfQBAAAQ5U6WrQ8253.png

圖9 未開啟Password Lock時的ZSB0寄存器值

以blinky_with_DCSM為例,要設置Zonex的密碼,需要在DCSM_Zx_ZoneSelectBlock.asm中將Zx-PSWDLOCK[3:0]該為非全1,并在CMD中刪去相應部分的.DSECT:

.sect"dcsm_otp_z1_pswdlock"

.long0xFFFFFFFE;Z1-PSWDLOCK

.long0xFFFFFFFF;Reserved

poYBAGQqMu2AJGe_AAAsCdghjzc396.png

圖10開啟Password Lock時的ZSB0寄存器值

至此,我們就完成了DCSM中各種安全功能的介紹和設置,特別注意,由于PSWDLOCK等寄存器并不位于Zone Select Block當中,因此只能進行一次寫入,不能進行更改,因此應該在程序開發后期再加此類保護。

三、小結

DCSM加密相較于傳統的CSM加密具有更完善的保密措施和更靈活的使用方法。雙密碼的引入允許用戶用不同密碼管理不同部分的代碼,為產品的代碼安全以及后期的升級維護都帶來了極大的便利。本實例以2837x系列芯片為對象,描述了DCSM模塊常見的使用方法。28004x系列芯片僅在DCSM OTP區域的數量和使用方法上與2837x略有不用,也可參照此說明進行相應操作。

另外部分C2000芯片也可以使用Unique ID作為種子進行進一步的加密,具體方法不在此展開。

審核編輯:郭婷

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

    關注

    456

    文章

    51155

    瀏覽量

    426352
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17316

    瀏覽量

    352268
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    114901
收藏 人收藏

    評論

    相關推薦

    求1.77寸TFT模塊使用說明

    哪位朋友有1.77寸TFT模塊使用說明可以發給我嗎?是中文版最好,不是也行,謝謝了?。。?!
    發表于 08-01 12:08

    步進電機模塊使用說明

    FPGA控制_步進電機模塊使用說明今天給大俠帶來步進電機模塊使用說明,話不多說,上貨。一、步進電機簡介步進電機是將電脈沖信號轉變為角位移或線位移的開環控制電機,是現代數字程序控制系統中
    發表于 07-07 07:57

    PCA9685使用說明

    舵機驅動板,網上很多資源,但是基于STM32F103的能用代碼實在太少。具體使用說明我覺得這兩個鏈接寫的夠詳細了,附上鏈接1.PCA9685使用說明12.PCA9685使用說明2文字說明
    發表于 08-11 06:03

    DCSM模塊的實驗方法

    一、功能描述:CSM加密是C2000系列芯片最基礎的加密方式,也是在前代產品(如F2803x/F2806x)中廣泛采用的加密方式。在最新的28004x、2837x等芯片中增加了雙碼安全模塊DCSM
    發表于 11-11 07:15

    J901_GPRS嵌入式模塊使用說明

    J901 GPRS 嵌入式模塊使用說明無線通訊領域應用。
    發表于 12-22 11:03 ?10次下載

    ESP8266_SPI模塊使用說明_Version 0.1

    ESP8266__SPI_Module_User Guide,SPI 模塊使用說明
    發表于 12-30 14:40 ?281次下載

    LQ_OV7620模塊使用說明

    OV7620模塊使用說明,超實用,我用了很多遍
    發表于 01-22 15:54 ?68次下載

    FBs-CBCAN總線模塊使用說明

    FBs-CBCAN總線模塊使用說明
    發表于 02-07 18:09 ?15次下載

    ET200S高速計數模塊使用說明

    ET200S高速計數模塊使用說明免費下載。
    發表于 04-23 09:37 ?8次下載

    12864四線OLED模塊使用說明手冊

    12864四線OLED模塊使用說明手冊
    發表于 08-26 16:24 ?130次下載

    DCSM模塊使用說明

    描述: CSM加密是C2000系列芯片最基礎的加密方式,也是在前代產品(如F2803x/F2806x)中廣泛采用的加密方式。在最新的28004x、2837x等芯片中增加了雙碼安全模塊DCSM),該
    的頭像 發表于 11-10 09:37 ?2757次閱讀

    DCSM模塊使用說明

    DCSM模塊使用說明
    發表于 11-01 08:26 ?0次下載
    <b class='flag-5'>DCSM</b><b class='flag-5'>模塊</b><b class='flag-5'>使用說明</b>

    ph檢測模塊使用說明

    電子發燒友網站提供《ph檢測模塊使用說明.pdf》資料免費下載
    發表于 11-17 10:04 ?0次下載
    ph檢測<b class='flag-5'>模塊</b><b class='flag-5'>使用說明</b>

    國揚智能光模塊使用說明

    電子發燒友網站提供《國揚智能光模塊使用說明.ppt》資料免費下載
    發表于 12-26 10:02 ?0次下載

    PROFINET轉SSI協議模塊快速使用說明

    Profinet網關PROFINET轉SSI協議 PN4SSI模塊快速使用說明
    的頭像 發表于 10-17 16:13 ?379次閱讀
    PROFINET轉SSI協議<b class='flag-5'>模塊</b>快速<b class='flag-5'>使用說明</b>
    主站蜘蛛池模板: 97超碰在线视频人人av | adc年龄确认大驾光临入口 | 精精国产www视频在线观看免费 | 国产精品青青青高清在线密亚 | 日本一卡2卡3卡四卡精品网站 | jizz国产丝袜18老师美女 | 人与畜禽CROPROATION免费 人淫阁 | 亚洲宅男天堂a在线 | 日本护士在线观看 | 天天综合网网欲色 | 嫩草国产福利视频一区二区 | 麻豆产精品一二三产区区 | 香蕉久久夜色精品国产小说 | 色噜噜视频| 一本之道高清在线观看一区 | 久久草福利自拍视频在线观看 | 免费看午夜高清性色生活片 | 拍戏被CAO翻了H | 精品国产成人a区在线观看 精品国产成人AV在线看 | 私密按摩师在线观看 百度网盘 | 国产精品久久久久久52AVAV | 偷偷鲁青春草原视频分类 | 2018国产天天弄谢 | 中文字幕高清在线中文字幕 | 香蕉视频国产精品 | 国产高清在线观看视频 | 俄罗斯mm | 色欲人妻无码AV专区 | 曰曰夜夜在线影院视 | 久久99视频免费 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 799是什么意思网络用语 | 野花日本高清在线观看免费吗 | 亚洲色噜噜狠狠站欲八 | 乳女教师欲乱动漫无修版动画 | 国产剧果冻传媒星空在线观看 | 影音先锋av色咪影院 | www.av一区| 精品无码久久久久久久动漫 | 亚洲视频精选 | 欧美GAY猛男GAYA片18禁 |