嗨!对话框。我的设备现在需要更新。我选择了SUOTA(我的设备使用外部SPI闪存)。当我的APK呼叫GATTWriteCharValue(SPOTA_MEM_DEV),该装置发回的ACK?难道发送0×01?
你好,我正在尝试通过实际的业务应用程序实现/合并这个SUOTA应用程序。我遵循AN-B-003_1.pdf中给出的SUotA流程。我有几个问题:(1)我指的是一个正确的文件和SUotA流是容易的呢?(2)什么是ACK?它会给0x00吗?0x01?
Br,Govind
嗨ggotta,
1)这是配置文件的规范,可以在AN-B-010 DA14580中使用Suota(通过空中软件更新)以及在教程部分教程6:添加软件更新空气。
2)你的意思是ACK的,你看到图2:SUOTA流程图?那ACK从堆栈中产生,因为这些命令,该设备正在使用是GATTWriteCharValue该规范定义,应该有来自设备的响应,它不是一个效应初探,你应该显式地从你的应用程序发送,他们在写响应写请求,中央发出。
谢谢mt_dialog.
你好,感谢您的答复。我指的是这两个应用笔记。我的情况有点不同。我有不同的领域上SUOTA工作(case-i)将OTA支持添加到接收器/响应者/设备侧 - 这部分完成。现在我能够使用Suota Android应用程序更新固件。(案例-II)在上述情况下启动器是移动小工具和拟议应用。如在我的情况下,我希望写自己的应用程序,类似于Suota Android应用程序,而是针对不同原因的C ++。我的问题是有关情况-II。现在,Q1:要fullfil我的情况下-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:最古老的0×01:图像#10x02:图像#1它到底意味着什么?在我的情况下,字节#3是0x13(SPI)Q1.1.3)在第4.2.4节中,究竟应该是spota_patch_len?是总站文件大小吗?闪存块大小?或每次转移的数字字节?在我的情况下的bin文件大小为33404个字节。能否请您用一个例子解释一下吗?Q1.2)如果没有,您能否指导我通过正确的文件来源/文件来源来实施案例ii ?
Br,Govind。
Q1)是这是Suota配置文件的规范,没有其他文档描述了过程。
Q.1.1.1)正如我提到的媒体链接的ACK,你看到的都是写响应写请求你做的中心,有来自SUOTA没有ATT水平确认的写作是由奴隶所接受,没有特点它接收一个0×01或为了确认写入一个0×00,所述ACK是从站对,其包括其中包括ATT错误代码的命令的THA状态的主写入响应。
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的拟议应用程序,可根据要求提供,您希望我发送它吗?
感谢很多的细节。Q.1.1.3)说,例如我有32440个字节的IMAGE_SIZE和我已经写特性具有240 BLOCK_SIZE。所以,现在我的块写计数将是135(240)字节+ 1(40)字节,即32440/240 = 240x135 + 40。并且每个块将写为MTU的最大尺寸(20个字节)。请确认!Q.1.1.4),我相信该通知是默认启用。发起者应该能够得到每个块写入的通知。如果我错了,请纠正我。
顺便说一句,这将是巨大的帮助,如果你能提供一个供我参考这些(的Adroid / iPhone)的来源。
谢谢!Br,Govind
你好,问题Q.1.1.4很好。我能得到通知。但我仍然不清楚我的第四季度,请帮帮我。Q1.1.5)spota_serv_status状态中的spota_serv_status = OK是什么?它是spotar_cmp_ok(0x02)吗?
关于你的计算,是你是正确的,你将拥有135 * 240 +额外的图像尺寸,设备将执行大约12个写命令20字节,每个字节为完成240字节块,然后它会将它们写入NV作为AN-B-003.PDF的内存指示,然后从外设发送通知,以指示对NV存储器的正确写入,以便中央将继续下一批次数据,是的OK的值为0x02。
你好,感谢您的确认。计算部分很好。现在进入不同的问题。我以同样的方式实现,流程是如下所示。(1)我收到了通知0x10的,这表明“SPOTA_IMG_STARTED SPOTA开始下载图像”。(有此之前几步,我没有这里提到)(2) Write GATTWriteCharValue (SPOTA_PATCH_LEN) -在我的例子中是240。(3)GattwriteNoresp(Spota_patch_data) - 用20个字节粒度编写240字节的.img文件。(4)在完成240个字节后,我假设在完成240字节后获取通知(Spota_serv_status = OK)。(4.Q.1)这里是我的问题,我不写240字节我写260个字节后得到它后得到通知,并有后通知是每240个字节到最后,但一大块,为什么会这样呢?(下面将讨论关于最后一块)(4.Q.2)如果在情况下,如果它是采取头20个字节,我应该做什么。我需要单独写头文件吗?(4.Q.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)当你解释后,12×20的写我应该得到通知,但情况并非如此,有什么不对?如果我查询MEM与GATTReadCharValue(SPOTA_MEM_INFO信息,我得到了一个价值0x7DA0(32160)的差异是244,不知道哪里出了问题!
最早响应将是一个很大的帮助。谢谢!供您参考,- 做工精细用SUOTA相同的图像文件(.IMG)Android应用程序。- 我与SPOTA_PATCH_LEN即通过做多玩240的其它尝试,小于240得到的像错误0x07的不同问题,但会忽略了。Br,Govind
(4.Q.1)我无法想象什么会导致设备发送一个260字节的SUOTA通知,正确的操作是,正如我提到的240字节后的通知,然后设备应该在nv内存中写入数据并发送通知。我已经发送了一封带有SLA的邮件,以便在接受文档后获取SUOTA android和iOS initiator应用的源代码,请以此为例。雷竞技安卓下载
(4.Q.2)上传到设备的图像包括图像头,但这不需要任何特殊处理,它是图像的一部分。
(4.Q.3)图像头由mk_image.exe和通过在命令行您应用固件版本(以及bin文件offcouse)运行时mk_image.exe(检查UM-B-产生在第7和在附录A的信息)012创建一个辅助引导loader.pdf的。
谢谢你的细节。(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信息读取请求也提供相同的值。
你好我验证了所有可能的方法来找出CRC的原因,并观察到“图像id”在图像头中被读为FF总是。70 51 FF 01 .....在其他成功案例70 51 01 AA ....这个有什么想法?
图像的最后一个字节应包含整个图像的CRC(这是手机应用程序的某些东西),因此当XOR与上一个字节接收的字节,该字节是作为Spota.state的整个图像的CRC的CRC。CRC_CLAC结果为零(如果接收的字节是正确的,并且CRC是正确的)。如果您的图像中没有此最后CRC字节,则应用程序将导致错误(您可以在Spotar_Img_End的Spotar_img_End案例中检查在App_spotar_read_mem()函数中)。我将Suota Phone应用程序发送到已注册的电子邮件帐户。
谢谢!顺便说一句,当我尝试到图像比较读回(我用我的OTA应用转移),字节匹配1对1,除了图像标识。图像ID字节[2] = 0xFF的附上截图供参考。一个在右窗格中“记忆的内容”区域被读回,我用我的定制应用程序传输的数据。一个在左窗格中的“数据文件内容”,又是我使用SUOTA Android应用程序转移读回文件。我已阅读它,保持这里一边,刚刚打开进行比较。这是我的问题5.q.1)为什么我得到0x13002为0xff而不是0xff?与crc有什么关系吗?如果我添加这个CRC,我需要改变长度吗?我想这不是必需的!在我的情况下,最后chuck是4字节(33404/240 + 4)。我添加crc它将是5字节!如果我错了,请纠正我。
非常感谢!一切都很好,OTA是工作!
br,Govind
很高兴你做到了,并感谢指示。
你好,
我正在尝试通过实际的业务应用程序实现/合并这个SUOTA应用程序。我遵循AN-B-003_1.pdf中给出的SUotA流程。
我有几个问题:
(1)我指的是一个正确的文件和SUotA流是容易的呢?
(2)什么是ACK?它会给0x00吗?0x01?
Br,
Govind
嗨ggotta,
1)这是配置文件的规范,可以在AN-B-010 DA14580中使用Suota(通过空中软件更新)以及在教程部分教程6:添加软件更新空气。
2)你的意思是ACK的,你看到图2:SUOTA流程图?那ACK从堆栈中产生,因为这些命令,该设备正在使用是GATTWriteCharValue该规范定义,应该有来自设备的响应,它不是一个效应初探,你应该显式地从你的应用程序发送,他们在写响应写请求,中央发出。
谢谢mt_dialog.
你好,
感谢您的答复。
我指的是这两个应用笔记。我的情况有点不同。我有不同的领域上SUOTA工作
(case-i)将OTA支持添加到接收器/响应者/设备侧 - 这部分完成。现在我能够使用Suota Android应用程序更新固件。
(案例-II)在上述情况下启动器是移动小工具和拟议应用。如在我的情况下,我希望写自己的应用程序,类似于Suota Android应用程序,而是针对不同原因的C ++。
我的问题是有关情况-II。现在,
Q1:要fullfil我的情况下-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:最古老的
0×01:图像#1
0x02:图像#1
它到底意味着什么?在我的情况下,字节#3是0x13(SPI)
Q1.1.3)在第4.2.4节中,究竟应该是spota_patch_len?是总站文件大小吗?闪存块大小?或每次转移的数字字节?
在我的情况下的bin文件大小为33404个字节。能否请您用一个例子解释一下吗?
Q1.2)如果没有,您能否指导我通过正确的文件来源/文件来源来实施案例ii ?
Br,
Govind。
嗨ggotta,
Q1)是这是Suota配置文件的规范,没有其他文档描述了过程。
Q.1.1.1)正如我提到的媒体链接的ACK,你看到的都是写响应写请求你做的中心,有来自SUOTA没有ATT水平确认的写作是由奴隶所接受,没有特点它接收一个0×01或为了确认写入一个0×00,所述ACK是从站对,其包括其中包括ATT错误代码的命令的THA状态的主写入响应。
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.
感谢很多的细节。
Q.1.1.3)说,例如我有32440个字节的IMAGE_SIZE和我已经写特性具有240 BLOCK_SIZE。
所以,现在我的块写计数将是135(240)字节+ 1(40)字节,即32440/240 = 240x135 + 40。
并且每个块将写为MTU的最大尺寸(20个字节)。
请确认!
Q.1.1.4),我相信该通知是默认启用。发起者应该能够得到每个块写入的通知。如果我错了,请纠正我。
Br,
Govind
顺便说一句,这将是巨大的帮助,如果你能提供一个供我参考这些(的Adroid / iPhone)的来源。
谢谢!
Br,
Govind
你好,
问题Q.1.1.4很好。我能得到通知。但我仍然不清楚我的第四季度,请帮帮我。
Q1.1.5)spota_serv_status状态中的spota_serv_status = OK是什么?它是spotar_cmp_ok(0x02)吗?
Br,
Govind
嗨ggotta,
关于你的计算,是你是正确的,你将拥有135 * 240 +额外的图像尺寸,设备将执行大约12个写命令20字节,每个字节为完成240字节块,然后它会将它们写入NV作为AN-B-003.PDF的内存指示,然后从外设发送通知,以指示对NV存储器的正确写入,以便中央将继续下一批次数据,是的OK的值为0x02。
谢谢mt_dialog.
你好,
感谢您的确认。
计算部分很好。现在进入不同的问题。我以同样的方式实现,流程是如下所示。
(1)我收到了通知0x10的,这表明“SPOTA_IMG_STARTED SPOTA开始下载图像”。(有此之前几步,我没有这里提到)
(2) Write GATTWriteCharValue (SPOTA_PATCH_LEN) -在我的例子中是240。
(3)GattwriteNoresp(Spota_patch_data) - 用20个字节粒度编写240字节的.img文件。
(4)在完成240个字节后,我假设在完成240字节后获取通知(Spota_serv_status = OK)。
(4.Q.1)这里是我的问题,我不写240字节我写260个字节后得到它后得到通知,并有后通知是每240个字节到最后,但一大块,为什么会这样呢?(下面将讨论关于最后一块)
(4.Q.2)如果在情况下,如果它是采取头20个字节,我应该做什么。我需要单独写头文件吗?
(4.Q.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)当你解释后,12×20的写我应该得到通知,但情况并非如此,有什么不对?
如果我查询MEM与GATTReadCharValue(SPOTA_MEM_INFO信息,我得到了一个价值0x7DA0(32160)的差异是244,不知道哪里出了问题!
最早响应将是一个很大的帮助。谢谢!
供您参考,
- 做工精细用SUOTA相同的图像文件(.IMG)Android应用程序。
- 我与SPOTA_PATCH_LEN即通过做多玩240的其它尝试,小于240得到的像错误0x07的不同问题,但会忽略了。
Br,
Govind
嗨ggotta,
(4.Q.1)我无法想象什么会导致设备发送一个260字节的SUOTA通知,正确的操作是,正如我提到的240字节后的通知,然后设备应该在nv内存中写入数据并发送通知。我已经发送了一封带有SLA的邮件,以便在接受文档后获取SUOTA android和iOS initiator应用的源代码,请以此为例。雷竞技安卓下载
(4.Q.2)上传到设备的图像包括图像头,但这不需要任何特殊处理,它是图像的一部分。
(4.Q.3)图像头由mk_image.exe和通过在命令行您应用固件版本(以及bin文件offcouse)运行时mk_image.exe(检查UM-B-产生在第7和在附录A的信息)012创建一个辅助引导loader.pdf的。
谢谢mt_dialog.
谢谢你的细节。
(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。
你好
我验证了所有可能的方法来找出CRC的原因,并观察到“图像id”在图像头中被读为FF总是。
70 51 FF 01 .....在其他成功案例70 51 01 AA ....这个有什么想法?
Br,
Govind
嗨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.
谢谢!
顺便说一句,当我尝试到图像比较读回(我用我的OTA应用转移),字节匹配1对1,除了图像标识。图像ID字节[2] = 0xFF的
附上截图供参考。
一个在右窗格中“记忆的内容”区域被读回,我用我的定制应用程序传输的数据。
一个在左窗格中的“数据文件内容”,又是我使用SUOTA Android应用程序转移读回文件。我已阅读它,保持这里一边,刚刚打开进行比较。
这是我的问题
5.q.1)为什么我得到0x13002为0xff而不是0xff?与crc有什么关系吗?
如果我添加这个CRC,我需要改变长度吗?我想这不是必需的!在我的情况下,最后chuck是4字节(33404/240 + 4)。我添加crc它将是5字节!
如果我错了,请纠正我。
Br,
Govind
非常感谢!一切都很好,OTA是工作!
br,
Govind
嗨ggotta,
很高兴你做到了,并感谢指示。
谢谢mt_dialog.