Power123 发表于 2016-9-14 17:22:45

stm32在线升级功能!!!挑战大神的智慧!

stm32外挂一块flash,当前板子运行内部flash的固件,通过iic接受新固件并将它放到外部flash内,然后切换,开始运行外部flash的代码?这个怎么实现,各位大神,求指导!

moyanming2013 发表于 2016-9-14 18:44:47

使用“中断向量表重映射”功能(一般Cortex-M0+及以上都支持)可以实现你说的功能。
只需要转换一个向量表并把程序地址指向新地址即可。
你可以参考下通用的IAP程序。

Power123 发表于 2016-9-14 21:12:13

非常感谢您的回复!我看了您提到的IAP程序,但是它复位后是从原固件的中断向量表开始跑的。

moyanming2013 发表于 2016-9-14 21:21:40

Power123 发表于 2016-9-14 21:12
非常感谢您的回复!我看了您提到的IAP程序,但是它复位后是从原固件的中断向量表开始跑的。 ...

你需要在IAP代码断中做一些标记,然后根据标记跳转向量表即可。

高二毛 发表于 2016-9-16 22:40:33

楼上说的对,你的单片机FLASH分为两个区,一个放bootloader,另外一个是你的应用。外部的FLASH可以随便更换应用,bootloader直接进行加载应用就行了。

shuolang 发表于 2016-9-17 08:31:35

楼上都是老手啊,你可以参考这个https://www.stmcu.org.cn/document/detail/index/id-213123,使用USART接口实现STM32F10xxx的在线升级,虽然升级方式有区别,但是如何加载应用程序、如何运行的原理是一样的!

Power123 发表于 2016-9-17 17:19:27

高二毛 发表于 2016-9-16 22:40
楼上说的对,你的单片机FLASH分为两个区,一个放bootloader,另外一个是你的应用。外部的FLASH可以随便更换 ...

前辈之前这样做过吗?是否可靠?

高二毛 发表于 2016-9-17 20:41:13

非常可靠,目前已经开始正式使用了。放心大胆的做吧。:D
页: [1]
查看完整版本: stm32在线升级功能!!!挑战大神的智慧!