摘要 以TI公司的TMS320VC5509A和SST公司的SST25LF080A为例,介绍了一种通过串口模式对Flash中的程序进行二次加载和加密方法。文中还给出了相关硬件连接、自举表的建立。实验证明,采用该引导装载系统具有较强的实用性,可以提高DSP软件的保密性。
随着数字信号处理技术的发展,数字信号处理器(DSP)以其卓越的性能、独有的特点,成为通信、计算机、消费类电了产品等领域的基础器件,被广泛地应用于各种数字信号处理系统中。由于数字信号处理器(DSP)内部的ROM需要在生产时写入程序,所以多数场合下,系统加电后,DSP需要将一段存储在外部非易失性存储器的代码转移到内部高速存储器单元中执行,这样既利用了外部的存储单元扩展了DSP本身有限的ROM资源,又充分发挥了DSP内部资源的效能。目前Flash存储器应用最为广泛,其兼有存取快速、电可擦除、可在线编程、大容量、低功耗、小尺寸、以及价格低廉等优点,已成为新一代数字信号处理系统中的重要组成部分。但是,由于外部Flash存储器中的内容易被他人读取,因此在利用DSP进行产品设计时,如何保护自己的成果,防止被窃取盗用,成为了设计工作的重要方面。本文基于TI公司的TMS320VC550 9A实现一种加解密体制,利用加密算法来保护DSP程序。
1 TMS320VC5509A的自举引导
1.1 TMS320VC5509A介绍及其Bootloader
TMS320VC5509A是TI公司推出的一款高性能DSP,最高工作在可以200 MHz主频,IO供电电压3.3 V;核电压1.2~1.6V。支持DMA操作、支持多媒体卡(MultiMedia Card,MMC)、安全数字卡(signal data converter,SDC)的读写;集成了USB控制器、I2C总线控制器、MCBSP口、实时时钟RTC,以及多路A/D转换器;具有PGE和BGA两种封装形式。片内具有64 Byte ROM和128 Byte高速静态RAM,内部只读ROM中固化了引导加载程序(Bootloader),该程序在系统上电或复位后可以将用户代码自动搬移到片内RAM运行。
1.2 自举加载模式选择
TMS320VC5509A每次上电复位后,在执行完一系列初始化(配置堆栈寄存器、关闭中断、程序临时入口、符号扩展、兼容性配置)工作后,根据预先配置的自举模式,通过固化在ROM内的Bootloader程序进行程序引导。引导模式选择是根据4个引脚BOOTM[0:3]配置完成的。BOOTM 0~3引脚分别与GPIO 1、2、3、0相连。BOOTM[0:3]在实际的电路连接是将芯片引脚通过上拉或下拉电阻接地或接电源来实现。系统中采用Flash存储器完成串行引导,只需将BOOTM[3:0]设置成0100即可。
1.3 TMS320VC5509A引导表
Bootloader允许应用代码存放在慢速非易失性的外部存储器中,再将代码搬移到高速的片内存储器中执行。应用代码以一种Bootloader能够理解的特殊格式编码,这种格式就是自举加载表。Bootloader在引导程序时,程序代码是以自举加载表形式加载。自举加载表包含了将要搬移的代码段、程序段,以及这些段将要被搬移到的地址、加载完成后程序要执行的地址f即程序入口地址和其他配置信息。TMS320VC55x系列DSP的自举加载表结构如表1所示。
其中,程序入口地址是自举加载表加载结束后,用户程序开始执行的地址;待配置寄存器数目决定了后面有多少个寄存器需要配置;只有当延时标志为OxFFFF时,延时才被执行;延时长度决定了在寄存器配置后,延时多少个CPU周期才进行下一个动作:段长度、段起始地址和数据则为用户程序中定义的各个段的内容,并且可以重复添加;最后以32个0作为引导表的结束标志。若需要生成引导表,可用CCS最终编译生成的.out文件,通过CCS自带的hex55.exe转换程序得到。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉