苏达导致了一个破碎的次级引导加载程序

5个帖子/ 0新
最后一篇
保罗.Deber
离线
最后一次露面:2个月前1年
加入:2014-06-03 10:57
苏达导致了一个破碎的次级引导加载程序

我们的设备配备了外部闪存(@ 0x00008)的二级引导加载程序,以及2个产品图像(@ 0x08000和0x13000)。
Whers是一个好主意,将辅助引导加载程序放在外部闪光灯中不在本主题的范围内。

在Suota开发期间,通过IOS中的应用程序完成,我们的一个开发人员将通过使用拟议来砖块。
他正在使用一个有效的图像,它可以通过SmartSnippets Suota工作,并重新启动后运行。

我设法分析了闪光灯,发现外部闪存中的继发于引导加载程序中间的158个Calsequity字节不是他们所在的。
这导致辅助引导加载程序不执行,因此设备未启动产品图像。
产品标题(@ 0x1f000)仍然是正确的。

他不确定如何发生这种情况,但闪光灯中的次级引导程序可以在我们的团队中发出一些激烈的讨论。
你能想到这种方法,f.i。Suota Proces期间的电源短缺或以不正确的订单执行拟比行操作?
我们依赖于由对话框设计的Suota服务是子弹和傻瓜......

设备:
保罗.Deber
离线
最后一次露面:2个月前1年
加入:2014-06-03 10:57
我分析了代码,

我分析了代码,特别是App_spotar.c,并认为有一种方法可以进入这种情况。

app_spotar_read_mem修改spota_state.mem_dev和spota_state.mem_base_add甚至调用app_spotar_start。如果发生这种情况,因为我们的iOS应用程序违背了2个偶然的进程,一个进程可能会将页面写入Flash,另一个进程可能只是间接称为App_spotar_start。

然后,spota_state.mem_dev和spota_state.mem_base_add被设置为意外的值,因此将页面的下一步写入不属于基地地址0x8000或0x13000的地址。

在app_spotar_img_hdlr中,如果spota_state.mem_base_add仍然是正确的或不在调用SPI_FLASH_WRITE_DATA之前,则不再校验。

保罗.Deber
离线
最后一次露面:2个月前1年
加入:2014-06-03 10:57
注意:我检查了图像

注意:我检查了图像@ 0x8000,它只包含前1200个字节,其余时间为0xFF,因此删除了图像,写入了第一个1200字节。这将我触发到查找App_spotar.c调用spi_flash_write_data中使用的地址。

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨paul.deboer,

嗨paul.deboer,

我不知道苏格达的任何类似问题,这是这个问题一时间发生还是它现在发生了一次?还可以通过对话框的拟议应用程序复制吗?此外,我真的没有得到你的意思,你的申请通过意外并行开始了2个拟议进程,你的意思是从iOS应用程序开始两个实例开始在同一时间写入,以便更新外围设备?

我无法想象闪光灯中的次级引导加载程序是如何由Suota程序更改,甚至是电源短缺,Suota如何在辅助引导程序区域上写入。您确定在正在进行的Suota程序时发生事件,并且Flash损坏不是别的副作用?

谢谢mt_dialog.

保罗.Deber
离线
最后一次露面:2个月前1年
加入:2014-06-03 10:57
这是现在发生的

这是现在发生的事情。否,我们没有设法用对话框的smartsnippet或对话框的upota应用程序复制。如果您每次正确且以正确的顺序排列,问题都不会显示出来。

我才会发生当时使用> 1个并行套筒进程时发生,我们的iOS应用程序遭到了遍历此错误(因此应用程序的应用程序也不2实例,但在该应用程序中有2个进程)。

是的,只有在执行Suota时的事件只有ocurred,我们将尝试提出再现事件的场景。