<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MAXQ1103破壞性復位診斷程序

MAXQ1103破壞性復位診斷程序

作者: 時(shí)間:2010-12-25 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:是一款安全微控制器,當任何一個(gè)篡改檢測輸入被觸發(fā)時(shí),將立即擦除敏感數據。經(jīng)過(guò),恢復向量允許運行,執行所需要的記錄或自毀事件通報等操作。本應用筆記介紹了利用Rowley CrossWorks C編譯器編寫(xiě)的相關(guān)內容。

本文引用地址:http://dyxdggzs.com/article/151142.htm

引言

安全微控制器具有很多重要功能,能夠防止物理篡改事件并保護有價(jià)值的數據。數據源(DRS)是這些功能中關(guān)鍵的一個(gè),DRS允許多個(gè)自毀輸入(SDI)立即擦除和數據密匙以及內部靜態(tài)RAM的內容。如果應用程序存儲在內部程序閃存的加密區內,擦除程序密鑰后將使微控制器處于無(wú)效狀態(tài)。

早期的Maxim產(chǎn)品,例如:DS5250,集成了DRS功能。而能夠在之后執行未經(jīng)加密的程序。這個(gè)診斷程序可以執行任何內部未經(jīng)加密的程序,不需要訪(fǎng)問(wèn)外部存儲器總線(xiàn)(該總線(xiàn)在重新上電復位之前處于禁止狀態(tài))。

例如,診斷程序可以用于系統維護告警,通過(guò)一個(gè)調制解調器向控制中心報告“運行故障”,提示用戶(hù)系統發(fā)生問(wèn)題。該程序可以執行擦除功能并可重新編程內部閃存。

DRS診斷程序配置

DRS診斷程序由DIAE的DRSRS寄存器位使能,DRSRS寄存器位DIAS[3:0]指定程序代碼的位置,確定SDI清零后微控制器的向量映射位置。如果診斷向量的地址指針指向加密存儲區,微控制器ROM在復位后將簡(jiǎn)單地中斷處理器操作,這是DIAE=0時(shí)的默認狀態(tài)(沒(méi)有使能診斷程序)。

可以在正常運行程序的任何時(shí)間寫(xiě)入DRSRS寄存器,這個(gè)寄存器還將保留破壞性復位源的指示標志,這些標志可供診斷程序使用或記錄到非易失存儲器。

應用舉例:加密時(shí)鐘

為了演示MAXQ1103的DRS診斷程序,采用Rowley CrossWorks編譯器編寫(xiě)了一段C語(yǔ)言小程序。該程序利用MAXQ1103評估板(Rev D)構建一個(gè)簡(jiǎn)單的實(shí)時(shí)時(shí)鐘(RTC)。

日期和時(shí)間持續顯示在評估板的LCD上,每秒鐘更新一次。利用評估板數字鍵盤(pán)上的ENT鍵,用戶(hù)可直接設置日期和時(shí)間;指針自動(dòng)跟著(zhù)日期和時(shí)間字段刷新,圖1給出了一個(gè)簡(jiǎn)單的示例。

圖1

如果任意一個(gè)SDI輸入引腳拉高(至VDDIO)并隨后釋放,微控制器將執行一次破壞性復位。這一復位動(dòng)作會(huì )擦除程序密鑰,主程序將停止運行。此時(shí),LCD會(huì )顯示一個(gè)信息,指示發(fā)生了DRS,DRSRS寄存器內容將被顯示到顯示器上,見(jiàn)圖2。

圖2

DRSRS寄存器的標志指示導致破壞性復位的SDI源。另外,最近一次DRS的時(shí)間和日期將被顯示在LCD上。這項功能并非DRS診斷程序嚴格要求的部分,但DRS記錄器所捕獲的SDI觸發(fā)時(shí)刻的RTS (RTC秒計數器)寄存器值的確為DRS診斷程序的關(guān)鍵。

詳細說(shuō)明

RTC“主程序”的源代碼非常簡(jiǎn)單,本應用筆記將不再詳述,但這個(gè)源程序很重要,可能作為RTC例程被重復使用。這部分代碼儲存在CODE存儲器段,始于程序存儲器地址0x000600。MAXQ30_Target.js包含預裝載程序命令,使能帶有PMAC和PMSZ寄存器的64k字加密區域,該區域采用3DES加密,存儲CODE程序。

為了執行DRS恢復向量,必須保留一定的空間不被主程序使用。MAXQ1103.xml文件中聲明一個(gè)存儲器段,始于0x3C600,長(cháng)度為16k字,聲明存儲器段名為RESERVE。由此,我們可以使用Rowley匯編指示CSEG RECOVERY在適當地址存放我們的DRS診斷程序,該地址由DRSRS寄存器的DIAS[3:0]位指定。

函數enable_drs_diag()在DRSRS寄存器寫(xiě)入0x00001E01值。這個(gè)數值能夠使能診斷向量,選擇0x3C600診斷向量位置。

發(fā)生破壞性復位后(例如,導致自毀的輸入狀態(tài)已解除),DRS診斷程序將被ROM調用。這個(gè)程序不會(huì )調用任何位于加密區(由PMAC/PMSZ定義)的程序,程序須避開(kāi)加密區,否則會(huì )導致所不希望的系統操作。

恢復程序包含在drs.asm文件內,說(shuō)明存儲在RECOVERY區域的CSEG的使用。

診斷向量可能調用內部程序存儲器中未經(jīng)加密的C程序,程序調用之前必須安裝C運行環(huán)境,請參考Rowley編譯器的crt0.asm文件決定需要安裝的內容。

結論

MAXQ1103診斷程序為程序設計人員提供了一個(gè)在與安全有關(guān)的破壞性復位之后執行代碼的方法。它清晰地劃分了加密程序和非加密恢復程序。診斷程序能夠記錄威脅安全性的攻擊,在自毀操作后采取適當的措施,例如:遠程報警或進(jìn)一步擦除內部存儲器。



關(guān)鍵詞: 程序 診斷 復位 破壞性 MAXQ1103

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>