打印
[STM8]

STM8 IAP升级问题,在线等。

[复制链接]
5880|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 | 只看该作者
香版主能不能帮看一下啊?

使用特权

评论回复
5
xwhrr|  楼主 | 2012-5-23 18:11 | 只看该作者
自己顶一下。

使用特权

评论回复
6
juanhao| | 2012-5-24 14:11 | 只看该作者
应该是你的欲烧录的程序用到了预烧录程序的空间,导致预烧录程序空间错乱,升级失败

使用特权

评论回复
7
s_f_tan| | 2012-5-24 16:31 | 只看该作者
两个的地址是不是冲突了

使用特权

评论回复
8
香水城| | 2012-5-26 11:54 | 只看该作者
目前使用STM8S进行升级,通讯方式使用CAN。
把FALSH的代码COPY到RAM里运行,碰到的问题是:烧录器预烧录的程序和欲升级的程序是完全一样的情况下,升级成功,但是欲升级的程序稍作改动,便会升级不成功,升到一半的 ...
xwhrr 发表于 2012-5-23 11:13


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

应该是地址冲突或堆栈之类的问题。

使用特权

评论回复
9
sbawgd| | 2012-6-8 18:24 | 只看该作者
个人对STM8的IAP升级提点小意见:
     鉴于STM的IAP升级只是部分擦写FLASH而不是全部,所以我们要保证编译后产生的代码必须与非擦写部分的FLASH一至性

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

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

2,升级过程中不允许有中断产生(除引导程序部分需要的中断)

使用特权

评论回复
10
jgphu| | 2012-6-12 19:23 | 只看该作者
顶 9楼

使用特权

评论回复
11
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后,中断向量表也要改。这么一改都乱了。

使用特权

评论回复
12
lcysbdngy| | 2014-9-10 16:47 | 只看该作者
自己写的引导程序里可以有中断吧?

使用特权

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

本版积分规则

0

主题

4

帖子

0

粉丝