打印

请教一个极端的IAP升级问题,求牛人

[复制链接]
1618|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
陈永宾0|  楼主 | 2014-3-13 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 陈永宾0 于 2014-3-13 17:12 编辑

一个APP的main是一个while(1); 可以用IAP的方式把APP替换掉吗?APP里没开中断。
int main()
{
     while(1)
     {
          Flag=1;
     }
}
求牛人

相关帖子

沙发
amwrdfe| | 2014-3-13 17:00 | 只看该作者
死循环和能不能升级有什么关系?

使用特权

评论回复
板凳
嵌入式云终端| | 2014-3-13 17:09 | 只看该作者
你的表述不是很明白,呵呵,同问

使用特权

评论回复
地板
陈永宾0|  楼主 | 2014-3-13 17:10 | 只看该作者
amwrdfe 发表于 2014-3-13 17:00
死循环和能不能升级有什么关系?

想把死循环给升级替换掉,APP里不用中断,也不手动复位

使用特权

评论回复
5
陈永宾0|  楼主 | 2014-3-13 17:12 | 只看该作者
嵌入式云终端 发表于 2014-3-13 17:09
你的表述不是很明白,呵呵,同问

就是想把死循环用IAP升级的方式给替换掉。

使用特权

评论回复
6
amwrdfe| | 2014-3-13 17:23 | 只看该作者
理论上是没问题,
1:大部分cpu都有软复位寄存器,软复位后用bootloader升级,
2:满足条件用地址跳转至bootloader升级。
暂时想到这两个。

使用特权

评论回复
7
陈永宾0|  楼主 | 2014-3-13 17:28 | 只看该作者
amwrdfe 发表于 2014-3-13 17:23
理论上是没问题,
1:大部分cpu都有软复位寄存器,软复位后用bootloader升级,
2:满足条件用地址跳转至boo ...

谢谢amwrdfe
就一个死循环,没有软件复位,也没有满足条件的跳转,只有一个Flag标志呢???
大神,理论上有没有可能啊?

使用特权

评论回复
8
w522930954| | 2014-3-13 17:34 | 只看该作者
用IAP把程序重新烧写一下就好了。。只单独的替换部分内容是不可能的。

使用特权

评论回复
9
amwrdfe| | 2014-3-13 17:34 | 只看该作者
flag标志就是条件啊。
单从硬件的角度来说,让cpu自硬复位难不难,一个io而已。
从软件的角度来说,就多了去了。

只要知道flash的操作方法,升级不是很难的事。

使用特权

评论回复
10
ningling_21| | 2014-3-13 17:55 | 只看该作者
陈永宾0 发表于 2014-3-13 17:28
谢谢amwrdfe
就一个死循环,没有软件复位,也没有满足条件的跳转,只有一个Flag标志呢???
大神,理论 ...

没有可能的说...

使用特权

评论回复
11
江枫渔火| | 2014-3-14 11:27 | 只看该作者
你可以说说你到底要实现一个什么样的方案,宏观来看是要实现什么功能要求,你说改一下while的代码也许只是你为了实现某个方案你自己想的一个方法,也许是个行不通的方法。

使用特权

评论回复
12
coody| | 2014-3-14 14:11 | 只看该作者
不明白LZ的描述。

使用特权

评论回复
13
iceyu| | 2014-3-14 15:25 | 只看该作者
你说的IAP是in-application programming 的意思吗?一般IAP都是类似于bootloader的一段代码。正常的时候进行程序的重定位,升级的时候进行固件更新。这样一个完整的程序会分成两个文件的,两个文件之间可以通过函数指针来访问的(这牵扯程序重定位的问题,麻烦些的要用链接脚本)。这个IAP的功能是可以自己写的,不麻烦,st的官方代码就有参考历程stsw-stm32051。我之前还用过一个片子,它是把IAP固化到内部的ROM里了,这就必须参考这个片子的文档来进行一些设置。整个IAP的过程是代码的复制和重定位,并不在乎你main里面写的什么,事实上,bootloader里和fw中的两个main也不是同一个函数,只是函数名字相同,地址肯定不相同的。

使用特权

评论回复
14
z_no1| | 2014-3-14 17:07 | 只看该作者
要做IAP首先要有有关的代码在应用代码里运行,程序原来没设计代码,现在想IAP是没这个可能的。苍蝇不盯无缝的蛋

使用特权

评论回复
15
chenyu988| | 2014-3-15 23:13 | 只看该作者
把flag存到eeprom中,APP里满足升级条件了,flag置位,并软件复位mcu,跳转到bootloader,在bootloader里面读取flag的值,判断是否升级app

使用特权

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

本版积分规则

个人签名:这点困难算个球儿

4

主题

967

帖子

1

粉丝