打印

【转】msp430程序升级方法

[复制链接]
812|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rangar|  楼主 | 2017-6-17 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运行新的程序。但是和学长交流了一下,这种方法不够好,希望有一种软复位的方式。于是百度了一下,都是些对看门狗进行写入特殊值使得430的cpu复位。反正个人是没有采用。
       因为在搞程序的烧写下载,所以看了一下430的BSL。看到里面有一段话,关于从C代码中启动BSL的方法。如下:
      3.7.1 从一个外部应用中启动BSL
             将程序计数器设定到内存为位置0x1000 来启动BSL。堆栈一直被复位,而RAM 被清空。应该注意的
             是,GIE 位未被禁用,所以如果不需要中断的话,这一步应该通过调用应用来完成,并且如果它们被使用的
             话,这一步应该从“返回BSL”返回。
             由于堆栈被复位,位置0x1000 也可以被作为一个C 功能进行调用,示例代码如下:
             ((void (*)())0x1000)()
      于是想到,既然可以从C里面跳转到0x1000,那么也可以跳转到其他地址,比如复位地址了。
      以6638为例。430的复位中断矢量地址是0xFFFE,里面存储了将要跳转的物理地址。6638的代码区起始地址是0x8000,正常复位是先进入复位中断,然后PC指针导入地址0x8000,然后从0x8000开始执行代码。那么软复位则是,执行((void (*)())0x8000)(),直接PC指针被导入0x8000的地址,而这个地址正好是6638的代码区起始地址,于是软复位了。个人分析一下这个指令,如有错误敬请大神们指正。
      从代码上讲,(void (*)()是一个指向空函数的指针,((void (*)())0x8000)()是将0x8000强制转换为函数指针后进行函数调用,于是0x8000便被送入了PC指针。
      对于其他的430单片,去查其数据手册FLASH段,弄清其代码区的开始地址,也可以用这个方法软复位了。
      实测,IAR,CCS下编译、实践通过。
      最后,查了一下,对于计算机系的这个方法可能是常识了,但是对于搞单片机、嵌入式的大多还不知晓,个人就写出来,大家交流交流。已经知道这个方法的高手们,就一笑而过吧!

相关帖子

沙发
dirtwillfly| | 2017-6-19 21:34 | 只看该作者

使用特权

评论回复
板凳
gygp| | 2017-6-22 22:32 | 只看该作者
串口升级方式。

使用特权

评论回复
地板
chenci2013| | 2017-6-22 22:33 | 只看该作者
Msp430程序在线升级的三种方法

使用特权

评论回复
5
biechedan| | 2017-6-22 22:33 | 只看该作者
FLASH的自定义法(利用串口)程序烧写

使用特权

评论回复
6
wangdezhi| | 2017-6-22 22:34 | 只看该作者
chenci2013 发表于 2017-6-22 22:33
Msp430程序在线升级的三种方法

利用JTAG接口,利用BSL固件和利用用户自定义的升级固件?

使用特权

评论回复
7
isseed| | 2017-6-22 22:34 | 只看该作者
对MSP430系列单片机进行编程的方式有三种的。

使用特权

评论回复
8
suzhanhua| | 2017-6-22 22:35 | 只看该作者
在MSP430F5438上试验过。

使用特权

评论回复
9
mituzu| | 2017-6-22 22:35 | 只看该作者
利用JTAG接口,利用BSL固件常见的。

使用特权

评论回复
10
hellosdc| | 2017-6-22 22:36 | 只看该作者
IAP升级程序

使用特权

评论回复
11
uiint| | 2017-6-22 22:36 | 只看该作者
写入一个自升级引导程序。

使用特权

评论回复
12
uiint| | 2017-6-22 22:37 | 只看该作者
利用MSP430单片机串口自升级

使用特权

评论回复
13
biechedan| | 2017-6-22 22:37 | 只看该作者
烧写完成后断电复位,reset按键就可以运行新的程序

使用特权

评论回复
14
wangdezhi| | 2017-6-22 22:37 | 只看该作者
chenci2013 发表于 2017-6-22 22:33
Msp430程序在线升级的三种方法

一般都是jtag烧写程序。

使用特权

评论回复
15
isseed| | 2017-6-22 22:37 | 只看该作者
通过串口升级程序的方法

使用特权

评论回复
16
hellosdc| | 2017-6-22 22:37 | 只看该作者
要实现单片机的IAP升级程序

使用特权

评论回复
17
mituzu| | 2017-6-22 22:37 | 只看该作者
jtag的接口更简单一些。

使用特权

评论回复
18
suzhanhua| | 2017-6-22 22:37 | 只看该作者
远程升级程序

使用特权

评论回复
19
chenci2013| | 2017-6-22 22:37 | 只看该作者
都来讲一讲,学习一下这三种升级方式。

使用特权

评论回复
20
gygp| | 2017-6-22 22:37 | 只看该作者
需要修改BootLoader呢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

154

主题

763

帖子

0

粉丝