关于索塔的问题?

17个员额/0个新员额
最后一篇文章
李阳
离线
最后一次见到:10个月4天前
专家
加入:2014-09-24 11:51
关于索塔的问题?

你好对话
我的设备现在需要更新。我选择了SUOTA(我的设备使用外部SPI闪存)。当我的apk调用GATTWriteCharValue(SPOTA_MEM_DEV)时,设备将返回哪个ACK?是发送0x01吗?

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
你好

你好
我正在尝试通过实际的业务应用程序实现/合并这个SUOTA应用程序。我遵循AN-B-003_1.pdf中给出的SUotA流程。
我几乎没有问题:
(1) 我指的是一个正确的文件和索塔流是适合这个?
(2)什么是ACK?它会给出0x00吗?0 x01吗?

Br,
Govind

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

1)这是配置文件的规格,其他附加资源的SUOTA配置文件可以在AN-B-010 da14580使用SUOTA(软件通过空中更新),也在教程部分教程6:添加软件通过空中更新。

2) 你是说你看到的ACK图2:索塔流程图?这是从堆栈生成的ACK,因为设备使用的命令是GATTWriteCharValue。规范定义应该有来自设备的响应,而不是应该从应用程序显式发送的响应,它们是中央发送的写请求中的写响应。

由于MT_dialog

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
你好

你好
谢谢您的回复。
我指的是这两个应用程序说明。我的情况有点不同。我在索塔有不同的工作领域
(Case-I)在接收端/响应端/设备端添加OTA支持-这部分已经完成。现在我可以使用SUOTA android应用程序更新固件。
(case - ii)在上述情况下,启动器是移动小工具和SUOTA应用程序。在我的情况下,我希望写我自己的应用程序类似于SUOTA Android应用程序,但在c++不同的原因。
我的问题与案例二有关。现在,
问题1:为了完成我的案例II,我参考了AN-B-003_1.pdf中的图2:SUOTA流程图(第14页)。那么,我指的是正确的文件吗?
Q1.1)如果是,那么你能帮我得到更多的信息如下:
Q1.1.1)在第7节SUotA流中确切的ACK是什么?我们应该接收0x01还是0x00?如果想验证响应的成功或失败案例,它应该是什么?
在AN-B-003_1.pdf中,page:8, Table 3: SPOTA_MEM_DEV for SUOTA mode定义:
0 x00:老
0x01:图像#1
# 1 0 x02:形象
它到底意味着什么?在我的情况下,字节#3是0x13(SPI)
在4.2.4节中,SPOTA_PATCH_LEN到底应该是什么?它的总文件大小?闪存块大小?或者每次传输的字节数?
在我的例子中,bin文件的大小是33404字节。你能举例说明吗?
Q1.2)如果没有,您能否指导我通过正确的文件来源/文件来源来实施案例ii ?

Br,
Govind。

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

Q1)是的,这是SUOTA配置文件的规范,没有其他文件描述该程序。

Q.1.1.1)正如我allready提到的,您看到的ACK是您的中央对写入请求的写入响应,SUOTA没有ATT级别的确认,即从机接受写入,也没有接收0x01或0x00以确认写入的特征,ACK是从机到主机的写入响应,包括命令状态,其中包括ATT错误代码。

Q.1.1.2) SPOTA_MEM_DEV显示它使用的内存,0x13(第3字节)表示使用的内存是一个SPI内存,中间的两个字节总是0,零位上的字节表示SUOTA配置文件将更新哪个内存银行0x00(将更新保存最老映像的银行)0x01和0x02对应于0x8000和0x13000银行。

正如文档所指出的,在SUOTA的情况下,特征定义了一次要发送的图像数据的长度,例如,如果保留默认的块大小240,特征的值应该是0x00 F0。

Q.1.2)关于启动器的例子,可以提供android和iOS的SUOTA应用程序,可以根据需要提供,需要我发送过来吗?

由于MT_dialog

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
非常感谢您提供的详细信息。

非常感谢您提供的详细信息。
Q.1.1.3)例如,假设我的图像大小为32440字节,我的写入特征块大小为240。
所以,现在我的块写计数将是135(240)字节+ 1(40)字节,即32440/240 = 240x135 + 40。
每个块将被写入最大MTU大小(20字节)。
请确认!
Q.1.1.4)我认为通知在默认情况下是启用的。启动器应该能够为每个块写入获取通知。如果我错了,请纠正我。

Br,
Govind

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
顺便说一下,确实是

顺便说一句,如果你能提供一个这些(Adroid/iPhone)来源供我参考,那将是非常有帮助的。

谢谢你!
Br,
Govind

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
你好

你好
问题1.1.4很好。我能收到通知。但我还是不清楚我的问题1.1.3,请帮助我。
问题1.1.5)在SPOTA_SERV_STATUS状态中什么是SPOTA_SERV_STATUS = OK ?是SPOTAR_CMP_OK (0x02)吗?

Br,
Govind

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

关于你的计算,是的,你是正确的你会有135 * 240 +额外的图像大小,设备将执行12 20字节写命令每个为了完成一个240字节块然后它会写NV内存作为一个- b - 003. - pdf表示,然后从外设发送一个通知,指示正确的写入到NV内存,以便中央将继续处理下一批数据,是的,ok的值是0x02。

由于MT_dialog

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
你好

你好
谢谢你的确认。
计算部分是好的。现在来看看另一个问题。我以同样的方式实现,流程如下所示。
(1) 我收到一个通知0x10,指示“SPOTA_IMG_启动SPOTA STARTED for Download image”。(在此之前有几个步骤,我在这里没有提到)
(2) Write GATTWriteCharValue (SPOTA_PATCH_LEN) -在我的例子中是240。
(3) GATTWriteNoResp (SPOTA_PATCH_DATA) -写入240字节的。img文件,20字节粒度。
(4)这里我假设获得通知(SPOTA_SERV_STATUS=OK)完成240字节。
(4.Q.1)我的问题是,我在写了240字节后没有收到通知,我在写了260字节后才收到通知,在收到通知后,每240字节就有一个通知,直到最后一个,只有一个块,为什么会这样下面将讨论最后一块)
(4.Q.2)如果在情况下,如果它是采取头20个字节,我应该做什么。我需要单独写头文件吗?
(4.Q.3)如果是这样,那么这个头文件是否是由kmimage生成的.img文件中的前20个字节?或者我需要显式地写这个头吗?
(4.问题4)如果标题上的信息(如上所述)是错误的,请让我知道在这种情况下什么是正确的?
假设这一点(单独写一个标题),我继续了我的实验,观察如下。
(5) I got Notification(SPOTA_SERV_STATUS=OK) after first 260 bytes and again have written…GATTWriteCharValue(SPOTA_PATCH_LEN) with 240 byte and write data…等等……然后写入最后一块数据块的12x20,并获得通知(SPOTA_SERV_STATUS=OK)!!
(6.Q)正如您所解释的,我应该在12x20次写入后收到通知,但这并没有发生,有什么问题吗?
如果我用gattradcharvalue(SPOTA_mem_info)查询mem info,我得到一个值0x7DA0(32160),差值是244,不确定出了什么问题!

最早的反应将是一个很大的帮助。非常感谢。
供您参考,
-同一个图像文件(.img)在SUOTA android应用程序中运行良好。
-我通过使用SPOTA_PATCH_LEN进行的其他尝试,即超过240次,少于240次,涉及不同的问题,如错误0x07,但现在将忽略。
Br,
Govind

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

(4.Q.1)我无法想象什么会导致设备发送一个260字节的SUOTA通知,正确的操作是,正如我提到的240字节后的通知,然后设备应该在nv内存中写入数据并发送通知。我已经发送了一封带有SLA的邮件,以便在接受文档后获取SUOTA android和iOS initiator应用的源代码,请以此为例。雷竞技安卓下载

(4.Q.2)上传到设备的图像包括图像头,但这不需要任何特殊处理,它是图像的一部分。

(4.Q.3)映像头由mk_image.exe和运行mk_image.exe时在命令行中应用的fw版本(以及.bin文件offcouse)生成(有关详细信息,请参阅第7节和附录a中的UM-B-012创建辅助引导加载程序.pdf)。

由于MT_dialog

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
谢谢你的细节。

谢谢你的细节。
(问题1 . 4.)。这个问题得到了解决。现在我得到SPOTAR_CMP_OK为每240,然后我能够写一个所有的数据,包括最后一次chuck。
现在,我得到CRC错误。我正在阅读的文件与fread()和伪代码如下:
1.len=fread(buf,1,20,fd);
2.和我用来写入SPOTA_PATCH_DATA char的'buf'相同。
这一次我确定我所有的数据32404字节被转移,mem信息读请求也给出相同的值。

Br,
Govind。

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
你好

你好
我验证了所有可能的方法来找出CRC的原因,并观察到“图像id”在图像头中被读为FF总是。
70 51 FF 01。。。。。在其他成功案例中70 51 AA 01。。。。有什么想法吗?

Br,
Govind

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

你的图像的最后一个字节应该包含整个图像的crc(这是手机应用程序做的事情),所以当设备接收到的字节与最后一个字节的crc的整个图像的spot .state。crc_clac结果为零(如果接收的字节是正确的,并且CRC是正确的)。如果映像中没有这个最后的CRC字节,应用程序将会导致一个错误(在交换机的SPOTAR_IMG_END情况下,您可以在app_spotar_read_mem()函数中检查)。我已经将SUOTA电话申请发送到注册的电子邮件帐户。

由于MT_dialog

戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
谢谢你!

谢谢你!
顺便说一下,当我尝试比较读回的图像(我使用我的OTA应用程序传输)时,除了imageID之外,其他字节与1:1匹配。图像ID字节[2]=0xFF
附上截图供参考。
右窗格“内存内容”区域中的一个区域是我使用自定义应用程序传输的回读数据。
左窗格“数据文件内容”中的一个文件是我使用SUOTA android应用程序传输的回读文件。我已经读过了,把它放在一边,在这里打开比较。
我的问题是
为什么我得到0x13002作为0xFF而不是0xFF?跟CRC有关系吗?
如果我添加这个CRC,我需要改变长度吗?我想这不是必需的!在我的情况下,最后chuck是4字节(33404/240 + 4)。我添加crc它将是5字节!
如果我错了,请纠正我。

Br,
Govind

附件:
戈塔
离线
最后一次见到:1个月3周前
加入:2016-02-20 20:10
谢谢!一切都是

谢谢!一切都很好,OTA正在工作!

br,
Govind

MT_对话框
离线
最后一次见到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

很高兴你来了,谢谢你的提示。

由于MT_dialog