打印

STM8的IAP升级谁搞过,用的什么接口呢?

[复制链接]
1359|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongbaohui|  楼主 | 2017-2-25 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原味_郭| | 2017-2-26 22:15 | 只看该作者
无线是支持的,但需要自己写boot

使用特权

评论回复
板凳
ahhsyf| | 2017-2-26 22:18 | 只看该作者
一般出厂的时候刷两个程序段一个bootloader,一个用户程序APP1,开机时从bootloader开始运行,检测是否要升级固件,没有就一直运行APP1;如果升级了,APP2可以暂存到一段FLASH内,升级完成后,重新上电,还是先运行bootloader,这时会检测到程序升级了,这时是判断跳转到APP2来运行,还是进行FLASH拷贝,看程序编写的情况了

使用特权

评论回复
地板
enginezhong| | 2017-2-27 09:45 | 只看该作者

我记得stm8本身就可以用串口来升级的。不用搞那么复杂的

使用特权

评论回复
5
myidear| | 2017-2-27 22:24 | 只看该作者
官方有个资料,做升级的,例程AN2659,在这里看看介绍和例程

使用特权

评论回复
6
gaoxiansheng| | 2017-2-27 22:29 | 只看该作者
要实现在线升级,MCU代码须分为 : bootloader和 用户代码App 两个部分。

使用特权

评论回复
7
新人求带| | 2017-2-28 18:35 | 只看该作者

对于stm8的块编程,代码必须在Ram中运行,因为在块编程时Flash程序将会停止运行。因此,存储在Flash中的代码(与Flash编程相关的代码)必须拷贝至Ram中进行编译、链接、运行。这样,程序将在Ram中执行块编程,块编程时Flash的状态也不会影响到Ram中的程序继续运行。

使用特权

评论回复
8
lt1231| | 2017-2-28 18:41 | 只看该作者
因为之前写个stm32的IAP升级程序,所以我总结了做IAP升级的三个主要的难点:

1、如何设置中断向量,也就是说中断向量的重定向

2、如何配置程序的起始地址

3、如何从IAP跳转到APP程序

4、使用库函数要注意的地方(防止被坑)

使用特权

评论回复
9
在路上的程序猿| | 2017-2-28 19:30 | 只看该作者
如果要自己做bootloader,你必须懂汇编,PC的APP也需要化很多时间去弄。当然,网上也有教材很容易搜得到。

使用特权

评论回复
10
merry_zsp| | 2017-2-28 19:37 | 只看该作者
MCU上电后,从0x8000地址执行,也就是bootloader的起始代码,当收到同步码时,进入升级状态

使用特权

评论回复
11
大白农| | 2017-2-28 22:16 | 只看该作者
等待命令,升级软件通过协议进行flash烧写。完成后,跳转到代码APP的起始地址,MCU开始执行APP程序。

使用特权

评论回复
12
hello牟| | 2017-2-28 22:20 | 只看该作者

STM8内部固化了一个bootloader,可以通过配置字OPTBL打开。该bootloader支持iap uart下载程序。

使用特权

评论回复
13
16号哨兵| | 2017-3-7 19:39 | 只看该作者
如果是通过串口、SPI或I2C升级的话,STM8L出厂时已经有简单的bootloader能解决,之需要设定option byte(选项字节),STM8S我不确定,详细你可以看看ST的文档。APP的话,用ST的工具,在官网可以下载。

使用特权

评论回复
14
yyj8902| | 2017-3-7 19:41 | 只看该作者
在APP状态下,如果收到升级固件命令,跳转到IAP所在起始地址0x8000,进入升级状态。

使用特权

评论回复
15
麦克塔维什| | 2017-3-12 21:44 | 只看该作者
如果没什么特别要求,只是想脱离Swim升级的话,用原本的bootloader最方便。

使用特权

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

本版积分规则

16

主题

172

帖子

0

粉丝