IAP程序在哪里运行

gangdou1 发布于 2016/06/08 16:20
阅读 189
收藏 0

@armink 你好,想跟你请教个问题:

在IAP升级时,运行在哪里?RAM中?文档不是太清楚,DEMO也很简单,最好能讲下IAP升级的原理。

辛苦,谢谢!

加载中
0
armink
armink

简单说下我的项目中的使用流程吧。

  • 1、调用ef_erase_bak_app擦除备份区中缓存的App
  • 2、通过Ymodem下载接收App的.bin文件,并调用ef_write_data_to_bak将App存储至备份区
  • 3、调用ef_erase_user_app,擦除当前正在使用的App
  • 4、调用ef_copy_app_from_bak,把下载接收到App拷贝的App入口地址

上面只是对流程进行整体的描述,还有些细节功能,例如:CRC32校验,上电自动恢复更新等功能,也都可以配合EasyFlash的环境变量Env,轻松的实现。

0
g
gangdou1
这个流程我看明白了,就是3,4两点,这个正在调用flash_erase_user_app函数的程序是原来的APP?那他不是自己擦自己么?这点不明白
g
gangdou1
嗯,谢谢。我是看到你的项目有能升级bootloader的功能,所以有点好奇。一般来说bootloader是不会远程升级它了。
armink
armink
回复 @gangdou1 : 升级 BootLoader 是一个非常危险的过程,我是不建议在 App 中升级它,而且这类的需求非常小。你非要升级的话,可以借鉴类似 STM32 自带的 ISP 方式来试试。
g
gangdou1
谢谢回复,那升级bootloader呢,如果是App中去升级boot这时异常断电了就不能启动了。
armink
armink
这个是在 Bootloader 程序中执行的,包括 1、2 步骤都可以在 Bootloader 中执行,执行完成后跳转至 App
返回顶部
顶部