17个员额/ 0个新员额
最后发表
李阳
离线
最后看到:10个月1天前
专家
加入:2014-09-24 11:51
关于SUOTA的问题?

嗨!对话框。
我的设备现在需要更新。我选择了SUOTA(我的设备使用外部SPI Flash)。当我的apk调用GATTWriteCharValue(SPOTA_MEM_DEV),设备发回哪个ACK?它发送0x01吗?

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
你好,

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

Br,
Govind

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

1)这是配置文件的规范,可以在AN-B-010 DA14580中使用Suota(通过空中软件更新)以及在教程部分教程6:添加软件更新空气。

2)您的意思是您看到的ACK是图2:SUOTA流程图?这ACK生成从堆栈,因为设备使用的命令是GATTWriteCharValue规范定义了应该有反应的装置,它不是一个响应,你应该简洁发送从您的应用程序,它们是写反应写请求中央派。

谢谢mt_dialog.

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
你好,

你好,
感谢您的答复。
我指的是这两个应用程序笔记。我的情况略有不同。我在SUOTA上有不同的工作领域
(case-i)将OTA支持添加到接收器/响应者/设备侧 - 这部分完成。现在我能够使用Suota Android应用程序更新固件。
(案例-II)在上述情况下启动器是移动小工具和拟议应用。如在我的情况下,我希望写自己的应用程序,类似于Suota Android应用程序,而是针对不同原因的C ++。
我的问题与案例二有关。现在,
Q1:为了完成我的案例ii,我参考图2:AN-B-003_1.pdf的SUOTA流程图(PageNo14)。那么,我引用的文档正确吗?
Q1.1)如果是,那么您可以帮我收到以下信息:
Q1.1.1)什么是第7节SUOTA流程中的ACK?是0x01我们应该收到或0x00?如果要验证成功或失败案例的响应应该是什么?
Q1.1.2)在AN-B-003_1.PDF中,页面:8,表3:spota_mem_dev定义为suota模式:
0x00:最古老的
# 1 0 x01:形象
0x02:图像#1
它到底意味着什么?在我的情况下,字节#3是0x13(SPI)
Q1.1.3)在第4.2.4节中,究竟应该是spota_patch_len?是总站文件大小吗?闪存块大小?或每次转移的数字字节?
在我的例子中,bin文件大小是33404字节。你能举个例子解释一下吗?
Q1.2)如果没有,您能否指导我通过正确的文件来源/文件来源来实施案例ii ?

Br,
Govind。

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

Q1)是这是Suota配置文件的规范,没有其他文档描述了过程。

Q.1.1.1)我已经提到了ACK,你看到的是写的写请求响应你的中央,毫无攻击力水平确认SUOTA,写作是接受的奴隶,毫无特色,它收到0 x01或0 x00为了证实写作,ACK是从从机到主机的写响应,包括命令的状态,包括ATT错误码。

Q.1.1.2)Spota_mem_dev显示它使用的内存,0x13(第3个字节)表示所使用的内存是SPI内存,中间的两个字节始终为零,零的字节始终为哪个存储库Suota Profile将更新0x00(将更新包含最旧图像的银行)0x01和0x02对应0x8000和0x13000银行。

Q.1.1.3)由于文档在拟议的情况下表示,特性定义一次要发送的图像数据的长度,例如,如果留下默认块大小,则特征值的值为0x00 f0。

Q.1.2)关于启动器示例,可以提供Android和iOS的拟议应用程序,可根据要求提供,您希望我发送它吗?

谢谢mt_dialog.

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
非常感谢你提供的细节。

非常感谢你提供的细节。
举个例子,我有一个image_size为32440字节的image_size,我写了一个feature, block_size为240字节。
所以,现在我的块写计数将是135(240)字节+ 1(40)字节,即32440/240 = 240x135 + 40。
并且每个块将被写入MTU(20字节)的最大大小。
请确认!
Q.1.1.4)我假设通知是默认启用的。启动器应该能够为每个块写入获得一个通知。如果我错了,请纠正我。

Br,
Govind

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
顺便说一下,确实是

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

谢谢你!
Br,
Govind

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
你好,

你好,
问题Q.1.1.4很好。我能得到通知。但我仍然不清楚我的第四季度,请帮帮我。
Q1.1.5)spota_serv_status状态中的spota_serv_status = OK是什么?它是spotar_cmp_ok(0x02)吗?

Br,
Govind

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

关于你的计算,是你是正确的,你将拥有135 * 240 +额外的图像尺寸,设备将执行大约12个写命令20字节,每个字节为完成240字节块,然后它会将它们写入NV作为AN-B-003.PDF的内存指示,然后从外设发送通知,以指示对NV存储器的正确写入,以便中央将继续下一批次数据,是的OK的值为0x02。

谢谢mt_dialog.

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
你好,

你好,
谢谢你的确认。
计算部分很好。现在进入不同的问题。我以同样的方式实现,流程是如下所示。
(1)我得到一个通知0x10,表示“SPOTA_IMG_STARTED SPOTA Started for downloading image”。(在此之前还有几个步骤,我在这里没有提到)
(2) Write GATTWriteCharValue (SPOTA_PATCH_LEN) -在我的例子中是240。
(3)GattwriteNoresp(Spota_patch_data) - 用20个字节粒度编写240字节的.img文件。
(4)在完成240个字节后,我假设在完成240字节后获取通知(Spota_serv_status = OK)。
(4.问题1)我的问题是,我写了240字节后没有收到通知,我写了260字节后收到通知,通知之后是每240字节,直到最后一个块,为什么会这样?(将在下面讨论最后一部分)
(4.Q.2)如果在情况下,如果它是采取头20个字节,我应该做什么。我需要单独写头文件吗?
(4.问题3)如果是,这个头是由kmimage生成的.img文件的前20个字节吗?或者我需要显式地写这个头文件吗?
(4.Q.4)如果标题的信息(如上所述)是错误的,请告诉我在这种情况下是正确的?
假设这一点(单独写一个标题),我继续了我的实验,观察如下。
(5)我在前260个字节之后获得了通知(spota_serv_status = ok),并再次写入... gattwritecharvalue(spota_patch_len),带有240字节并写入数据....并写入最后一个块的12x20通知(Spota_serv_status = OK)!!
(6.Q)正如你解释的,我应该在12x20写完之后才会收到通知,但是没有发生,有什么问题吗?
如果我用GATTReadCharValue(SPOTA_MEM_INFO)查询mem信息,我得到一个值0x7DA0(32160)差值是244,不确定哪里出错了!

尽早回复会有很大帮助。谢谢你!
为您的信息,
-相同的图像文件(.img)与SUOTA android应用程序工作良好。
我在SPOTA_PATCH_LEN上做的其他尝试,即大于240,小于240,出现了不同的问题,比如错误0x07,但现在会忽略。
Br,
Govind

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

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

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

(4.问题3)镜像头是由mk_image.exe和你在运行mk_image.exe时在命令行中应用的fw版本(和.bin文件offouce)生成的(查看UM-B-012创建辅助引导加载器.pdf章节7和附录a的详细信息)。

谢谢mt_dialog.

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
谢谢你的细节。

谢谢你的细节。
(4.Q.1)。这个问题得到了解决。现在我每240播放spotar_cmp_ok,然后我能够编写一个包括最后一个chuck的所有数据。
现在,我得到了CRC错误。我正在阅读下面的fread()和伪代码的文件:
1.Len = fread(buf, 1, 20, fd);
2.和我用来写入SPOTA_PATCH_DATA char的'buf'相同。
这次我确定所有的数据32404字节传输,MEM信息读取请求也提供相同的值。

Br,
Govind。

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10


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

Br,
Govind

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

图像的最后一个字节应包含整个图像的CRC(这是手机应用程序的某些东西),因此当XOR与上一个字节接收的字节,该字节是作为Spota.state的整个图像的CRC的CRC。CRC_CLAC结果为零(如果接收的字节是正确的,并且CRC是正确的)。如果您的图像中没有此最后CRC字节,则应用程序将导致错误(您可以在Spotar_Img_End的Spotar_img_End案例中检查在App_spotar_read_mem()函数中)。我将Suota Phone应用程序发送到已注册的电子邮件帐户。

谢谢mt_dialog.

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
谢谢你!

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

Br,
Govind

ggotta
离线
最后看到:1个月2个星期前
加入:2016-02-20 20:10
谢谢!一切都是

谢谢!一切都很好,在线旅行社正在运作!

br,
Govind

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

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

谢谢mt_dialog.