当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种C55x DSP的串行引导与程序加密方法

摘要 以TI公司的TMS320VC5509A和SST公司的SST25LF080A为例,介绍了一种通过串口模式对Flash中的程序进行二次加载和加密方法。文中还给出了相关硬件连接、自举表的建立。实验证明,采用该引导装载系统具有较强的实用性,可以提高DSP软件的保密性。
关键词 TMS320VC5509A;SST25LF080A;串行引导

    随着数字信号处理技术的发展,数字信号处理器(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转换程序得到。
[!--empirenews.page--]
2 自举和加解密实现
2.1 硬件设计
    SST25LF080A是SST公司生产的SPI串口8 MbitFlash,支持SPI的Mode0和Mode1方式,其可靠性高,最大时钟频率为33 MHz,供电电压为3.3 V,可重复写10万次以上。采用8脚SOIC封装形式,与TMS320VC5509A的硬件连接如图1所示。


2.2 二次引导技术
    DSP本身所带的Bootloader不能实现加密功能,因此对于Flash里的程序无法起到保护作用。所以在Bootloader的基础上,还需要进行二次引导,即通过DSP内部ROM同化Bootloader,首先引导另一个引导程序,该程序是由用户自行编写,功能与ROM固化的Bootloader类似,但增加了对程序代码加解密和校验等功能,并在加载结束后,把PC值置于实际程序的入口地址,使程序转至实际程序。
2.3 程序加密与解密
    对程序的初始保护,即把最终运行的程序代码写入Flash芯片之前,对代码进行加密处理。过程如下,DSP的一次引导过程只加载储存在SST25LF080A中的加解密程序,需要向Flash写入时,读取DSP自身的ID号作为密钥,通过一定的加密算法将二次引导的程序进行加密处理后再写入,这样,SST25LF080A中就不存在明文形式的代码。
    DSP的一次引导过程只加载储存在SST25LF080A中的加解密程序,二次引导则加载SST25LF080A中已经加密的代码,然后读取DSP自身的ID号作为密钥进行解密,加载结束和完成解密后再继续运行。
    为防止破译者直接修改读取ID部分的引导代码,改为使用固定ID,还必须基于数据驱动进行连续二次保护。它的处理对象是一些重要参数或变量,通过读取引导程序的校验值和DSP本身ID,完成对这些参数或变量“加锁”,让它们以密文形式存在于程序中。这样即使完成了对引导程序的简单破译,也无法使程序正常运行。


    经过处理,可以有效地避免通过读取Flash内容直接破译,或者直接读取Flash内容后在不同产品中反复利用的做法,对保护知识产权有着重要的意义。对于DSP代码加密,可以根据需要的加密复杂程度进行算法选择,实现框图如图2所示。

3 结束语
    针对TMS320VC5509A和SST25LF080A,使用串行方式实现程序自举引导的二次引导加载,提出基于该方式的程序加密方法。该方法不仅可用于TMS320VC5509ADSP中,其他类似高速微处理器系统的引导加载方案中也可得到应用,实现了灵活的程序加载。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭