下面简单描述一下三种接口的区别:
1、JTAG是边界扫描技术,其在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430的内部数据地址总线上,所以可以用JTAG访问430内部的所有资源,包括对FLASH的读写操作。所以可以用于对MSP430的仿真及编程。主要连接线有TMS、TCK、TDI、TDO、RST、TEST。
2、SBW是SPY-BI-WIRE,可以简称两线制JTAG,主要用SBWTCK(连接到JTAG仿真器的7脚TCK)与SBWTDIO(连接到JTAG仿真器的1脚TDO/TDI),该接口主要用于小于28脚的2系列的430单片机,因为28脚以内的2系列单片机的JTAG接口一般与IO口复用,为了给用户预留更多的IO口,才推出了SBW接口。同样SBW接口可以用于仿真器及编程器。
3、BSL是TI在对MSP430出厂时预先固化到MCU内部的一段代码,有点类似于DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。BSL通过UART协议与编程器连接通信。编程器可以发送不同的通信命令来对MCU的存储器做不同的操作。BSL的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。BSL启动后,就可以对MCU进行访问了。
一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。BSL内部没有熔丝。当熔丝烧断时(物理破坏,且不可恢复)JTAG与SBW的访问将被禁止,此时只有BSL可以访问。而通过BSL对MCU的访问是需要32个字节的密码,该密码就是用户代码的中断向量表。所以430的加密系统到目前为止尚无被解密的报告。
仿真器的型号一般有UIF(USB接口,支持JTAG、SBW)、PIF(并口,只支持JTAG)、EZ430(USB接口的,只支持SBW模式);专业编程器有GANG430(串口、一拖8个,支持JTAG、SBW,不支持BSL);多功能编程器(JTAG、SBW、BSL)。这些编程器都可以做离线烧写,即脱离计算机来对目标板烧写。也可以用仿真器配专业的软件来做编程器,这类软件有MSPFET、FET-PRO430等
MSP430的BSL
BSL的意义:
1、不用仿真器、编程器,就可以实现内存修改(可以应用为参数修改),程序下载。 能加速程序成熟后的批量生产。方便在板修改程序参数。
2、JATG熔丝烧断后,访问内存的唯一方法。
MSP430启动加载程序(Bootstrap Loader,以下简称BSL)允许用户通过标准的RS-232串行口访问CPU内存,包括Flash和Ram,这项功能为嵌入式应用提供了方便的维护方式。
要使MSP430单片机进入BSL,需要给特定引脚上一个特定时序,接到这个特定时序后,CPU程序指针(PC)指向内存中的0C00H地址处,这是一段1K大小的ROM区(0C00H-1000H),BSL就在这里。
通过BSL对CPU的操作包括:读内存区、写内存区、flash全部擦除,flash 分段擦除。除flash分段擦除外,其它功能需要先校验密码,密码是存于地址0FFE0H~0FFFFH段的32字节的内容。