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

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

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

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

Br,
Govind

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

嗨ggotta,

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

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

由于MT_dialog

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

你好,
谢谢您的回复。
我指的是这两个应用程序笔记。我的情况略有不同。我在SUOTA上有不同的工作领域
(Case-I)在接收端/响应端/设备端添加OTA支持-这部分已经完成。现在我可以使用SUOTA android应用程序更新固件。
(case - ii)在上述情况下,启动器是移动小工具和SUOTA应用程序。在我的情况下,我希望写我自己的应用程序类似于SUOTA Android应用程序,但在c++不同的原因。
我的问题与案例二有关。现在,
Q1:为了完成我的案例ii,我参考图2:AN-B-003_1.pdf的SUOTA流程图(PageNo14)。那么,我引用的文档正确吗?
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:老
# 1 0 x01:形象
# 1 0 x02:形象
它到底意味着什么?在我的情况下,字节#3是0x13(SPI)
在4.2.4节中,SPOTA_PATCH_LEN到底应该是什么?它的总文件大小?闪存块大小?或者每次传输的字节数?
在我的例子中,bin文件大小是33404字节。你能举个例子解释一下吗?
Q1.2)如果没有,您能否指导我通过正确的文件来源/文件来源来实施案例ii ?

Br,
Govind。

MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 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内存,中间的两个字节总是0,零位上的字节表示SUOTA配置文件将更新哪个内存银行0x00(将更新保存最老映像的银行)0x01和0x02对应于0x8000和0x13000银行。

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

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

由于MT_dialog

ggotta
离线
最后看到:1个月3个星期前
加入: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个月3个星期前
加入:2016-02-20 20:10
顺便说一下,确实是

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

谢谢你!
Br,
Govind

ggotta
离线
最后看到: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_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨ggotta,

嗨ggotta,

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

由于MT_dialog

ggotta
离线
最后看到:1个月3个星期前
加入: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) -写入240字节的。img文件,20字节粒度。
(4)这里我假设获得通知(SPOTA_SERV_STATUS=OK)完成240字节。
(4.问题1)我的问题是,我写了240字节后没有收到通知,我写了260字节后收到通知,通知之后是每240字节,直到最后一个块,为什么会这样?(将在下面讨论最后一部分)
(4.Q.2)如果在情况下,如果它是采取头20个字节,我应该做什么。我需要单独写头文件吗?
(4.问题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写完之后才会收到通知,但是没有发生,有什么问题吗?
如果我用GATTReadCharValue(SPOTA_MEM_INFO)查询mem信息,我得到一个值0x7DA0(32160)差值是244,不确定哪里出错了!

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

MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 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个月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。

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


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

Br,
Govind

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

嗨ggotta,

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

由于MT_dialog

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

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

Br,
Govind

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

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

br,
Govind

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

嗨ggotta,

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

由于MT_dialog