msp430熔絲及加密總結
msp430是使用熔絲或者電子熔絲去做內部**的保護,如果熔絲燒斷,那麼將不能使用jtag或者bsl去非法訪問內部**。msp430f1/f2/f4系列是採用物理熔絲的方式,使用程式設計器在test引腳或者tdi引腳上加6.5v±0.5v的電壓,採取這種方式,jtag介面被禁止而且是不可恢復的,只能通過bsl去訪問。msp430f5/f6/fr2/fr4/fr5/fr系列都是採用e-fuse電子熔絲的方式去做加密,一般是在flash/fram中的2個字的位置(簽名)內寫入一定的內容去實現加鎖或者加密碼。器件只能通過密碼保護的bsl去訪問。通過bsl去訪問器件,去清除jtag簽名區,那麼是可以重新恢復並且訪問mcu的。
jtag簽名在17fch~17ffh位址內,寫入全0或者全f以外的值會將jtag/bsl介面鎖住。要對這些位址程式設計,那麼首先要清除sysbslc暫存器中的sysbslpe位,用於解鎖bsl flash被保護的區域。
如果要清除jtag/sbw保護,可以使用bsl去對jtag簽名寫入全0,bsl也是通過中斷向量表中的ffe0h~ffffh中的至少32bytes的密碼去做保護。因為jtag簽名是位於被保護的bsl區域,bsl首先回清除sysbslc暫存器中的 sysbslpe位,隨後對jtag簽名寫入全0.
fr5xx/fr6xxefuse:
jtag簽名在fram的ff80~ff83h範圍內,寫入 55555555h到jtag簽名中,jtag/bsl介面被無密碼的鎖住。如果想要解除jtag/sbw保護,bootloader可以使用5555或aaaa以外的值去清除jtag簽名。或者執行bsl整體擦除指令。
如果是5555_5555h到jtag簽名區中,那麼jtag會被直接鎖死,只能通過bsl命令去解鎖。
如果寫入aaaa_***xh到jtag簽名區中,那麼jtag被密碼鎖死,可以通過密碼去讓**器訪問mcu。
如果jtag簽名中寫入其它值,那麼jtag/sbw沒有被鎖住。
fr4xx/fr2xxefuse:
jtag簽名在ff80~ff83h範圍內,對jtag簽名中寫入 00000000hor ffffffffh以外的值可以將jtag進行無密碼解鎖的鎖住。可以使用bootloader對簽名去寫入全0或者全1去解鎖jtag/bsl保護。bsl也是密碼保護的,在中斷向量表中的至少32個位元組做bsl的密碼,也可以通過bsl的整體擦除命令去解鎖。
所以,如果jtag/sbw被鎖住,那麼**器不能通過密碼去訪問器件,只能採用bsl按照一定的密碼匹配去解鎖器件。
fr5/fr6xx加密例程分析
在linker檔案中將.jtagsignature分配到jtag簽名區去,0xff80中寫入0xaaaa,那麼是採用密碼的方式加鎖efuse,0xff82中寫入0x0002,那麼密碼的長度為2個位元組。.jtagpassword被分配到0xff88起始的區域中,寫入相應的密碼。
器件加密後,再進行一次bor復位,那麼jtag被鎖住了。可以再ccs中對.ccxml檔案進行配置然後再次讓**器訪問器件。如下圖所示。
這時候mcu是已經被加密了,如果執行晶元擦除操作,或者在**中將jtag簽名區寫入ffff_ffffh(5555或者aaaah之外的值),那麼晶元也能解密。
另外,bsl也是可以被禁止使用的。
完成MSP430的IAP公升級程式(總結)
經過各種測試,修改終於找到了問題的原因,現在大致總結下我在寫iap程式的時候 遇到的問題和解決方案。首先要實現微控制器的iap公升級程式,我們要知道自己的ide如何能 將程式的函式或者變數的編譯位址固定,因為對於bootload程式,我們要固定它的位址,還有從bootload跳轉到的程式執行的位址。...
MSP430微控制器原理及應用 實驗
實驗專案 msp430簡單程式設計 實驗目的 學會用c語言進行簡單程式設計 實驗要求 掌握編寫排序程式 實驗內容 1 設計乙個對8個資料 0 255,任意設定 的由小到大排序程式。2 將結果顯示在lcd顯示器上。程式 如下 include include config.h include inclu...
MSP430微控制器各種暫存器總結(3) IO
ppt msp430f6638使用者手冊 實驗教程 由於這一章的暫存器比較簡單,也比較容易記住,在這裡就簡寫了。暫存器名稱01 復位值pxin 輸入暫存器 輸入低輸入高 不確定pxout 輸出暫存器 輸出低輸出高 不確定決定上下拉輸入 下拉上拉 不確定pxdir 方向暫存器 輸入 預設 輸出0 px...