基于MSP430的加密熔斷器設計
引 言
MSP430系列單片機是德州儀器(TI)公司推出的一款16位超低功耗單片機。它能夠在1.8~3.6 V電壓、1 MHz頻率的條件下運行,耗電電流在0.1~400μA。在運算速度上,MSP430系列單片機能在8 MHz晶振的驅動(dòng)下,實(shí)現125 ns的指令周期。16位的數據寬度、125 ns的指令周期以及多功能的硬件乘法器相配合,能實(shí)現數字信號處理的某些算法(如FFT等)。
在整合方面,MSP430系列單片機將大量的CPU外圍模塊集成在片內,有如下一些模塊:看門(mén)狗(WDT)、模擬比較器、串口、硬件乘法器、液晶驅動(dòng)器、10位/12位/14位ADC、端口0~6、基本定時(shí)器。其中定時(shí)器A、B均帶有多個(gè)捕獲/比較寄存器,同時(shí)可實(shí)現多路PWM輸出;模擬比較器與定時(shí)器配合,可方便地實(shí)現ADC;液晶驅動(dòng)多達160筆段;硬件ADC模塊在小于10 μs的速率下實(shí)現10~14位的高速、高精度轉換,同時(shí)提供采樣/保持與參考電壓;端口0、1、2能夠接收外部上升沿或下降沿的中斷輸入。
MSP430系列單片機的開(kāi)發(fā)調試有多種技術(shù)方案,其中以JTAG和BOOTSTRAP(簡(jiǎn)稱(chēng)“BSL”)方式最為方便。對于Flash型的MSP430單片機初期開(kāi)發(fā)進(jìn)行的仿真,只需要1臺PC機和1個(gè)JTAG控制器即可實(shí)現。進(jìn)入產(chǎn)品級開(kāi)發(fā)階段,為了保護用戶(hù)代碼,燒斷Flash的保護熔絲以后就無(wú)法再通過(guò)JTAG口訪(fǎng)問(wèn)單片機,這時(shí)用戶(hù)對Flash中的程序再進(jìn)行檢查或更新就只能通過(guò)BOOT-STRAP進(jìn)行。不用擔心用戶(hù)代碼會(huì )泄露,BOOTSTRAP提供了32字節256位的密碼保護,能完全確保代碼的安全性。
1 熔斷加密原理
MSP430系列單片機采用JTAG(實(shí)際上稱(chēng)為IEEE1149.1或邊界掃描)接口技術(shù),實(shí)現對單片機全部存儲器的訪(fǎng)問(wèn),包括程序Flash、ROM、RAM,并可對其進(jìn)行擦除、讀寫(xiě)。它能用于程序的下載,監測程序使用情況和各個(gè)變量與寄存器的使用情況,并可對其進(jìn)行修改。JTAG接口需要4根信號線(xiàn)、地線(xiàn)和電源線(xiàn)。
JTAG接口為程序的調試、仿真及監控帶來(lái)了很大的方便,大大提高了編程效率,縮短了開(kāi)發(fā)周期;但在程序測試完成轉換為產(chǎn)品推向市場(chǎng)時(shí),就必須對程序代碼進(jìn)行加密處理,防止程序代碼的泄漏。JTAG接口的安全性很差,只要符合JTAG標準的控制器就可以將程序代碼讀出,所以必須禁止JTAG功能。對于MSP430系列單片機,禁止JTAG功能的途徑是將單片機內部的加密保險絲熔斷,熔斷后的單片機就無(wú)法再使用JTAG功能,從而達到加密程序代碼的目的。
MSP430系列單片機在上電復位時(shí)會(huì )通過(guò)TDI/TCLK端對保險絲進(jìn)行檢測,當保險絲完好時(shí),在TDI/TCLK和地之間會(huì )有1 mA的電流流過(guò)。保險絲檢測出現在上電復位以后TMS端的第一個(gè)下降沿上,在第二個(gè)下降沿上會(huì )解除保險絲的檢測,直到下一次的上電復位再進(jìn)行保險絲檢測,即在每一次的上電復位都會(huì )對保險絲進(jìn)行檢測。保險絲檢測電流只有在保險絲檢測方式時(shí)才會(huì )流過(guò)TDI/TCLK端,當檢測不到保險絲電流時(shí),JTAG功能就會(huì )失效,且這種加密方式是硬件方式的加密,一旦保險絲熔斷,JTAG功能就永久失效了,無(wú)法再通過(guò)JTAG口訪(fǎng)問(wèn)單片機,從而保證了單片機內代碼的安全。
2 熔斷加密的時(shí)序及方法
MSP430單片機保險絲的熔斷必須在特定的條件下進(jìn)行。
簡(jiǎn)單地將6.5 V電壓加在TDI/TCLK端上時(shí),是無(wú)法熔斷保險絲的,必須在一定的時(shí)序及指令下才可以完成。下面是熔斷保險絲所需的指令及時(shí)序:
IR_SHIFT(“IR_CNTRL_SIG_16BIT”)為切換JTAG進(jìn)入16位數據接收模式;DR_SHIFT_IN(0x7201)為將TDO信號切換為T(mén)DI功能,TDI信號釋放,為接入熔斷電壓Vpp作準備;IR_SHIFT(“IR_PREPARE_BLOW”)為設置MSP430進(jìn)入保險絲熔斷方式;MsDelay(1)為延時(shí)1 ms,同時(shí)連接熔斷電壓Vpp至TDI信號端;TR_SHIFT(“IR_BX_BLOW”)為執行保險絲熔斷;MeDelay(1)為延時(shí)1ms,同時(shí)斷開(kāi)TDI端的熔斷電壓Vpp,TDI信號端切換回TDI功能,JATG狀態(tài)機復位。保險絲加密熔斷完成。
3 熔斷加密器的設計與實(shí)現
熔斷加密器可以實(shí)現對MSP430 Flash單片機的編程、燒熔絲和BSL下載??梢赃x擇編程后是否熔斷芯片內熔絲,進(jìn)行加密;可自行設置密碼,徹底保護芯片內容;可進(jìn)行完全擦除編程和保留編程,通過(guò)BSL方式讀出目標CPU內的代碼。
熔斷加密器的硬件采用了MSP430F1111A作為系統芯片,實(shí)現對目標JTAG口的通信控制、熔斷電壓Vpp的加載與分離、目標MSP430單片機中保險絲熔斷指令的控制。在電源部分,熔斷電壓Vpp及100 mA的熔斷電流是在7806三端穩壓芯片與地之間串接二極管IN4001來(lái)實(shí)現的;熔斷電壓Vpp的加載與分離通過(guò)繼電器的通斷來(lái)實(shí)現,并使用了3個(gè)LED分別指示目標單片機保險絲未熔斷、正在熔斷及已熔斷的狀態(tài)。
軟件部分是通過(guò)C語(yǔ)言來(lái)實(shí)現熔絲加密器與目標單片機之間的數據通信及指令控制的。
以下為加密熔斷器主程序:
本加密熔斷器在實(shí)際應用中取得了非常理想的效果,可對MSP430系列單片機的保險絲進(jìn)行可靠而有效的熔斷,完全保護了MSP430單片機中的代碼安全。整個(gè)系統的成本控制在30元左右,在實(shí)際的使用中達到非常好的經(jīng)濟效益和社會(huì )效益。
結 語(yǔ)
本系統可應用于整個(gè)MSP430系列單片機,具有功能強大、性能可靠、成本低、體積小等特點(diǎn)。完全可以替代目前市場(chǎng)上售價(jià)高達1000~2000元的編程器,具有非常廣闊的應用前景和推廣價(jià)值。
評論