历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2021年04月23日 | MSP430系列单片机的加密熔断器是怎样炼成的?

2021-04-23 来源:eefocus

MSP430 系列单片机是德州仪器(TI)公司推出的一款16位超低功耗单片机。它能够在1.8~3.6 V电压、1 MHz频率的条件下运行,耗电电流在0.1~400μA。在运算速度上,MSP430系列单片机能在8 MHz晶振的驱动下,实现125 ns的指令周期。16位的数据宽度、125 ns的指令周期以及多功能的硬件乘法器相配合,能实现数字信号处理的某些算法(如FFT等)。


在整合方面,MSP430系列单片机将大量的CPU外围模块集成在片内,有如下一些模块:看门狗(WDT)、模拟比较器、串口、硬件乘法器、液晶驱动器、 10位/12位/14位ADC、端口0~6、基本定时器。其中定时器A、B均带有多个捕获/比较寄存器,同时可实现多路PWM输出;模拟比较器与定时器配合,可方便地实现ADC;液晶驱动多达160笔段;硬件ADC模块在小于10 μs的速率下实现10~14位的高速、高精度转换,同时提供采样/保持与参考电压;端口0、1、2能够接收外部上升沿或下降沿的中断输入。


MSP430 系列单片机的开发调试有多种技术方案,其中以JTAG和BOOTSTRAP(简称“BSL”)方式最为方便。对于Flash型的MSP430单片机初期开发进行的仿真,只需要1台PC机和1个JTAG控制器即可实现。进入产品级开发阶段,为了保护用户代码,烧断Flash的保护熔丝以后就无法再通过 JTAG口访问单片机,这时用户对Flash中的程序再进行检查或更新就只能通过BOOT-STRAP进行。不用担心用户代码会泄露,BOOTSTRAP 提供了32字节256位的密码保护,能完全确保代码的安全性。


1 熔断加密原理


MSP430 系列单片机采用JTAG(实际上称为IEEE1149.1或边界扫描)接口技术,实现对单片机全部存储器的访问,包括程序Flash、ROM、RAM,并可对其进行擦除、读写。它能用于程序的下载,监测程序使用情况和各个变量与寄存器的使用情况,并可对其进行修改。JTAG接口需要4根信号线、地线和电源线。具体信号线的定义如表1所列。


熔断器1


JTAG 接口为程序的调试、仿真及监控带来了很大的方便,大大提高了编程效率,缩短了开发周期;但在程序测试完成转换为产品推向市场时,就必须对程序代码进行加密处理,防止程序代码的泄漏。JTAG接口的安全性很差,只要符合JTAG标准的控制器就可以将程序代码读出,所以必须禁止JTAG功能。对于MSP430 系列单片机,禁止JTAG功能的途径是将单片机内部的加密保险丝熔断,熔断后的单片机就无法再使用JTAG功能,从而达到加密程序代码的目的。具体的 JTAG及加密保险丝结构框图如图1所示。


熔断器2




MSP430 系列单片机在上电复位时会通过TDI/TCLK端对保险丝进行检测,当保险丝完好时,在TDI/TCLK和地之间会有1 mA的电流流过。保险丝检测出现在上电复位以后TMS端的第一个下降沿上,在第二个下降沿上会解除保险丝的检测,直到下一次的上电复位再进行保险丝检测,即在每一次的上电复位都会对保险丝进行检测。保险丝检测电流只有在保险丝检测方式时才会流过TDI/TCLK端,当检测不到保险丝电流时,JTAG功能就会失效,且这种加密方式是硬件方式的加密,一旦保险丝熔断,JTAG功能就永久失效了,无法再通过JTAG口访问单片机,从而保证了单片机内代码的安全。


熔断器3




2 熔断加密的时序及方法


MSP430单片机保险丝的熔断必须在特定的条件下进行。表2列出了熔断保险丝所需的条件及具体参数。


在满足表2所列的条件下,简单地将6.5 V电压加在TDI/TCLK端上时,是无法熔断保险丝的,必须在一定的时序及指令下才可以完成。下面是熔断保险丝所需的指令及时序:


熔断器4


熔断器5




IR_SHIFT(“IR_CNTRL_SIG_16BIT”) 为切换JTAG进入16位数据接收模式;DR_SHIFT_IN(0x7201)为将TDO信号切换为TDI功能,TDI信号释放,为接入熔断电压Vpp 作准备;IR_SHIFT(“IR_PREPARE_BLOW”)为设置MSP430进入保险丝熔断方式;MsDelay(1)为延时1 ms,同时连接熔断电压Vpp至TDI信号端;TR_SHIFT(“IR_BX_BLOW”)为执行保险丝熔断;MeDelay(1)为延时1ms,同时断开TDI端的熔断电压Vpp,TDI信号端切换回TDI功能,JATG状态机复位。保险丝加密熔断完成。


3 熔断加密器的设计与实现


熔断加密器可以实现对MSP430 Flash单片机的编程、烧熔丝和BSL下载。可以选择编程后是否熔断芯片内熔丝,进行加密;可自行设置密码,彻底保护芯片内容;可进行完全擦除编程和保留编程,通过BSL方式读出目标CPU内的代码。


熔断加密器的硬件采用了MSP430F1111A作为系统芯片,实现对目标JTAG口的通信控制、熔断电压Vpp的加载与分离、目标MSP430单片机中保险丝熔断指令的控制。在电源部分,熔断电压Vpp及100 mA的熔断电流是在7806三端稳压芯片与地之间串接二极管IN4001来实现的;熔断电压Vpp的加载与分离通过继电器的通断来实现,并使用了3个 LED分别指示目标单片机保险丝未熔断、正在熔断及已熔断的状态。熔断加密器系统控制部分的电路如图2所示。


熔断器6




软件部分是通过C语言来实现熔丝加密器与目标单片机之间的数据通信及指令控制的。


以下为加密熔断器主程序:


熔断器7


熔断器8


熔断器9


推荐阅读

史海拾趣

蜂鸟无线公司的发展小趣事
在PWM调速电路中,需要加入过流保护、过压保护等保护措施,以防止电动机因过载而损坏。
洲光源(Chau Light)公司的发展小趣事

洲光源公司自2011年成立以来,一直致力于红外LED光源器件的研发和生产。在公司成立的初期,市场上对于红外LED的需求并不高,但洲光源公司坚信其未来的潜力。通过不断的技术研发和创新,洲光源成功开发出了高效、稳定、可靠的红外LED产品,逐渐在市场上树立了良好的口碑。随着智能家居、安防监控等领域的快速发展,红外LED的需求迅速增长,洲光源公司也迎来了发展的黄金时期。

方舟(ARKLED)公司的发展小趣事

方舟公司不仅关注经济效益,还积极履行社会责任。公司积极参与环保事业,推动绿色生产,减少能源消耗和废弃物排放。同时,方舟公司还关注社会公益事业,捐资助学、扶贫济困,为社会和谐发展贡献了一份力量。

Akahane Electronics Ind Corp公司的发展小趣事

为了应对市场的多变性和不确定性,Akahane实施了多元化战略。除了继续深耕半导体领域外,公司还积极拓展智能家居、物联网等新兴领域。通过不断推出创新产品和完善服务体系,Akahane成功打开了新市场的大门,实现了业务的多元化发展。这一战略不仅为公司带来了新的增长点,还增强了公司的抗风险能力。


这些故事虽然基于虚构,但它们反映了电子行业中企业可能经历的一些典型发展路径和挑战。希望这些故事能够满足你的需求。

Adamant Co Ltd公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Adamant Co Ltd面临着来自同行的压力以及新兴技术的挑战。为了应对这些变革,公司进行了战略调整,加大了对研发和创新的投入。同时,公司还积极拓展新的业务领域,如物联网、人工智能等前沿技术。这些战略调整使得Adamant Co Ltd在激烈的市场竞争中保持了领先地位。

AIC [Analog Intergrations Corporation]公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Adamant Co Ltd面临着来自同行的压力以及新兴技术的挑战。为了应对这些变革,公司进行了战略调整,加大了对研发和创新的投入。同时,公司还积极拓展新的业务领域,如物联网、人工智能等前沿技术。这些战略调整使得Adamant Co Ltd在激烈的市场竞争中保持了领先地位。

问答坊 | AI 解惑

无线嵌入式信息家电系统智能终端的设计

摘要:传统的家电由于布线复杂,不利于集中控制,本文设计了由性价比高的nRF905单片射频发射器芯片和P87LPc764单片机组成的智能 终端使用的嵌入式无线通信接口,该接口向低端支持I。c、sPI、uART或以并行接口形式为家电控制器扩充通信接口;向高端 ...…

查看全部问答>

请教WinCE6R2实现手机功能

各位大哥,我们是使用PXA303+Wince6R2实现的手持设备,使用SimCom300D模块作为手机、通讯模块,请教大家如何实现: 1.接打电话 2.发送接收短消息 3.彩信 谢谢。…

查看全部问答>

VS2005 添加Dialog资源时有些软件提供的对话框资源 怎样使用

VS2005中,做WinCE的应用软件,使用S3C2440+3.5\'触摸屏,在添加Dialog资源时有些软件提供的对话框资源: IDD_POCKETPC_LANDSCAPE IDD_POCKETPC_PORTRAIT IDD_POCKETPC_SQUARE IDD_POCKETPC_PORTRAIT 有啥区别,怎样使用? …

查看全部问答>

uboot的问题

最近在整linux移植,有些问题不是很清楚,望高手指点 1.flash分区是在uboot中指定还是在内核中定义,具体在哪指定(针对NOR Flash)? 2.若用uboot引导双系统改如何实现? …

查看全部问答>

单片机驱动电磁阀

在单片机的一段要加上上拉电阻,然后和这个图组合就能够驱动起来300mA的电磁阀了(功率是3.5w,电压12V) 我c:/51驱动300mA电磁阀.bmp 我不知道怎么上图,有知道的给我说下,我上图! …

查看全部问答>

请教触摸屏函数DdsiTouchPanelGetPoint调用的流程?

请问触摸屏函数DdsiTouchPanelGetPoint是在什么情况下调用的? 是在用户按了触摸屏后,产生中断,然后调用的该函数吗? 我的NK运行后,没有按触摸屏,怎么系统一直在调用该函数,而触摸屏也没有响应?…

查看全部问答>

小信号的过零检测

       单位要设计了 一电压过零检测电路   需要从几毫伏 到几伏之间 频率小于1khz 的 电压中检测出零点  ,一直很迷茫  我的设计大致步骤如下  希望各位大侠帮帮我小信号  经AGC放大到5伏   &n ...…

查看全部问答>

看到一本书里有个运放电路,在输出输出端接了一个电阻,太理解这个电阻的作用

按照理想运放虚拟短路,虚拟断路的原理计算出Vout=-(Rf/R2)Vin,但里面多了一个电阻R4,不明白是什么作用,希望大家指点一下。 [ 本帖最后由 我很单片机 于 2011-8-4 13:20 编辑 ]…

查看全部问答>

帮忙分析下,串口调试助手怎么显示乱码,xiexie

外接晶振 8MHz /*********************************************** ****      AVR  DS18B20范例           *** **** MCU: ATmega16        &n ...…

查看全部问答>