28035串口程序在线升级该怎么弄呢?我在网上查了相关资料,基本思路是烧写底层程序,然后判断是否需要升级?但整个过程到底是什么样的,有没有好心人可以帮忙解答呢?’
Eric Ma:
你可以参考我置顶的F28m35升级的思路嘛。
ERIC
28035串口程序在线升级该怎么弄呢?我在网上查了相关资料,基本思路是烧写底层程序,然后判断是否需要升级?但整个过程到底是什么样的,有没有好心人可以帮忙解答呢?’
Tong Daniel:
回复 Eric Ma:
怎么看你置顶的帖子?能否发个链接。
28035串口程序在线升级该怎么弄呢?我在网上查了相关资料,基本思路是烧写底层程序,然后判断是否需要升级?但整个过程到底是什么样的,有没有好心人可以帮忙解答呢?’
Linda:
回复 Tong Daniel:
您好!
请参考以下F281x的串口烧程参考方案(有详细例程):
www.ti.com/lit/spraaq2
28035串口程序在线升级该怎么弄呢?我在网上查了相关资料,基本思路是烧写底层程序,然后判断是否需要升级?但整个过程到底是什么样的,有没有好心人可以帮忙解答呢?’
HH Y:
最新版本的controlsuit中(切记是最最新的版本,如果你电脑里装的是很久前的,最好重新下载,否则有很蛋疼的事情,尤其是你没用过visual studio的话)有两个例程,一个是Bootloader,在C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\f2803x_flash_kernel,一个是用visual studio写的C语言上位机,在C:\ti\controlSUITE\device_support\~Utilities\serial_flash_programmer。
那个Bootloader就是所谓的底层程序,上位机就是把编译好的应用程序通过串口传递给Bootloader。
例程实现的功能是,单片机必须用串口引导启动,然后上位机先把Bootloader程序传给单片机,然后让Bootloader运行起来,然后再发送应用程序。
这个例程很糟糕,因为你必须让单片机用串口引导模式启动。
如果你希望更加智能一点,还要考虑烧录时断电的问题,就必须大改这个例程。我的思路是:
先把Bootloader例程改为烧录在flash上运行而非在ram上运行,自己设计是否要升级的判断,比如从串口获取信息来判断,或者通过按键来判断之类。
这个Bootloader独立占用一个“段”,应用程序放到其他段,烧录时仅擦除其他段,这样就算烧录了一半突然掉电也不会导致板子在用户那里“报废”。
由于Bootloader改为在flash中运行,所以关于flash烧录的内容记得迁移到ram中。然后还有一个很重要的,例程我看完了,居然没告诉我应用程序要修改cmd文件,把codestart改成应用程序所在段的位置。最后就是如何跳转的问题。百度一下这篇文章《基于串口通信的DSP应用程序在线升级方法》,这篇文章加上那两个例程,以及controlsuit中其他几个flash API例程,折腾一下是折腾得出来的。
就两三个月前的事,网上找不到任何完整的例子,我说的思路,应该算得上“原创”,不见得就是最佳的方案,但绝对是成功的,也再次希望TI做个完美一点的例程,我折腾IAP项目,STM32的一天就能搞出个样子,折腾28035,断断续续的我都忘记折腾了几个月才摸清整个套路。
28035串口程序在线升级该怎么弄呢?我在网上查了相关资料,基本思路是烧写底层程序,然后判断是否需要升级?但整个过程到底是什么样的,有没有好心人可以帮忙解答呢?’
user4245127:
回复 HH Y:
请问有没底层的串口bootloader通讯协议?,感谢!