<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種C55x DSP的串行引導(dǎo)與程序加密方法

          一種C55x DSP的串行引導(dǎo)與程序加密方法

          作者: 時間:2012-08-16 來源:網(wǎng)絡(luò) 收藏

          2 自舉和加解密實(shí)現(xiàn)
          2.1 硬件設(shè)計
          SST25LF080A是SST公司生產(chǎn)的SPI串口8 MbitFlash,支持SPI的Mode0和Mode1方式,其可靠性高,最大時鐘頻率為33 MHz,供電電壓為3.3 V,可重復(fù)寫10萬次以上。采用8腳SOIC封裝形式,與TMS320VC5509A的硬件連接如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/148594.htm

          b.JPG


          2.2 二次技術(shù)
          本身所帶的Bootloader不能實(shí)現(xiàn)功能,因此對于Flash里的無法起到保護(hù)作用。所以在Bootloader的基礎(chǔ)上,還需要進(jìn)行二次,即通過內(nèi)部ROM同化Bootloader,首先另一個引導(dǎo),該是由用戶自行編寫,功能與ROM固化的Bootloader類似,但增加了對程序代碼加解密和校驗(yàn)等功能,并在加載結(jié)束后,把PC值置于實(shí)際程序的入口地址,使程序轉(zhuǎn)至實(shí)際程序。
          2.3 程序與解密
          對程序的初始保護(hù),即把最終運(yùn)行的程序代碼寫入Flash芯片之前,對代碼進(jìn)行處理。過程如下,的一次引導(dǎo)過程只加載儲存在SST25LF080A中的加解密程序,需要向Flash寫入時,讀取DSP自身的ID號作為密鑰,通過一定的加密算法將二次引導(dǎo)的程序進(jìn)行加密處理后再寫入,這樣,SST25LF080A中就不存在明文形式的代碼。
          DSP的一次引導(dǎo)過程只加載儲存在SST25LF080A中的加解密程序,二次引導(dǎo)則加載SST25LF080A中已經(jīng)加密的代碼,然后讀取DSP自身的ID號作為密鑰進(jìn)行解密,加載結(jié)束和完成解密后再繼續(xù)運(yùn)行。
          為防止破譯者直接修改讀取ID部分的引導(dǎo)代碼,改為使用固定ID,還必須基于數(shù)據(jù)驅(qū)動進(jìn)行連續(xù)二次保護(hù)。它的處理對象是一些重要參數(shù)或變量,通過讀取引導(dǎo)程序的校驗(yàn)值和DSP本身ID,完成對這些參數(shù)或變量“加鎖”,讓它們以密文形式存在于程序中。這樣即使完成了對引導(dǎo)程序的簡單破譯,也無法使程序正常運(yùn)行。

          c.JPG


          經(jīng)過處理,可以有效地避免通過讀取Flash內(nèi)容直接破譯,或者直接讀取Flash內(nèi)容后在不同產(chǎn)品中反復(fù)利用的做法,對保護(hù)知識產(chǎn)權(quán)有著重要的意義。對于DSP代碼加密,可以根據(jù)需要的加密復(fù)雜程度進(jìn)行算法選擇,實(shí)現(xiàn)框圖如圖2所示。

          3 結(jié)束語
          針對TMS320VC5509A和SST25LF080A,使用方式實(shí)現(xiàn)程序自舉引導(dǎo)的二次引導(dǎo)加載,提出基于該方式的程序加密。該不僅可用于TMS320VC5509ADSP中,其他類似高速微處理器系統(tǒng)的引導(dǎo)加載方案中也可得到應(yīng)用,實(shí)現(xiàn)了靈活的程序加載。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();