历史上的今天
返回首页

历史上的今天

今天是:2025年03月31日(星期一)

正在发生

2020年03月31日 | MSP430使用指南31 -> BSL

2020-03-31 来源:eefocus

在讲述BSL功能之前,首先我们需要了解以下MSP430的下载方式:


JTAG: 很多MCU都使用的下载方式,具有速度快,可以仿真等优点,但是连线较多,需要:

VCC, GND, TDI, TDO, TMS, TCK, TEST,RST 每个引脚具体功能如下图所示:

SBW: SBW即Spy-Bi-Wire下载方式,包括电源的两个引脚在内的话,仅仅需要四个引脚:

VCC, GND, SWDIO, SWCLK, 其中SWDIO为数据引脚,双向通信,SWCLK为时钟引脚,在MSP430内部有一个SBW控制器,可以解码SBW信号转换成JTAG信号,如下图所示:

BSL: BSL即bootloader,是固化在MSP430内部ROM区的一块数据,用于对MCU内部空间进行读写数据,由于BSL的程序存在ROM区,因此在出场后就固定了,不会收到用户再次编程的影响,同时在烧写程序过程中,如果设定了密码或者使能了熔断丝,则会导致JTAG和SBW均无法正常烧写程序,这时可以使用BSL进行大量擦除,同时BSL可以设定密码,方防止MCU内部程序被窃取。同时,BSL一般接口是USRT或者I2C,因此可以实现一个MCU对MSP430的程序升级。


好啦,在描述玩MSP430烧写程序之后,问题来了,既然有这三种程序下载模式,那么下载器如何选择进入哪一种模式呢? 这就需要RST和TEST引脚了,具体时序如下图所示:


注意:对于Flash系类MCU,有些没有TEST引脚的芯片吗,使用TMS引脚,不过进入的时序和下图有点区别,具体看每个芯片的User Guide和Datasheet。

下面介绍一下MSP-FET烧写器的引脚功能即连接方式:


MSP-FET实物图如下所示,支持以下功能:


JTAG下载

SBW下载

BSL下载(支持UART I2C)

用户串口:在连接电脑后你会发现有两个COM口,一个是Debug的,另一个则是用户串口,也就是MSP-FET内部已经有USB转TTL模块(本质上是使用的F5528的USB模块,可以实现一个硬件接口,多个COM口)。串口使用过程中,建议选择9600左右波特率,因为这个串口是软件实现的,后续连接的MCU可能也是软件实现的,高波特率的通信会有较大误差,可能导致通信失败。

供电:VCC_TOOL

下图是MSP-FET的引脚图,由于TI想标明JTAG SBW BSL三种模式的下载接口,所以就标成了这个样子。。。。 很有误导性,下面我介绍一下如何连接到MCU上。

第一种模式:JTAG


需要连接引脚:TDO TDI TMS TCK GND VCC_TOOL RST TEST

第二种模式:SBW


需要连接引脚:SWDIO SWCLK GND VCC_TOOL

第三种模式:BSL


需要连接引脚:TEST RST GND VCC_TOOL UART_TXD UART_RXD(PS : 串口模式,如果是I2C 连接I2C引脚)

附上一张更加详细的MSP-FET引脚描述图:

OK,在描述玩这几种下载模式,及硬件连接等之后,开始详细讲解一下BSL的使用:


首先,你需要下载BSL工具:


BSL已经集成到新版CCS和Uniflash(5.0版本以后)中,但在PC端,为了使用每一个BSL命令,我们采用BSL Scripter软件,下载地址如下:


http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPBSL_Scripter/latest/index_FDS.html


这个软件是使用CMD命令实现的一个脚本插件,因此在安装完之后,会有下图所示的一堆文件:

文件中BSL-Scripter.exe即是BSL的脚本,进入ScriptExampleWindows文件夹,你会发现里面有跟多例程,我们进入FRxx_uart,如下图所示,有四个文件:

第一个blinkLED_FR6989.txt文件时程序,需要BSL下载进入MCU的,中间pass32_default.txt和pass32_wrong.txt是BSL的密码,因为访问BSL一定是要密码的,这个密码是可以通过编译软件自己设置的,最后一个文件script_FRxx_uart.txt则是执行的BSL命令,把命令全部都写入文件里,使用BSL-Scripter.exe脚本可一次性执行多行程序。


在安装完成后默认文件中的程序可自行查看,本实验中使用FR2355 MCU,因此写BSL程序如下:


LOG      // 打开文件记录生成

MODE FRxx UART 9600 COM8   // 选择FR MCU, UART模式,端口COM8 波特率9600

CHANGE_BAUD_RATE 115200   // 改变波特率为115200

DELAY 2000                         // 延时2000ms

RX_PASSWORD BSLPassword.txt   // 写BSL密码

RX_DATA_BLOCK MSP430FR2355.txt   // 烧写程序

DELAY 4000                         // 延时4000ms

TX_DATA_BLOCK 0x8000 0x0080 MSP430FR2355_R.txt     // 从MCU中读程序

                                        // (地址:0x8000 长度:0x0080)

CRC_CHECK 0x8000 0x0080   // CRC校验(地址:0x8000 长度:0x0080)

SET_PC 0xFFFE     // 设置启动地址,启动程序

如上图所示即为烧写,读取程序的整体流程,有几点需要写明:


BSL密码:这个在使用烧写工具,比如FET-pro等时可以进行设置,同时保存出一个BSL密码,如果没有设置,就为全FF,也就是在默认文件中的pass32_default.txt文件

BSL密码:如果写错,会导致MCU内部数据全部擦除,包括BSL密码也会擦除,因此你会发现官方的程序是先给一个错误的BSL密码(随便都行),再给一个默认的BSL密码,就是全FF:pass32_default.txt文件,这样就可以保证如果BSL密码错误,直接擦除MCU数据以保护资料不会被窃取。


更多BSL指令如下所示:


下面开始执行上述的额BSL程序,


MCU: MSP430FR2355

BSL模式:UART

连接方式:

      VCC_TOOL (2)        <->             3.3V


      GND (9)                   <->             GND


      TEST/VPP (8)          <->             SBWTCK (4)


      RST (11)                   <->             SBWTDIO (5)


      UART_TXD (12)      <->             P1.7 (31)


      UART_RXD (14)      <->             P1.6 (32)


实验结果图如下:

注意:两个命令:


cd C:tiBSL-Scripter  :进入脚本文件夹,这个和你安装路径有关

BSL-Scripter DemoBSLScripter.txt  :执行BSL程序,因为我的BSL程序文件BSLScripter.txt不和脚本再同一级目录下,再下一级目录里面,因此需要使用这种方法,如下图:

附上你可能会用到的参考文件链接:


BSL Scripter User's Guide : http://www.ti.com/lit/ug/slau655f/slau655f.pdf

MSP debuggers : http://www.ti.com/lit/ug/slau647m/slau647m.pdf

MSP430™ Programming With the JTAG Interface : http://www.ti.com/lit/ug/slau320ah/slau320ah.pdf

推荐阅读

史海拾趣

Blue Giga公司的发展小趣事

2015年,Silicon Labs(芯科科技有限公司)宣布收购Blue Giga。这一收购对于双方来说都是一个重要的里程碑。Silicon Labs通过收购获得了Blue Giga的先进技术和广泛的产品线,进一步增强了其在物联网和无线连接领域的竞争力。而Blue Giga则借助Silicon Labs的全球资源和市场渠道,实现了更快速的发展。

ALCOA公司的发展小趣事

在20世纪的后半叶,ALCOA继续在技术上取得重大突破。例如,在40年代,公司采用N-40(Niagara)50kA中心下料预焙阳极电解槽技术为政府建造了铝冶炼厂。此外,公司还不断扩大海外业务,建立了全球性的生产和销售网络。这种全球布局使得ALCOA能够更好地满足不同地区的市场需求,也增强了公司的竞争力。

AntennaHome公司的发展小趣事

AntennaHome公司深知技术创新是企业持续发展的根本动力。因此,公司始终坚持将研发作为企业的核心战略。公司不断加大对研发的投入力度,引进先进的研发设备和人才,同时积极与高校和研究机构开展合作。这些举措使得公司在天线技术领域始终保持领先地位,为公司的长远发展提供了有力保障。

这五个故事展示了AntennaHome公司在电子行业中的发展历程,从创业初期的技术创新到与国际大厂的合作,再到应对行业变革的挑战、参与国际展会以及持续投入研发,每一步都体现了公司的努力和坚持。

Dalian Dlicap Corporation公司的发展小趣事

为了满足市场不断增长的需求,达利凯普在大连市金普新区投资建设了高端电子元器件产业化项目。该项目总用地面积4万平方米,总建筑面积5.6万平方米。项目建成后,将实现年产射频微波瓷介电容器30亿只的产能规模,进一步巩固了公司在行业内的领先地位。同时,该项目的实施也为当地经济发展注入了新的活力。

BLACK&DECKER公司的发展小趣事

2010年3月15日,BLACK&DECKER迎来了公司历史上的一个重要时刻——与史丹利公司合并组建史丹利百得公司。这一合并不仅使BLACK&DECKER获得了更强大的资源和市场支持,还为其未来的发展提供了更广阔的空间。合并后的史丹利百得公司致力于提供整合的五金工具、存储设备和安防系统解决方案,以满足全球消费者的多样化需求。通过整合双方的优势资源和技术力量,史丹利百得公司有望在电子行业中取得更加辉煌的成就。

综上所述,BLACK&DECKER公司在电子行业中的发展故事充满了创新、进取和成功的元素。从创立初期的艰苦创业到如今的全球领先品牌,BLACK&DECKER凭借其卓越的产品质量、技术创新和市场拓展能力,赢得了消费者的信任和市场的认可。未来,随着科技的不断进步和市场需求的不断变化,BLACK&DECKER将继续保持创新精神,推动电子行业的持续发展。

AnalogicTech公司的发展小趣事

AnalogicTech公司成立于1997年,总部位于美国硅谷。在创立初期,公司面临资金短缺、市场竞争激烈等诸多挑战。然而,凭借创始团队对半导体技术的深刻理解和前瞻视野,AnalogicTech成功开发出一系列具有创新性的产品,逐渐在市场中站稳脚跟。

问答坊 | AI 解惑

关于低频信号发生器的问题,请高手们指教

我的电路设计和程序都编写好了,但是输出波形很不理想,只有方波OK,三角波,锯齿波,正弦波都失真很厉害,求大侠们帮小弟解决下这个问题! ORG 0000H MAIN:          MOV A,#00H      MO ...…

查看全部问答>

讨论:各位在单片机中用什么算法去做菜单?

讨论:各位在单片机中用什么算法去做菜单?   比如我要用89s52和smc1602做个菜单。这个菜单有很多层的,即有子菜单。   不知道各位用的是什么方法和算法?   小弟我一开始就用树和链表方式做的。不好。 & ...…

查看全部问答>

自己做个数子示波器,液晶屏是用那款好!

动手做个示波器,液晶显示屏不知用那款好些.有的说用 NS 12864C,也有的的说用 NS 12864R 有点拿不准.想请教高手.用那款实用好些,二者有何区别.请给欲我答复.感激.谢谢!…

查看全部问答>

深入浅出ARM7

深入浅出ARM7-LPC213x_214x(上).pdf 深入浅出ARM7_LPC213x__214x_下册.pdf…

查看全部问答>

cyclone v使用报告——内存内存控制器

使用Altera的UniPHY控制器,采用软核和硬核两种模式,使用的时候一般是PHY跟controller一起使用,例化的时候已经将两者合为一体了。使用软核或硬核的区别只是下图的一个check box是否选上。 本来还好好的,默认没有选上,一点击使用硬核之后,图表 ...…

查看全部问答>

ucosII 移植到LM3S9B92上还真是不简单

一直想把ucosII V2.92移植到LM3S9B92上去,但前前后后搞了将近三个星期了,还是没有一点结果,指针总是越界,第一个任务还没启动起来就会进入死循环,真是郁闷啊。…

查看全部问答>

为什么EPM570会被程序弄死?

写了个串口调试程序用来测试板子各个工作点状态的,但是居然第一次烧录几次后CPLD就不能再烧录了干脆坏掉了,只能换芯片,要知道100脚的epm570更换起来多费时间。是不是程序导致芯片内部短路了?…

查看全部问答>

msp430F5529和F169之间异步通信可以吗

msp430F5529和F169之间异步通信可以吗?已经做通5529与5529通信,1X与1X之间的通信? …

查看全部问答>

LED恒流驱动电源最新

我有个论文要写,关于LED恒流驱动的,市面是否有新颖或新款的电路。有创新点的。评职称用很愁啊。 …

查看全部问答>

关于ZigBee节点的求助

求大神指教!!! ZigBee技术中,网络中的设备按照各自的作用的不同可以分为协调器节点、路由器节点和终端节点。 是不是终端节点之间是不能相互通信的,只有路由器节点之间才能相互通信的?然后协调器节点相当于“大脑”,我的理解应该木有错吧! ...…

查看全部问答>