微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,包括以下步驟:提供至少一中央處理單元,一總線控制器以及一程序存儲(chǔ)器,所述中央處理單元通過所述總線控制器連接所述程序存儲(chǔ)器;將所述程序存儲(chǔ)器分為復(fù)數(shù)個(gè)程序分區(qū);提供一密鑰存儲(chǔ)器,在所述密鑰存儲(chǔ)器中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)的復(fù)數(shù)個(gè)分區(qū)密鑰,用于鎖定所述程序分區(qū)中的程序。本發(fā)明對(duì)程序存儲(chǔ)器進(jìn)行分區(qū),每個(gè)程序分區(qū)設(shè)置不同的密匙鎖定,只允許被密匙認(rèn)可的設(shè)備執(zhí)行此程序分區(qū)內(nèi)的程序,其他任何操作如讀、寫、擦除都將被拒絕,同時(shí)此程序分區(qū)的密鑰將不能被隨意更改,且不能被任何主動(dòng)設(shè)備或從動(dòng)設(shè)備讀出,保證了程序存儲(chǔ)器的程序不會(huì)被破譯或者擦除毀壞。
【專利說明】微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其是指一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法和裝置。
【背景技術(shù)】
[0002]MCU(Micro Control Unit)中文名稱為微控制器,又稱單片微型計(jì)算機(jī)(SingleChip Microcomputer)或者單片機(jī),是指隨著大規(guī)模集成電路的出現(xiàn)及其發(fā)展,將計(jì)算機(jī)的CPU、RAM、ROM、定時(shí)計(jì)數(shù)器和多種1/0接口集成在一片芯片上,形成芯片級(jí)的計(jì)算機(jī),為不同的應(yīng)用場合做不同組合控制。
[0003]一般說來,SOC稱為系統(tǒng)級(jí)芯片,也有稱片上系統(tǒng),意指它是一個(gè)產(chǎn)品,是一個(gè)有專用目標(biāo)的集成電路,其中包含完整系統(tǒng)并有嵌入軟件的全部內(nèi)容。同時(shí)它又是一種技術(shù),用以實(shí)現(xiàn)從確定系統(tǒng)功能開始,到軟/硬件劃分,并完成設(shè)計(jì)的整個(gè)過程。
[0004]微控制器(以下簡稱MCU)或其他嵌入式系統(tǒng)(以下簡稱S0C)常常存在多次開發(fā)的情況,舉例來說,MCU/S0C芯片制造商提供給系統(tǒng)開發(fā)用戶的開發(fā)程序庫,或者系統(tǒng)開發(fā)商提供給用戶的程序代碼,都存在即要求保護(hù)代碼不被讀出又要求可以被CPU執(zhí)行這些代碼的需求。
[0005]如圖1所示,通用的MCU/S0C系統(tǒng)的結(jié)構(gòu),一般由中央處理單元91(以下簡稱CPU)或者數(shù)字信號(hào)處理單元(以下簡稱DSP)、調(diào)試器92、直接通道存取單元93 (以下簡稱DMA)總線、總線控制器94及程序存儲(chǔ)器95及其他外部設(shè)備96、97等組成。其中,CPU、DMA與調(diào)試器92都是主動(dòng)設(shè)備,可以發(fā)出指令,請(qǐng)求取得總線控制權(quán)。而程序存儲(chǔ)器95及其他外部設(shè)備96、97等是從動(dòng)設(shè)備,只能被主動(dòng)設(shè)備操作,無法主動(dòng)發(fā)起總線控制權(quán)請(qǐng)求。具體的程序執(zhí)行的過程如下,首先整個(gè)系統(tǒng)上電,上電復(fù)位電路發(fā)出復(fù)位信號(hào),程序指針復(fù)位為0,復(fù)位完成后釋放復(fù)位信號(hào),在時(shí)鐘(也稱為定時(shí)器)的驅(qū)動(dòng)下,主動(dòng)設(shè)備CPU從O地址開始執(zhí)行,CPU發(fā)出讀取O地址存儲(chǔ)單元程序總線請(qǐng)求,總線控制器仲裁,賦予CPU總線控制權(quán),存儲(chǔ)單元地址譯碼器得到本設(shè)備讀出請(qǐng)求,從存儲(chǔ)單元讀出O地址程序或數(shù)據(jù)返回總線,CPU取得指令,送入CPU執(zhí)行單元執(zhí)行,完成指令執(zhí)行,程序指針增加或跳轉(zhuǎn),重復(fù)以上過程。
[0006]通用系統(tǒng)的程序一般放在程序存儲(chǔ)器95中,一次開發(fā),二次開發(fā)及多次開發(fā)的程序被存在程序存儲(chǔ)器95中不同的位置,通用系統(tǒng)主動(dòng)設(shè)備可以訪問或擦寫程序存儲(chǔ)器95的任意位置,這樣一次開發(fā)的程序,可能被二次或多次開發(fā)的程序讀出來破譯或者擦除毀壞,也存在二次開發(fā)的程序被其后續(xù)開發(fā)的程序讀出來破譯或擦除毀壞,也存在程序被調(diào)試器92、DMA等主動(dòng)設(shè)備讀出或擦除毀壞。
[0007]為了解決上述問題,目前行業(yè)內(nèi)通常都采用傳統(tǒng)的加密算法(比如AES,DES, RSA等)來直接加密程序本身,防止程序被讀出來破譯或擦除毀壞。但是,這種方法是將程序本身被加密存儲(chǔ)于程序存儲(chǔ)器中,那么每次執(zhí)行,讀寫都要加解密,缺點(diǎn)在于:第一會(huì)增加硬件成本,第二增加執(zhí)行,讀寫時(shí)間,降低CPU及系統(tǒng)的效率。
【發(fā)明內(nèi)容】
[0008]有鑒于上述問題,本發(fā)明的目的在于,提供一種既能保護(hù)程序代碼本身不被讀出、跟蹤或破解,又能使得已開發(fā)程序可以被調(diào)用與執(zhí)行的微控制器程序代碼保護(hù)方法。
[0009]為此,本發(fā)明提供了一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,包括以下步驟:
[0010]提供至少一中央處理單元,一總線控制器以及一程序存儲(chǔ)器,所述中央處理單元通過所述總線控制器連接所述程序存儲(chǔ)器;
[0011]將所述程序存儲(chǔ)器分為復(fù)數(shù)個(gè)程序分區(qū);
[0012]提供一密鑰存儲(chǔ)器,在所述密鑰存儲(chǔ)器中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)的復(fù)數(shù)個(gè)分區(qū)密鑰,用于鎖定所述程序分區(qū)中的程序。
[0013]本發(fā)明對(duì)程序存儲(chǔ)器進(jìn)行分區(qū),程序開發(fā)者首先將已開發(fā)完成的程序編程入程序存儲(chǔ)器的各個(gè)程序分區(qū)中,然后將密鑰存儲(chǔ)到密鑰存儲(chǔ)器的各個(gè)分區(qū)密鑰中,重新上電啟動(dòng)該系統(tǒng)裝置,這樣各個(gè)程序分區(qū)以及其各自對(duì)應(yīng)的分區(qū)密鑰,都將被密鑰鎖定,只允許被密匙認(rèn)可的設(shè)備執(zhí)行此程序分區(qū)內(nèi)的程序,其他任何操作如讀、寫、擦除都將被拒絕,同時(shí)此程序分區(qū)的密鑰將不能被隨意更改,且不能被任何主動(dòng)設(shè)備或從動(dòng)設(shè)備讀出,保證了程序存儲(chǔ)器的程序不會(huì)被破譯或者擦除毀壞。
[0014]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法的進(jìn)一步改進(jìn)在于,提供所述密鑰存儲(chǔ)器之后,還包括步驟:提供一密鑰臨時(shí)寄存器,在所述密鑰臨時(shí)寄存器中存儲(chǔ)分別匹配所述分區(qū)密鑰的復(fù)數(shù)個(gè)解鎖密鑰。
[0015]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法的進(jìn)一步改進(jìn)在于,對(duì)所述程序分區(qū)進(jìn)行解鎖的方法,包括以下步驟:
[0016]在待解鎖的程序分區(qū)相對(duì)應(yīng)的解鎖密鑰中輸入一密匙;
[0017]該程序分區(qū)判斷所述輸入的密匙是否與該程序分區(qū)相對(duì)應(yīng)的分區(qū)密鑰中的密匙相匹配;
[0018]判斷所述輸入的密匙與該程序分區(qū)相對(duì)應(yīng)的分區(qū)密鑰中的密匙相匹配時(shí),完成對(duì)該程序分區(qū)的解鎖。
[0019]這樣,如果是程序開發(fā)者本身要更改程序分區(qū)的程序時(shí),首先要輸入該程序分區(qū)的密鑰到密鑰臨時(shí)寄存器中,(通常將密匙設(shè)置成較多位數(shù)的密鑰,這樣可以增加破譯的時(shí)間成本),如果輸入密鑰臨時(shí)寄存器的密匙跟與之相對(duì)應(yīng)的密鑰存儲(chǔ)器里的密鑰對(duì)上了,就完成對(duì)該程序分區(qū)的解鎖,該程序分區(qū)將可以被任意操作。
[0020]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法的進(jìn)一步改進(jìn)在于,還包括步驟:提供一訪問識(shí)別模塊,用于識(shí)別訪問所述程序分區(qū)的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊連接于所述總線控制器與各所述程序分區(qū)之間。該訪問識(shí)別模塊,其主要功能是識(shí)別是誰來訪問程序存儲(chǔ)器,是CPU,調(diào)試器,還是DMA訪問,以及訪問類型,是讀,寫,或者擦除。
[0021 ] 本發(fā)明還提供了 一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置,至少包括:
[0022]一中央處理單元,一總線控制器以及一程序存儲(chǔ)器,所述中央處理單元通過所述總線控制器連接所述程序存儲(chǔ)器,所述程序存儲(chǔ)器進(jìn)一步分為復(fù)數(shù)個(gè)程序分區(qū);
[0023]一密鑰存儲(chǔ)器,在所述密鑰存儲(chǔ)器中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)的復(fù)數(shù)個(gè)分區(qū)密鑰,用于鎖定所述程序分區(qū)中的程序。
[0024]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置的進(jìn)一步改進(jìn)在于,還包括:
[0025]一密鑰臨時(shí)寄存器,在所述密鑰臨時(shí)寄存器中存儲(chǔ)分別匹配所述分區(qū)密鑰的復(fù)數(shù)個(gè)解鎖密鑰。
[0026]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置的進(jìn)一步改進(jìn)在于,還包括:
[0027]—訪問識(shí)別模塊,用于識(shí)別訪問所述程序分區(qū)的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊連接于所述總線控制器與各所述程序分區(qū)之間。
【專利附圖】
【附圖說明】
[0028]圖1是現(xiàn)有的MCU/S0C系統(tǒng)的結(jié)構(gòu)框圖。
[0029]圖2是本發(fā)明的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置的結(jié)構(gòu)框圖?!揪唧w實(shí)施方式】
[0030]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0031]配合參看圖2所示,本發(fā)明的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置,至少包括:
[0032]一中央處理單元(即CPU) 10或者數(shù)字信號(hào)處理單元(即DSP),一總線控制器40以及一程序存儲(chǔ)器50,所述中央處理單元10通過所述總線控制器40連接所述程序存儲(chǔ)器50。所述程序存儲(chǔ)器50進(jìn)一步分為復(fù)數(shù)個(gè)程序分區(qū)501,程序分區(qū)501的數(shù)量根據(jù)需要進(jìn)行設(shè)置,圖中所示為三個(gè);所述中央處理單元10進(jìn)一步連接有一調(diào)試器20與一直接通道存取單元(即DMA) 30 ;所述總線控制器40進(jìn)一步連接有至少一個(gè)的外部設(shè)備60、70 ;
[0033]一密鑰存儲(chǔ)器80,在所述密鑰存儲(chǔ)器80中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)501的復(fù)數(shù)個(gè)分區(qū)密鑰801,用于鎖定所述程序分區(qū)501中的程序。
[0034]一密鑰臨時(shí)寄存器90,在所述密鑰臨時(shí)寄存器90中存儲(chǔ)分別匹配所述分區(qū)密鑰801的復(fù)數(shù)個(gè)解鎖密鑰901。
[0035]一訪問識(shí)別模塊502,用于識(shí)別訪問所述程序分區(qū)501的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊502連接于所述總線控制器40與各所述程序分區(qū)501之間。該訪問識(shí)別模塊502,其主要功能是識(shí)別是誰來訪問程序存儲(chǔ)器50,是CPU,調(diào)試器20,還是DMA訪問,以及訪問類型,是讀,寫,或者擦除。
[0036]本發(fā)明的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,包括以下步驟:
[0037]提供至少一中央處理單元10,一總線控制器40以及一程序存儲(chǔ)器50,所述中央處理單元10通過所述總線控制器40連接所述程序存儲(chǔ)器50 ;
[0038]將所述程序存儲(chǔ)器50分為復(fù)數(shù)個(gè)程序分區(qū)501 ;
[0039]提供一密鑰存儲(chǔ)器80,在所述密鑰存儲(chǔ)器80中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)501的復(fù)數(shù)個(gè)分區(qū)密鑰801,用于鎖定所述程序分區(qū)501中的程序。[0040]提供一密鑰臨時(shí)寄存器90,在所述密鑰臨時(shí)寄存器90中存儲(chǔ)分別匹配所述分區(qū)密鑰801的復(fù)數(shù)個(gè)解鎖密鑰901。
[0041]提供一訪問識(shí)別模塊502,用于識(shí)別訪問所述程序分區(qū)501的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊502連接于所述總線控制器40與各所述程序分區(qū)501之間。該訪問識(shí)別模塊502,其主要功能是識(shí)別是誰來訪問程序存儲(chǔ)器50,是CPU,調(diào)試器20,還是DMA訪問,以及訪問類型,是讀,寫,或者擦除。
[0042]本發(fā)明對(duì)程序存儲(chǔ)器50進(jìn)行分區(qū),程序開發(fā)者首先將已開發(fā)完成的程序編程入程序存儲(chǔ)器50的各個(gè)程序分區(qū)501中,然后將密鑰存儲(chǔ)到密鑰存儲(chǔ)器80的各個(gè)分區(qū)密鑰801中,重新上電啟動(dòng)該系統(tǒng)裝置,這樣各個(gè)程序分區(qū)501以及其各自對(duì)應(yīng)的分區(qū)密鑰801,都將被密鑰鎖定,只允許被密匙認(rèn)可的設(shè)備執(zhí)行此程序分區(qū)501內(nèi)的程序,其他任何操作如讀、寫、擦除都將被拒絕,同時(shí)此程序分區(qū)501的密鑰將不能被隨意更改,且不能被任何主動(dòng)設(shè)備或從動(dòng)設(shè)備讀出,保證了程序存儲(chǔ)器50的程序不會(huì)被破譯或者擦除毀壞。
[0043]在本發(fā)明的一較佳實(shí)施例中,將某一個(gè)程序分區(qū)501設(shè)置為只能被CPU(也可以是其他設(shè)備)執(zhí)行此程序分區(qū)501內(nèi)的程序。其工作原理步驟如下,通過訪問識(shí)別模塊502來識(shí)別訪問該程序分區(qū)501的設(shè)備類型是否為CPU,如果識(shí)別出訪問的設(shè)備類型不是CPU,而是其他設(shè)備如DMA或調(diào)試器20,則該訪問被拒絕;如果識(shí)別出訪問的設(shè)備類型是CPU,則進(jìn)一步識(shí)別該訪問類型是否僅為執(zhí)行程序,如果識(shí)別出此次的訪問類型不是僅為執(zhí)行程序,而是其他操作如讀、寫、擦除,則該訪問被拒絕。
[0044]本發(fā)明微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,對(duì)所述程序分區(qū)501進(jìn)行解鎖時(shí),包括以下步驟:
[0045]在待解鎖的程序分區(qū)501相對(duì)應(yīng)的解鎖密鑰901中輸入一密匙;
[0046]該程序分區(qū)501判斷所述輸入的密匙是否與該程序分區(qū)501相對(duì)應(yīng)的分區(qū)密鑰801中的密匙相匹配;
[0047]判斷所述輸入的密匙與該程序分區(qū)501相對(duì)應(yīng)的分區(qū)密鑰801中的密匙相匹配時(shí),完成對(duì)該程序分區(qū)501的解鎖。
[0048]這樣,如果是程序開發(fā)者本身要更改程序分區(qū)501的程序時(shí),首先要輸入該程序分區(qū)501的密鑰到密鑰臨時(shí)寄存器90中,(通常將密匙設(shè)置成較多位數(shù)的密鑰,這樣可以增加破譯的時(shí)間成本),如果輸入密鑰臨時(shí)寄存器90的密匙跟與之相對(duì)應(yīng)的密鑰存儲(chǔ)器80里的密鑰對(duì)上了,就完成對(duì)該程序分區(qū)501的解鎖,該程序分區(qū)501將可以被任意操作。
[0049]以上所述僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明做任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案的范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
【權(quán)利要求】
1.一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,其特征在于包括以下步驟: 提供至少一中央處理單元,一總線控制器以及一程序存儲(chǔ)器,所述中央處理單元通過所述總線控制器連接所述程序存儲(chǔ)器; 將所述程序存儲(chǔ)器分為復(fù)數(shù)個(gè)程序分區(qū); 提供一密鑰存儲(chǔ)器,在所述密鑰存儲(chǔ)器中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)的復(fù)數(shù)個(gè)分區(qū)密鑰,用于鎖定所述程序分區(qū)中的程序。
2.如權(quán)利要求1所述的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,其特征在于提供所述密鑰存儲(chǔ)器之后,還包括步驟:提供一密鑰臨時(shí)寄存器,在所述密鑰臨時(shí)寄存器中存儲(chǔ)分別匹配所述分區(qū)密鑰的復(fù)數(shù)個(gè)解鎖密鑰。
3.如權(quán)利要求2所述的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,其特征在于對(duì)所述程序分區(qū)進(jìn)行解鎖的方法,包括以下步驟: 在待解鎖的程序分區(qū)相對(duì)應(yīng)的解鎖密鑰中輸入一密匙; 該程序分區(qū)判斷所述輸入的密匙是否與該程序分區(qū)相對(duì)應(yīng)的分區(qū)密鑰中的密匙相匹配; 判斷所述輸入的密匙與該程序分區(qū)相對(duì)應(yīng)的分區(qū)密鑰中的密匙相匹配時(shí),完成對(duì)該程序分區(qū)的解鎖。
4.如權(quán)利要求1至3中任一項(xiàng)所述的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)方法,其特征在于還包括步驟:提供一訪問識(shí)別模塊,用于識(shí)別訪問所述程序分區(qū)的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊連接于所述總線控制器與各所述程序分區(qū)之間。
5.一種微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置,其特征在于至少包括: 一中央處理單元,一總線控制器以及一程序存儲(chǔ)器,所述中央處理單元通過所述總線控制器連接所述程序存儲(chǔ)器,所述程序存儲(chǔ)器進(jìn)一步分為復(fù)數(shù)個(gè)程序分區(qū); 一密鑰存儲(chǔ)器,在所述密鑰存儲(chǔ)器中存儲(chǔ)分別對(duì)應(yīng)所述程序分區(qū)的復(fù)數(shù)個(gè)分區(qū)密鑰,用于鎖定所述程序分區(qū)中的程序。
6.如權(quán)利要求5所述的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置,其特征在于還包括: 一密鑰臨時(shí)寄存器,在所述密鑰臨時(shí)寄存器中存儲(chǔ)分別匹配所述分區(qū)密鑰的復(fù)數(shù)個(gè)解鎖密鑰。
7.如權(quán)利要求5或6所述的微控制器及其他嵌入式系統(tǒng)程序代碼保護(hù)裝置,其特征在于還包括: 一訪問識(shí)別模塊,用于識(shí)別訪問所述程序分區(qū)的設(shè)備類型與訪問類型,所述訪問識(shí)別模塊連接于所述總線控制器與各所述程序分區(qū)之間。
【文檔編號(hào)】G06F21/12GK103745140SQ201410046230
【公開日】2014年4月23日 申請(qǐng)日期:2014年2月10日 優(yōu)先權(quán)日:2014年2月10日
【發(fā)明者】程青云, 劉峰, 潘競, 馬果, 江永林 申請(qǐng)人:北京芯盈速騰電子科技有限責(zé)任公司