MSP430单片机加密实施方案_第1页
MSP430单片机加密实施方案_第2页
MSP430单片机加密实施方案_第3页
MSP430单片机加密实施方案_第4页
MSP430单片机加密实施方案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要 BOOTSTRAP用于在MSP430设计开发及系统更新时对Flash存储器的编程。它可以用经串口协议的命令来激活,使得用户可以通过PC控制MSP430,并实现数据交换。烧断Flash的熔丝是用来保护用户在Flash中的程序代码。本文主要介绍我们制作的BOOTSTRAP这一开发工具的功能、软硬件结构以及熔断工具的制作方法。关键词 MSP430 BOOTSTRAP 熔断引言对于MSP430单片机的开发调试有多种技术方案,例如EPROM方式、OTP方式、仿真开发系统方式、JTAG和BOOTSTRAP方式。BOOTSTRAP(又名BootStrap Loader,简称BSL)可与另一种Flash

2、仿真工具JTAG控制器配合使用。对于Flash型的MSP430单片机初期开发进行的仿真,只需要1台PC机和1个FET(Flash Emulator Tool)的JTAG控制器即可实现。进入产品级开发阶段,为了保护用户代码,烧断Flash的保护熔丝以后就无法再通过JTAG口访问单片机,这时用户对Flash中的程序再进行检查或更新就只能通过BOOTSTRAP进行。不用担心用户代码会泄露,BOOTSTRAP提供了32字节256位的密码保护,能完全确保代码的安全性。BOOTSTRAP的硬件制作并不费力,只要与调试环境软件配合(TI网站提供免费下载限制功能的软件,不过用户可以轻松地制作完全功能软件),就

3、能很方便地构建自己的开发环境。对于熔断的方法,从以前TI公布的资料看,只要在功能引脚上施加一个6.5V左右的电压数ms就可以了。当然,各类芯片熔断的方法也有一些差异。但是,除了11x系列的单片机有人用这种方法试验成功外,对其余系列的单片机无法实现,甚至有毁坏芯片的可能。现在,随着为TI公司的各类FET仿真器及BOOTSTRAP开发工具的相继推出,在一篇TI资料中,给出了MSP430熔断的方案和指令结构,这样,我们用DIY的完全功能开发调试系统就可以构建成功了。1 BOOTSTRAP的功能与启动通过BOOTSTRAP可以访问单片机的全部存储器,包括程序Flash、ROM、RAM,并可对其进行擦除

4、、读写。它能用于批量下载程序,监测程序使用情况和各个变量与寄存器的使用情况,并可对其进行修改。因此,使用BOOTSTRAP能够方便地进行软件升级。用户烧断Flash熔丝的目的在于保护程序代码,通过BOOTSTRAP读取MSP430,需要32字节即256位的密码口令;但是,BOOTSTRAP又表现了其极大的灵活性,其功能分为需要密码保护的功能与不需要密码保护的功能。其中,受密码保护的操作有从MSP430的存储器中读数据、写数据、Flash段擦除和读取程序计数器;不受密码保护的操作就是接收密码口令与Flash全擦除,擦除之后32个字节的密码口令全为0xFFH。这样使得用户的程序代码受到完全的保护,

5、而且芯片也能保持应用的灵活性。对于MSP430系列Flash型单片机,依靠RST/NMI引脚与TCK引脚(有的型号如MSP430F11x1使用TEST引脚)和一定的时序就进入标准的复位过程,即使用地址0FFFEH处的RESET向量,然后进入正常的程序入口。改变RST/NMI引脚与TCK引脚的时序配合,就可以启动BOOTSTRAP,即地址0C00H处的BSL RESET向量用做程序入口,单片机执行BOOT ROM里的程序。MSP430F13x/14x的正常复位时序如图1所示,BSL复位时序如图2所示。图1图2如果发生以下情况,则不能启动BSL: 在RST/NMI引脚保持为低时,TCK引脚上出现的

6、上升沿少于2个; 当RST/NMI引脚电平从低跳变到高时,TCK引脚还是保持为高; JTAG接口已控制了MSP430的资源; 因Vcc下降引起POR(复位)。退出BOOTSTRAP时,要释放单片机的程序计数器PC,有两种情况:一种是在BSL中使用加载PC命令,从指定的程序地址继续执行;另一种是用标准的RESET序列强制使MSP430用0FFFEH的向量地址开始执行程序。2 BOOTSTRAP的软硬件结构2.1 BOOTSTRAP的硬件结构BOOTSTRAP硬件完成PC机和MSP430单片机通信的接口功能,主要由电源供电、信号接口和电平转换几个部分构成。MSP430采用的是3.3 V电源,BOO

7、TSTRAP可以采用外部给单片机供电再将电引到BOOTSTRAP板上,或直接利用PC机串口的电压再转换成3.3 V的方案。利用PC机串口电压的方案由于不需要外部供电,适用于批量下载、修改程序,使用方便。PC机通过串口和MSP430通信,串口用的是232电平,MSP430单片机用的是3.3 V的供电系统,因此存在一个电压转换的问题。对于电压转换,TI公司提供两个系列的电压调整芯片TPS770xx和TPS760xx系列。这两款芯片都能满足输入从 -0.313.5 V,稳定输出50 mA 电流1.25 V的要求。BOOTSTRAP使用的信号线与串口信号线的对应情况如表1所列。信号线与MSP430系列

8、引脚的对应情况如表2所列。表1表22.2 BOOTSTRAP的软件结构对于PC机来讲,主要就是解决通过串口与MSP430通信和可视化界面的问题,可以使用VC、VB、Delphi等各种软件开发工具,界面如图3所示。图3对于MSP430来讲,与PC机进行串口通信,接收、发送数据与擦写Flash的程序是已经固化在BOOT ROM里的,所以必须根据MSP430的设置来编写上位机程序。启动BSL后,MSP430会首先关闭看门狗、关中断、定义基础时钟模块,由DCO(Digitally-Controlled Oscillator)产生系统主时钟脉冲MCLK和辅助时钟脉冲SMCLK,使最小时钟频率为1.5 M

9、Hz。用TIMER_A做软串口实现与PC机通信,建立软件异步通信协议,连续模式,时钟源为MCLK,DIV1,CCR0用于比较,CCTL0用于查询CCIFG0标志。P1.1为TX发送端(设置为输出高),P2.2为RX接收端(设置为输入)。BSL初始化系统后,处于就绪状态,等待PC机的同步序列和第一个命令。BOOTSTRAP的串口设置如表3所列。表3PC机设置好串口之后就可以发一个字节的同步信号给MSP430,MSP430正确接收后会返回一个ACK应答信号,PC机判断这个应答信号正确后就可以按照设定的帧格式发送、接收数据,MSP430每收到一帧,也会发一个应答信号以供PC机确认。其帧格式如图4所示

10、。图4BSL的程序代码在BOOT ROM中(0C00H0FEFH),0FF0H0FFFH保存有芯片的标识,其中BOOTSTRAP的版本信息就存储在地址为0FFAH的地方。BSL的初期版本(1.10及其以下)需要一些补丁来写Flash(参见TI有关资料Bug Ids:BSL2、BSL3和BSL4),其补丁也是MSP430的程序代码。先将其写到RAM中,使用LOAD PC的命令,将目标程序的起始地址装入程序计数器中,就可以执行补丁程序了。然后,在程序最后加一句跳转到0x0c00的语句就可以返回BOOTSTRAP了。通过这种方法,用户也可以自己对BOOTSRTAP做一些改动,以满足用户实际应用中的需

11、要。3 熔断操作MSP430Fxx的芯片中设置有保护熔丝。熔断需要在TDI引脚上加上一个6.5 V0.5 V的电压再加上一定的时序才能进行,一般采用PC机发出时序。TI的开发工具中,串口JTAG编程器能熔断,但它不能在线仿真。用户可以自己制作一个全套的开发工具,使之具有TI所有开发工具的功能。烧Flash的熔丝不能简单地以硬件给引脚加高电压实现,还需要用软件对MSP430发出指令来配合。以MSPF14x/13x为例,首先,通过IR_SHIFT指令使JTAG口控制MSP430单片机,通过DR_SHIFT_IN将TDO/TDI脚设置成TDI,发出指令IR_SHIFT(“IR_PREPARE_BLO

12、W”)后等待1 ms,再将熔断电压Vpp加在TDI脚上,送IR_SHIFT(“IR_EX_BLOW”)后再等1 ms就可以将Vpp移开了。具体指令情况可以参见TI文档。4 小结据了解,目前BSL的工具国外有SOFTBAUGH公司和GESLER公司制作的;国内也有杭州一家公司制作的BSL与熔断的综合工具,目前正在测试中。不过对于入门级的用户或个人,只要稍有一些软硬件制作能力,就完全可以花很短的时间来制作自己的开发工具,包括JTAG控制器、BSL和熔断器。参考文献1 TI参考文档slaa096b slaa149MSP430单片机常见加密总结2007-04-19 09:44:39天气: 晴朗 心情:

13、 高兴 1 为什么要加密,如何加密? 当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。2 JTAG、BSL、BOOTLOADER、熔丝的区别和关系是什么? JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编

14、程了。BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。要烧断熔丝(加密)必须使用JTAG接口;烧断熔丝后只能通过BSL或者用户代码来实现编程更新。3 BSL的验证密码是怎么回事? BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。通过BSL擦除所有Flash信息时不

15、需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。BSL的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。4 为什么要使用高级加密? 32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就

16、能将其破解。这对自动操作的计算机来说几乎是一瞬间的事情。那么如果用到的中断向量越多,就越难破解,最好的办法就是将所有未用到的中断向量全部填充为随机数据,这就是“高级加密”。5 关于TITXT文件 TITXT文件是TI公司为MSP430单片机定义的一种编程代码格式,其内容为纯文本格式,使用任何文本编辑器都能对其进行阅读,下面是一个这类文件的例子:FEFE+rZS p!hMmrAGuestB2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00EETOP专业博客-电子工程师自己的家园bF R7A8G4D%7W-t40 00 F2 D0 80 00 01 00

17、F2 43 33 00 C2 43 95 00EETOP专业博客-电子工程师自己的家园i O$UHPG sC2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00Jy7g&AjGuestF2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00EETOP专业博客-电子工程师自己的家园 +_-b?fP4XiF2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00kq-?.MqCJGuestF2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40EE

18、TOP专业博客-电子工程师自己的家园Ez w2B00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43-w5V)E#xFnGuest30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FEh+VG%A4V4RGuest30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40EETOP专业博客-电子工程师自己的家园3G xz!NG#TFE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40EETOP专业博客-电子工程师自己的家园;k,b)fdA

19、0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C+I2J0k_Guest0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 535Q3dM*efsb.QGuestF7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D1M7_C6dDRGuest1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41EETOP专业博客-电子工程师自己的家园&t,A)Ig _v G;D30 41 9zM%j;jmqGuestFFFEEETOP专业博客-电子

20、工程师自己的家园;uY4CvI;q5C FF EETOP专业博客-电子工程师自己的家园1 _R!An,b2AqEETOP专业博客-电子工程师自己的家园 cAS4t X:L 第一行的FEFE表示从地址0xFEFE开始,有如下代码。每行为16字节,每个字节使用16进制数表示,每两个字节之间用一个空格格开。内容末尾的FFFE就是程序的复位向量了,表示程序的入口地址为0xFF5C。最后用一个小写的q字符加换行结束,当然也可以把中断向量的那两行放到最前面去,比如下面这段代码的含义跟上面的是一样的,同样符合规则。FFFEEETOP专业博客-电子工程师自己的家园,q Y S c9H/7jX5C FF !j/

21、b gq0q1b(P;wGuestFEFEEETOP专业博客-电子工程师自己的家园;X9uHX n0QB2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00EETOP专业博客-电子工程师自己的家园jXjt1.bn40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00h2ybZ6Q2SyGuestC2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00EETOP专业博客-电子工程师自己的家园A(V:Y;m otF2 43 91 00 F2 43 92 00 F2 43 93 00

22、 F2 43 94 00EETOP专业博客-电子工程师自己的家园N;ksvw1 WF2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 009S f(Zz U, RGuestF2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40vbe|;|Guest00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43EETOP专业博客-电子工程师自己的家园?Be4A2ft30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FEF)I:q7r Vc7|Gue

23、st30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40M F/D E+PGuestFE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40?A3wYr*;GuestA0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C*#C1K6nuGuest0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53)R2R5TvGuestF7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4DU:i9|*yvW G

24、uest1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41EETOP专业博客-电子工程师自己的家园5r/G;I_L-z30 41 -x)b6v/a9uXVGuestqMCR!T uM:EZl LGuest 手动修改TITXT文件来实现高级加密:下面是使用到中断向量较少的一段代码的中断向量:W#z0rIdYGuestFFE0s:f:cVR_C5Guest10 FF A0 FF 5!xpC9g!A%JGuestFFFEEETOP专业博客-电子工程师自己的家园%c6M,g6xuv5C FF它与下面这段代码意义是一样的:t9y nR A2Wbj GuestFFE0.d5Ic2pJznGuest10 FF A0 FF FF FF FF FF FF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论