msp430程序升级方法

[复制链接]
1591|20
手机看帖
扫描二维码
随时随地手机跟帖
Sode|  楼主 | 2017-5-24 12:33 | 显示全部楼层 |阅读模式
msp430程序升级方法


在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下编译、实践通过。


相关帖子

chuntian2016| | 2017-5-24 20:28 | 显示全部楼层
这些个升级方式的还是都掌握的。

使用特权

评论回复
vibra2016| | 2017-5-24 20:33 | 显示全部楼层
这些主要注意地址的条用的

使用特权

评论回复
1988020566| | 2017-5-24 22:17 | 显示全部楼层
这是bsl升级的方法。

使用特权

评论回复
xiaoyaodz| | 2017-5-24 22:17 | 显示全部楼层
有远程升级程序的代码吗?

使用特权

评论回复
isseed| | 2017-5-24 22:18 | 显示全部楼层
这个还是需要修改BootLoader吧

使用特权

评论回复
lihuami| | 2017-5-24 22:18 | 显示全部楼层
通信的方式是基于什么协议?

使用特权

评论回复
1988020566| | 2017-5-24 22:18 | 显示全部楼层
bsl不如jtag快。

使用特权

评论回复
xiaoyaodz| | 2017-5-24 22:18 | 显示全部楼层
近期想做GPRS升级程序。

使用特权

评论回复
isseed| | 2017-5-24 22:18 | 显示全部楼层
BSL下载是基于修改之后的BootLoader

使用特权

评论回复
lihuami| | 2017-5-24 22:19 | 显示全部楼层
串口都是modbus吗?

使用特权

评论回复
Prry| | 2017-5-24 23:16 | 显示全部楼层
自己写BootLoader实现跳转,stm32一直这么做。

使用特权

评论回复
fentianyou| | 2017-5-25 22:00 | 显示全部楼层
使用串口升级吗?

使用特权

评论回复
fentianyou| | 2017-5-25 22:01 | 显示全部楼层
怎么不使用jtag接口呢。

使用特权

评论回复
pmp| | 2017-5-26 22:40 | 显示全部楼层
串口升级不能仿真调试。

使用特权

评论回复
pmp| | 2017-5-26 22:42 | 显示全部楼层
楼主最好使用仿真器开发。

使用特权

评论回复
zhangbo1985| | 2017-5-29 18:27 | 显示全部楼层
这个最主要的是采用远程OTA的方式的

使用特权

评论回复
tongbu2015| | 2017-5-29 19:31 | 显示全部楼层
这个最重要一点就是程序地址的访问与操作的。

使用特权

评论回复
baimiaocun2015| | 2017-5-29 20:09 | 显示全部楼层
这个的看下的了

使用特权

评论回复
mmbs| | 2017-5-29 22:58 | 显示全部楼层
使用串口烧写程序。

使用特权

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

本版积分规则

1049

主题

1522

帖子

8

粉丝