打印

DSP 28335 程序自动升级的方案

[复制链接]
1533|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Flower1|  楼主 | 2017-10-20 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP 28335 程序自动升级的方案


       之前玩过的单片机好所都有bootloader,都是为了摆脱升级程序麻烦,摆脱烧录器,之前做了一个数据采集的板子需要完成程序自动升级,看了官方的的bootloader但ti官方的bootloader是固化死的,不能修改,它的引导是根据单片机特殊硬件引脚上电的状态来执行引导,我们需要一个纯软件的引导,因此还需自己制作,翻阅了ti的很多资料以及网上各位大神的点化搞了一个星期终于完全搞定了,现将走的曲折记录下来,有遇到相同问题的友友可以少走一点弯路。

       一,将.out转换为txt文本的数据流
       1.编写out2hex1.cmd文件,内容如下
  • Uboot.out
  • -map upgrade.map
  • -a
  • -boot
  • -sci8
  • -o upgrade.txt

复制代码

      2.编写Buit.bat内容如下
  • hex2000.exe out2hex1.cmd

复制代码

      3.将hex2000.exe,
out2hex1.cmd、Buit.bat放在同一个目录(我就放在debug目录里)
       4.运行Buit.bat会生成upgrade.map和upgrade.txt
       二,对照TI文档解析数据流
       具体意义及HEX2000的参数请自己研读,这里不再赘述。
       三,移植Flash28335_API_V210的库文件
       ti的所有帮助都在controlSUITE安装包里边,请安装。
       flash的操作要在RAM中运行,关闭全局中断,修改CMD文件

  • ubootfuncs:

  •     {

  •         -lFlash28335_API_V210.lib(.econst)

  •         -lFlash28335_API_V210.lib(.text)

  •     }                     LOAD = UBOOT_RAM,

  •                          RUN = RAML7,

  •                          LOAD_START(_BootRamLoadStart),

  •                           LOAD_END(_BootRamLoadEnd),

  •                           RUN_START(_BootRamRunStart),

  •                           PAGE = 1

  •     ubootrom            :> UBOOT_ROM     PAGE = 1

  •     ubootdata           :> RAML7     PAGE = 1

复制代码

      四,升级的整体方案

       笔者一开始的想法是把bootloader和应用程序合为一个程序,因为这样程序维护方便,不用两个程序的折腾,思路就是把bootloader的.txt
段,.ebss段等所有段定位与应用程序分开,到最后遇到一个问题,就是全局变量的初始化上一旦应用程序被擦除,bootloader受影响,这个问 题当然可以解决,可以在上电初始化全局变量的过程中做些**,但考虑到程序的后续维护者,估计维护起来很吃力,就放弃了,采用传统的 两个程序,一个bootloaer和一个应用程序,两者利用CMD文件在ROM段分开即可,实现简单的,但要两个程序,上电时两个程序的跳转可过
  • <div>#define CALL_FUNC(pfun)  </div><div> (*((void(*)(void))(pfun)))()</div>

复制代码

      其实是一个函数指针的绝对地址跳转。另外笔者说一点就是报文解析,也是很有学问的,笔者第一次看到一个高手对报文解析的程序,很是佩服,最主要的亮点就是回逆思想,史工威武。

相关帖子

沙发
uytyu| | 2017-10-20 21:26 | 只看该作者
是串口的吗?

使用特权

评论回复
板凳
iyoum| | 2017-10-20 21:26 | 只看该作者
自动升级是怎么实现的?

使用特权

评论回复
地板
wwppd| | 2017-10-20 21:26 | 只看该作者
直接串口发送程序?

使用特权

评论回复
5
uytyu| | 2017-10-20 21:27 | 只看该作者
只有C2000可以串口升级程序。

使用特权

评论回复
6
wwppd| | 2017-10-20 21:27 | 只看该作者
现在远程网络升级非常流行的。

使用特权

评论回复
7
iyoum| | 2017-10-20 21:27 | 只看该作者
Flash28335_API_V210 这个可以内部使用吗?

使用特权

评论回复
8
threetigher| | 2020-2-10 22:11 | 只看该作者
这个方法有哪位验证过,谢谢?

使用特权

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

本版积分规则

623

主题

887

帖子

6

粉丝