在某些特殊設(shè)備中,如智能電表等產(chǎn)品,由于使用方并非產(chǎn)品設(shè)計方,而使用方又擔(dān)心設(shè)計方將程序外泄,帶來使用的安全問題,便要求設(shè)計方在單片機存儲程序時可自動形成帶有一定特征和加密特性的軟件標(biāo)識,以達到使用方可以溯源程序的目的。采用對軟件代碼計算,并形成校驗碼的方式,是單片機程序存儲中的軟件標(biāo)識的一種良好設(shè)計方式。
1 引言
目前,電子設(shè)備、智能儀表等器件實現(xiàn)一些功能通常需要安裝對應(yīng)的應(yīng)用軟件。為了便于管理,需要對應(yīng)用軟件進行軟件標(biāo)識,特別是像電能表這類儀表需要執(zhí)行法制計量機構(gòu)頒布的相關(guān)標(biāo)準(zhǔn),更加需要對安裝于其中的軟件進行軟件標(biāo)識,以實現(xiàn)有效管理[1,2]。
現(xiàn)有技術(shù)中,軟件標(biāo)識一般是由微處理器軟件生成的,用戶可更改軟件標(biāo)識,也存在軟件更改或更新而未更改軟件標(biāo)識的情形,不利于器件的管理,存在數(shù)據(jù)泄露的風(fēng)險[3,4]。
2 設(shè)計思路
在單片機生成方法為存儲在存儲介質(zhì)中的軟件代碼生成軟件標(biāo)識,這需要一個前提,即存儲介質(zhì)包括至少一個第一存儲單元、至少一個第二存儲單元、第三存儲單元。第一存儲單元用于存儲軟件代碼,第二存儲單元用于存儲多項式。其中,每個第二存儲單元中存儲的多項式是不同的。
2.1 實施方法一
如圖 1 所示軟件標(biāo)識生成方法,包括以下步驟。
步驟一,設(shè)置第二存儲單元與第一存儲單元的對應(yīng)關(guān)系。
步驟二,對軟件代碼進行計算以生成校驗碼。其中,不同的軟件代碼生成不同的校驗碼本實施例中,步驟二還包括:(1)從第一存儲單元中獲取軟件代碼,從對應(yīng)的第二存儲單元中獲取多項式。(2)根據(jù)多項式對軟件代碼進行計算,生成校驗碼。
具體,當(dāng)下載軟件代碼時,將軟件代碼依次寫入第一存儲單元中,每將一個第一存儲單元寫滿則從該第一存儲單元中獲取軟件代碼,從對應(yīng)的第二存儲單元中獲取多項式,根據(jù)多項式對軟件代碼進行計算。
以下通過一個具體實例說明根據(jù)多項式對軟件代碼進行計算的過程:例如,一個第一存儲單元中存儲的軟件代碼為 1010。與該第一存儲單元對應(yīng)的第二存儲單元中存儲的多項式為:H(x)=x3+x+1。
首先,根據(jù)變量的指數(shù),將H(x)=x3+x+1轉(zhuǎn)換成對應(yīng)的二進制數(shù) 1011;由于多項式有4位,則把軟件代碼左移 3(4-1)位,得到 1010000。
其次,用多項式的二進制數(shù)對左移 3 位后的軟件代碼進行模2除,得到余位 011,即為校驗碼。
由于每個第一存儲單元均會生成一個校驗碼,軟件代碼存儲于幾個第一存儲單元中,即可得到幾個校驗碼。需要說明的是,校驗碼的位數(shù)可根據(jù)實際需要自行設(shè)置,也即通過設(shè)置多項式的最高次冪實現(xiàn)。
步驟三,根據(jù)校驗碼生成軟件標(biāo)識。若一段軟件代碼共有 i 個 16 Bit 的校驗碼,生成軟件標(biāo)識具體可以是:將 i 個校驗碼進行分組后先進行同或運算,產(chǎn)生 64 Bit 數(shù)據(jù),將這 64 Bit 數(shù)據(jù)與 Flash 的 Key 進行異或運算生成軟件標(biāo)識。
步驟四,將校驗碼存儲于第三存儲單元中。本實例中,根據(jù)不同的軟件代碼生成不同的校驗碼,進而生成不同的軟件標(biāo)識,也即只要軟件代碼不同,軟件標(biāo)識必不相同。當(dāng)器件中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識也會更改,從而能快速識別器件的應(yīng)用軟件是否符合用戶要求,實現(xiàn)器件的安全管理。
2.2 實施方法二
在這種實施方法中,提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)實施例一所提供的軟件標(biāo)識生成方法。計算機可讀存儲介質(zhì)為 Flash 存儲器。
Flash 存儲器的程序存儲區(qū)一般由 M 個存儲塊(也即第一存儲單元)組成,每一存儲塊分若干個頁。程序存儲區(qū)只支持片擦除,不支持塊擦除和頁擦除。Flash 存儲器的 NVR 區(qū)的 NVR1(也即第二存儲單元)存有一定的長度的數(shù)據(jù)碼 K(多項式的二進制數(shù)),數(shù)據(jù)碼 K 中的第 n 個 16 Bit 數(shù)據(jù) Kn 與 M個數(shù)據(jù)塊中的第 n 個塊 Mn 對應(yīng),在寫 Flash 每個存儲塊時,F(xiàn)lash 控制器根據(jù)對應(yīng)關(guān)系選擇相應(yīng)的多項式計算校驗碼。
其中,NVR1 對用戶不支持讀寫功能。寫完一個存儲塊,則計算出一個 16 Bit 的校驗碼 Cn,并將此校驗碼 Cn 存儲在 NVR 區(qū)的 NVR2(也即第三存儲單元)中。NVR2 對用戶有只讀功能。
下載程序時所需要的存儲塊都寫完后,共有 M 個16 Bit 的校驗碼。再將這些校驗碼進行分組后先進行同或運算,產(chǎn)生 64 Bit 數(shù)據(jù),將這 64 Bit 數(shù)據(jù)與Flash 的 Key 進行異或運算生成軟件標(biāo)識。并將此軟件標(biāo)識的 64 Bit 數(shù)據(jù)存儲到 NVR2 中的固定位置。
使用這種方法的計算機可讀存儲介質(zhì)存儲應(yīng)用程式,只要 Flash 存儲器中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識也會更改,從而能快速識別 Flash 存儲器的應(yīng)用軟件是否符合用戶要求,實現(xiàn)器件的安全管理
2.3 實施方法三
在這種實施方法中,提供一種單片機,如圖 2 所示,單片機包括:計算機可讀存儲介質(zhì)、控制單元和 TR 接口。其中,計算機可讀存儲介質(zhì)為實施例 2 所提供的計算機可讀存儲介質(zhì)。
控制單元分別與計算機可讀存儲介質(zhì)和 TR 接口電連接??刂茊卧糜谠诮邮盏阶x取指令時從計算機可讀存儲介質(zhì)中獲取軟件標(biāo)識,并通過 TR 接口向外輸出軟件標(biāo)識。其中讀取指令由外設(shè)設(shè)備生成并發(fā)送至單片機。本實施例中,不需要單片機干預(yù),外設(shè)設(shè)備即可讀取軟件標(biāo)識,避免單片機對軟件標(biāo)識進行處理的可能性,便于法律監(jiān)督機構(gòu)管理。
在這種實施方法中,可根據(jù)實際需求,還可在單片機中設(shè)置并串轉(zhuǎn)換電路。控制單元通過并串轉(zhuǎn)換電路與 TR 接口電連接。并串轉(zhuǎn)換電路用于將軟件標(biāo)識轉(zhuǎn)換成串行的 Bit 數(shù)據(jù)流。從而,經(jīng)過并串轉(zhuǎn)換的軟件標(biāo)識可有紅外或 RS485 通信接口輸出至外設(shè)設(shè)備。
3 結(jié)語
根據(jù)不同的軟件代碼生成不同的校驗碼,進而生成不同的軟件標(biāo)識,也即只要軟件代碼不同,軟件標(biāo)識必不相同。當(dāng)器件中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識也會更改,從而能快速識別器件的應(yīng)用軟件是否符合用戶要求,實現(xiàn)器件的安全管理。
-
單片機
+關(guān)注
關(guān)注
6044文章
44624瀏覽量
638943 -
存儲
+關(guān)注
關(guān)注
13文章
4359瀏覽量
86205
原文標(biāo)題:單片機程序存儲中的軟件標(biāo)識研究
文章出處:【微信號:appic-cn,微信公眾號:集成電路應(yīng)用雜志】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
51單片機存儲程序和數(shù)據(jù)
單片機仿真軟件適合單片機初學(xué)者嗎
如何對單片機進行片外程序存儲器設(shè)計
51單片機之存儲器
![51<b class='flag-5'>單片機</b>之<b class='flag-5'>存儲</b>器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論