打印

CyBLE学习小结4—upgradable stack OTA: 频繁上下电导致死机的修复

[复制链接]
1445|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leijixiaomile|  楼主 | 2017-1-19 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 leijixiaomile 于 2017-6-12 14:54 编辑

当前Creator版本(Creator4.0 及以下),如使用256K的PSoC/PRoC,且采用Upgradable stack OTA的方式,频繁reset或者频繁上电下电情况下,存在程序卡在Launcher project的风险,这是已知的bug。
其原因是:在launcher project的launcher.c中有如下的code:
if (CYRET_SUCCESS == validApp)
            {
                Launcher_SetActiveAppInMetadata(Launcher_activeApp);      
            }
其逻辑是当检测到有效的application时会往flash中写application标志位,这段代码的运行时间是:在片子上电或者reset后,运行laucher project 时。如果在写flash的这段时间T内(大概20ms),发生了reset或者掉电,存在flash就没有写成功而只是被擦除的情况。那么下一次上电时,检测到application的标志位错误,就会停在launcher project中等待更新应用程序。
修复问题的方法:laucher.c中先检测applicaton标志位是否有效,如果有效则不需再次写入,如果无效且有valid 应用程序则写入。
也就是只有在下程序后或者做了OTA时才会写一次application 标志位,掉电或者reset不会去写。
附件的laucher.c是修改后的代码,请替换原launcher project中的laucher.c并按顺序编译三个工程(注意不要让component生成的laucher.c覆盖该文件)。

新建企鹅 PSoC 讨论群:497718076,欢迎大家加群讨论。

Launcher.zip

22.37 KB

沙发
zhaoruzhe| | 2017-1-19 18:14 | 只看该作者
赞!!!

使用特权

评论回复
板凳
zhaoruzhe| | 2017-1-19 18:15 | 只看该作者
加群群主批一下哈

使用特权

评论回复
地板
leijixiaomile|  楼主 | 2017-1-19 18:22 | 只看该作者
zhaoruzhe 发表于 2017-1-19 18:15
加群群主批一下哈

  谢谢大神赏光

使用特权

评论回复
5
zhaoruzhe| | 2017-1-20 09:21 | 只看该作者

我是酱油党一枚呢

使用特权

评论回复
6
y850237160| | 2017-3-3 11:06 | 只看该作者
必须顶,我也发现了,当时判断要么是芯片有问题,要么是IDE有问题,果然是底层驱动有问题

使用特权

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

本版积分规则

个人签名:Cypress PSoC 交流群: 497718076,有很多资深的PSoC 玩家在里面 讨论交流 欢迎大家加群。

27

主题

295

帖子

9

粉丝