本帖最后由 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,欢迎大家加群讨论。
|