一種C55x DSP的串行引導(dǎo)與程序加密方法
摘要 以TI公司的TMS320VC5509A和SST公司的SST25LF080A為例,介紹了一種通過(guò)串口模式對(duì)Flash中的程序進(jìn)行二次加載和加密方法。文中還給出了相關(guān)硬件連接、自舉表的建立。實(shí)驗(yàn)證明,采用該引導(dǎo)裝載系統(tǒng)具有較強(qiáng)的實(shí)用性,可以提高DSP軟件的保密性。
關(guān)鍵詞 TMS320VC5509A;SST25LF080A;串行引導(dǎo)
隨著數(shù)字信號(hào)處理技術(shù)的發(fā)展,數(shù)字信號(hào)處理器(DSP)以其卓越的性能、獨(dú)有的特點(diǎn),成為通信、計(jì)算機(jī)、消費(fèi)類(lèi)電了產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,被廣泛地應(yīng)用于各種數(shù)字信號(hào)處理系統(tǒng)中。由于數(shù)字信號(hào)處理器(DSP)內(nèi)部的ROM需要在生產(chǎn)時(shí)寫(xiě)入程序,所以多數(shù)場(chǎng)合下,系統(tǒng)加電后,DSP需要將一段存儲(chǔ)在外部非易失性存儲(chǔ)器的代碼轉(zhuǎn)移到內(nèi)部高速存儲(chǔ)器單元中執(zhí)行,這樣既利用了外部的存儲(chǔ)單元擴(kuò)展了DSP本身有限的ROM資源,又充分發(fā)揮了DSP內(nèi)部資源的效能。目前Flash存儲(chǔ)器應(yīng)用最為廣泛,其兼有存取快速、電可擦除、可在線編程、大容量、低功耗、小尺寸、以及價(jià)格低廉等優(yōu)點(diǎn),已成為新一代數(shù)字信號(hào)處理系統(tǒng)中的重要組成部分。但是,由于外部Flash存儲(chǔ)器中的內(nèi)容易被他人讀取,因此在利用DSP進(jìn)行產(chǎn)品設(shè)計(jì)時(shí),如何保護(hù)自己的成果,防止被竊取盜用,成為了設(shè)計(jì)工作的重要方面。本文基于TI公司的TMS320VC550 9A實(shí)現(xiàn)一種加解密體制,利用加密算法來(lái)保護(hù)DSP程序。
1 TMS320VC5509A的自舉引導(dǎo)
1.1 TMS320VC5509A介紹及其Bootloader
TMS320VC5509A是TI公司推出的一款高性能DSP,最高工作在可以200 MHz主頻,IO供電電壓3.3 V;核電壓1.2~1.6V。支持DMA操作、支持多媒體卡(MultiMedia Card,MMC)、安全數(shù)字卡(signal data converter,SDC)的讀寫(xiě);集成了USB控制器、I2C總線控制器、MCBSP口、實(shí)時(shí)時(shí)鐘RTC,以及多路A/D轉(zhuǎn)換器;具有PGE和BGA兩種封裝形式。片內(nèi)具有64 Byte ROM和128 Byte高速靜態(tài)RAM,內(nèi)部只讀ROM中固化了引導(dǎo)加載程序(Bootloader),該程序在系統(tǒng)上電或復(fù)位后可以將用戶代碼自動(dòng)搬移到片內(nèi)RAM運(yùn)行。
1.2 自舉加載模式選擇
TMS320VC5509A每次上電復(fù)位后,在執(zhí)行完一系列初始化(配置堆棧寄存器、關(guān)閉中斷、程序臨時(shí)入口、符號(hào)擴(kuò)展、兼容性配置)工作后,根據(jù)預(yù)先配置的自舉模式,通過(guò)固化在ROM內(nèi)的Bootloader程序進(jìn)行程序引導(dǎo)。引導(dǎo)模式選擇是根據(jù)4個(gè)引腳BOOTM[0:3]配置完成的。BOOTM 0~3引腳分別與GPIO 1、2、3、0相連。BOOTM[0:3]在實(shí)際的電路連接是將芯片引腳通過(guò)上拉或下拉電阻接地或接電源來(lái)實(shí)現(xiàn)。系統(tǒng)中采用Flash存儲(chǔ)器完成串行引導(dǎo),只需將BOOTM[3:0]設(shè)置成0100即可。
1.3 TMS320VC5509A引導(dǎo)表
Bootloader允許應(yīng)用代碼存放在慢速非易失性的外部存儲(chǔ)器中,再將代碼搬移到高速的片內(nèi)存儲(chǔ)器中執(zhí)行。應(yīng)用代碼以一種Bootloader能夠理解的特殊格式編碼,這種格式就是自舉加載表。Bootloader在引導(dǎo)程序時(shí),程序代碼是以自舉加載表形式加載。自舉加載表包含了將要搬移的代碼段、程序段,以及這些段將要被搬移到的地址、加載完成后程序要執(zhí)行的地址f即程序入口地址和其他配置信息。TMS320VC55x系列DSP的自舉加載表結(jié)構(gòu)如表1所示。
其中,程序入口地址是自舉加載表加載結(jié)束后,用戶程序開(kāi)始執(zhí)行的地址;待配置寄存器數(shù)目決定了后面有多少個(gè)寄存器需要配置;只有當(dāng)延時(shí)標(biāo)志為OxFFFF時(shí),延時(shí)才被執(zhí)行;延時(shí)長(zhǎng)度決定了在寄存器配置后,延時(shí)多少個(gè)CPU周期才進(jìn)行下一個(gè)動(dòng)作:段長(zhǎng)度、段起始地址和數(shù)據(jù)則為用戶程序中定義的各個(gè)段的內(nèi)容,并且可以重復(fù)添加;最后以32個(gè)0作為引導(dǎo)表的結(jié)束標(biāo)志。若需要生成引導(dǎo)表,可用CCS最終編譯生成的.out文件,通過(guò)CCS自帶的hex55.exe轉(zhuǎn)換程序得到。
評(píng)論