為了智財權的保護,或其它一些目的,為了保護微控制器中的軟體不能被讀出,可以選擇具有加密功能的微控制器,保護**不被非法讀取。由於msp430可以進行flash自程式設計,當然就可以進行可公升級的程式設計,以後可以通過序列口或者其它方式進行韌體的公升級。
用msp430設計的硬體可能與計算機上執行的上位機程式協作完成一定功能,這樣就可以在msp430與軟體之間建立一定的協議進行軟體和硬體的保護,比如硬體的序列號,或軟體的序列號,當軟體發現硬體的序列號不正確時而不繼續執行,當硬體發現使用的是非卻破解版的控制程式,就可以進行自毀,自動銷毀內部所有的程式,使得微控制器程式被清空而不能使用。
進行自毀還可以產生硬體的損壞,如地求板上提供12v或更高的電壓,通過一定的檢測電路檢測是否滿足,不滿足要求,程式則不繼續執行,當需要自毀時把12v的電壓直接加到3.3v或5v的器件上去進行硬體銷毀。但這在一定程度上造成了危險性,如果設計不善可能會引發火災,並推薦使用。
下面只說msp430實現程式自毀。
方案1:通過全部擦除flash的指令擦除全部flash內容,但當前的程式正在使用flash,使得該指令不能夠有效執行,這些操作在程式中不能完成。
方案2:將flash中擦除操作**複製到ram中,因為msp430是馮氏結構,ram與flash為同一位址空間,而程式中擦除**用到的在ram中的變數所使用的ram只要不被覆蓋,程式應該能夠在ram中執行,而且**中不能有跳轉指令,因為這些指令在編譯成機器碼時跳轉的位址已經確定,使用這些指令就會使使程式跑飛,而會用訪問flash,這樣也會導致擦除操作失敗。在開始擦除操作後還不能退出ram進入到fash,這樣一訪問flash也會導致擦除操作失敗。
通過試驗方案2並沒有成功,可能複製到ram後又跳轉到了flash中造成操作失敗,需要修改**進一步試驗。
方案3:擦除除擦除操作**外的所有程式。這樣也只留下很小一部分不重要的**,實現**保護的目的可以達到。
首先找到當前**段所在的位置,通過塊擦除操作擦除除當前**所在塊的所有程式;然後擦除該塊中當前**面前、後**,這些操作不能通過擦除操作,但可以通過位元組或字寫入操作,因為寫操作只能把1寫成0,乾脆直接全寫成0,這樣就可以僅剩下擦除操作的一小段**,為了停止操作失敗,在操作等待時做一無限迴圈,不要跑到其它位置的flash,以防礙扣除操作。
該方法已經取得成功。
msp430鍵盤程式
msp430 按鍵程式 含電路圖及源 include void init port void void delay void int keyprocess void return nres 處理來自埠 1 的中斷 interrupt port1 vector void port isr void i...
MSP430電平轉換
說道到這個電平轉換,寫程式的時候居然還要示波器來觀察現象,表示我們交的是211的學費,上的卻不是211大學,創新實驗室的儀器裝置真的是少的可憐啊,我級不吐槽了說說這個電平轉換的一些知識還有看法吧。看到原理圖首先得說說接線帽的問題,這個很重要,接線帽 的使用會連線到不同的引腳上,大家看原理圖的時候就會...
MSP430學習收穫
一 程式中最好不要出現乘和除,影響效率。aiver sum 16可以換成aiver sum 4 二 低功耗就是精煉減少cpu工作時間。靠讓cpu進入休眠來實現。只能用中斷和復位可以喚醒休眠。三 中斷函式前加上 interruput關鍵字表明是中斷函式式中斷函式 注意是兩個 四 pragmati cv...