[STM8] STM8 IAP升级问题,在线等。

[复制链接]
6568|11
 楼主| xwhrr 发表于 2012-5-23 11:13 | 显示全部楼层 |阅读模式
目前使用STM8S进行升级,通讯方式使用CAN。
把FALSH的代码COPY到RAM里运行,碰到的问题是:烧录器预烧录的程序和欲升级的程序是完全一样的情况下,升级成功,但是欲升级的程序稍作改动,便会升级不成功,升到一半的时候挂掉。
如有人碰到过,请给个思路,谢谢!
juanhao 发表于 2012-5-23 11:40 | 显示全部楼层
看不懂,欲烧录,欲升级??说详细点
 楼主| xwhrr 发表于 2012-5-23 11:50 | 显示全部楼层
预烧录:预先已经通过烧录器烧进去的应用程序
欲烧录:将要通过IAP进行升级的应用程序
 楼主| xwhrr 发表于 2012-5-23 12:19 | 显示全部楼层
香版主能不能帮看一下啊?
 楼主| xwhrr 发表于 2012-5-23 18:11 | 显示全部楼层
自己顶一下。
juanhao 发表于 2012-5-24 14:11 | 显示全部楼层
应该是你的欲烧录的程序用到了预烧录程序的空间,导致预烧录程序空间错乱,升级失败
s_f_tan 发表于 2012-5-24 16:31 | 显示全部楼层
两个的地址是不是冲突了
香水城 发表于 2012-5-26 11:54 | 显示全部楼层
目前使用STM8S进行升级,通讯方式使用CAN。
把FALSH的代码COPY到RAM里运行,碰到的问题是:烧录器预烧录的程序和欲升级的程序是完全一样的情况下,升级成功,但是欲升级的程序稍作改动,便会升级不成功,升到一半的 ...
xwhrr 发表于 2012-5-23 11:13


把哪一段FALSH的代码COPY到RAM里运行?什么目的?

应该是地址冲突或堆栈之类的问题。
sbawgd 发表于 2012-6-8 18:24 | 显示全部楼层
个人对STM8的IAP升级提点小意见:
     鉴于STM的IAP升级只是部分擦写FLASH而不是全部,所以我们要保证编译后产生的代码必须与非擦写部分的FLASH一至性

1,保证升级的引导程序的一至性。
意思就是说无论你的运用程序怎么改动,引导部分的程序不能动,编译后生成的S19文件中,非IAP不能变,否则就算升进去了也是不对的

现在我举个例子,升级引导部分的程序存放于flash中的0x8000~0x9000,用户应用程序存于0x9001~0x1FFFF(这个可以用LKF文件来编辑),程序烧到IC后,后续要改动就只能改动用户部分的程序,否则会导致升级不成功或者程序运程异常

2,升级过程中不允许有中断产生(除引导程序部分需要的中断)
jgphu 发表于 2012-6-12 19:23 | 显示全部楼层
顶 9楼
sed2003 发表于 2012-11-2 11:22 | 显示全部楼层
本帖最后由 sed2003 于 2012-11-2 11:26 编辑

9# sbawgd ,
请问一下,比如我现在编译了一个S19文件和HEX文件,我把HEX文件转成BIN文件后。利用RAM里的链接程序,将BIN文件传给STM8的FLASH,是传到哪个位置啊?9000H吗?
还有那个引导程序,我怎么来保护?因为我生成的就一个HEX文件啊,它的起始位置,通过project->setting->input里,改成了9000H和9080H后,中断向量表也要改。这么一改都乱了。
lcysbdngy 发表于 2014-9-10 16:47 | 显示全部楼层
自己写的引导程序里可以有中断吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部