外部处理器上的SUOTA(IF/UART)

8个职位/ 0个新职位
最后一篇文章
scrat75
离线
最后一次见到:4年11个月前
加入:2016-05-03 09:53
外部处理器上的SUOTA(IF/UART)

嗨对话框用户,

我正在研究SUOTA服务及其在DA14580上的可能实现,DA14580以外部处理器模式工作(连接到应用程序代码所在的外部MCU)。
在未来的项目中,我们将需要升级DA14580的固件代码,而不是外部MCU的固件代码。如果我理解正确的话,SUOTA功能将允许我们升级
只有外部MCU代码,而不是DA14580的代码,除非外部MCU能够擦除/编程DA14580的辅助引导加载程序所期望的外部SPI闪存
要查找它将加载的新图像。
我正确吗?

谢谢你的支持,
斯克兰特75。

关键词:
设备:
MT_对话框
离线
最后一次见到:2个月4个星期前
工作人员
加入:2015-06-08 34
嗨scrat75,

嗨scrat75,

SUOTA将从android应用程序获取您提供的图像,并将该图像写入连接到580的外部闪存/eeprom。SUOTA操作完成后,580将从闪存启动,并运行您刚刚下载的新固件。如果是完全嵌入式的解决方案外部处理器,这意味着应用程序运行在外部MCU上,SUOTA不会更新运行在外部MCU上的应用程序。

由于MT_dialog

scrat75
离线
最后一次见到:4年11个月前
加入:2016-05-03 09:53
嗨,对话支持/用户,

嗨,对话支持/用户,

正如您所写的,我可以解释DA14580上运行的(启用了SUOTA)应用程序任务能够擦除/写入外部
SPI flash,并发送/触发(通过GTL层/UART接口)应用程序用户中的部分或所有通知事件/回调
部分运行在外部MCU上。我说的对吗?

提前感谢你的回答。

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

嗨scrat75,

580可以在2种配置下运行,完全嵌入式(通过外部MCU运行应用程序实现,并通过GTL与580通信-通过UART,这是dialog的自定义协议)和完全托管(内部580 MCU运行应用程序和蓝牙堆栈)。在具有外部MCU的完全嵌入式模式下,应用程序处理从其位于580中的配置文件部分接收的消息。例如,在创建SUOTA数据库的过程中,应用程序将发送一个app_spotar_create_db(),该消息将传递给580并创建数据库,然后580将响应一条确认消息,确认数据库已创建,应用程序应在Handlemsg()中捕获该消息函数,并通过spotar_create_db_cfm_handler()进行处理,例如,在db创建启动广告或为其他服务创建db后。

由于MT_dialog

scrat75
离线
最后一次见到:4年11个月前
加入:2016-05-03 09:53
嗨,对话支持/用户,

嗨,对话支持/用户,

以下是我的最终测试结果:

  1. 我在KEIL uVision IDE加载接近报告器外部模式位于
    DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \ target_apps \ ble_examples \ prox_reporter_ext项目文件夹中。
    我修改了APP.h头文件中的APP_DIS_SW_REV“0.0.1”定义,并构建了生成
    我重命名为的hex文件prox_reporter_ext.hex
  2. 我运行命令hex2bin prox_reporter_ext_0.hex生成相应的二进制文件prox_reporter_ext.bin
  3. 我在KEIL uVision IDE加载生产测试位于
    DA1458x_SDK_5.0.3\DA1458x_SDK\5.0.3\projects\target_apps\prod_test\prod_test文件夹中。
    我建立了生产bin文件的项目产品试验箱
  4. 我运行命令Mkimage single prox_reporter_ext.bin ble_580_sw_version_0.h prox_reporter_ext.jmg
    这个文件ble_580_sw_version_0.h包含以下代码行:

    #定义DA14580_SW_VERSION“v_5.0.3.0”
    #define DA14580_SW_VERSION_DATE "2016-05-19 16:01" #define DA14580_SW_VERSION_DATE "
    #define DA14580_SW_VERSION_STATUS "REPOSITORY VERSION"
  5. 我运行命令Mkimage single prod_test_580.bin ble_580_sw_version_1.h prod_test_580.jmg
    现在文件ble_580_sw_version_1.h包含以下代码行:

    #定义DA14580_SW_VERSION“v_5.0.3.1”
    #define DA14580_SW_VERSION_DATE "2016-05-19 16:04" #define DA14580_SW_VERSION_DATE "
    #define DA14580_SW_VERSION_STATUS "REPOSITORY VERSION"
  6. 我在Keil uVision IDE中加载并构建了位于
    C:\Users\monsminc\Documents\Dialog\ DA1458x_SDK_5.0.3 \ \ secondary_bootloader DA1458x_SDK \ 5.0.3 \实用工具,
    生产secondary_bootloader.hex;执行以下命令转换为二进制格式:
    hex2bin二次_bootloader.hex
  7. 我运行命令:
    Mkimage multi spi secondary_bootloader.bin prox_reporter_ext。img 0 x8000 prod_test_580。img 0x13000 0x1F000 da14580.bin
    使用SmartSnippet生成我在外部SPI闪存中烧录的双映像(我没有使其可引导)
    因为如果我正确理解了mkimage.exe自动执行该操作);
  8. 我在Microsoft Visual Studio c++ 2010版中加载并构建了这个项目主机程序位于
    DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \项目host_apps \ windows \接近\记者文件夹中。
    我执行了结果host_proxr_sdk.exe在命令行中将COMM号传递给它
    当我把DA14580开发工具包连接到我的电脑上时,看到的虚拟Com端口。
  9. 接下来,我在运行Android 6.0.1的Nexux 9上安装了Dialog SUOTA应用程序,通过USB将Nexus连接到PC
    然后复制Nexus 9 \ \ Suota内部存储文件夹另一个img文件的结果,以前的实验。
  10. 我启动了SUOTA应用,成功发现了我的DA14580开发工具包;然后我把它连接起来;
    下一个屏幕显示了我设置的确切固件版本和软件版本
    更新设备按钮让我获得了下一个屏幕页面,我选择了
    要升级的图像库;我选择了第二个(图像库设置为2),告诉应用程序重新编程SPI
    flash内存映射到P0_0 (sck), P0_3 (cs), P0_5 (miso)和P0_6 (miso)。SUOTA正确地下载了新的
    我在屏幕应用程序和控制台中都看到了下载进度
    主机程序项目。
  11. 在完成下载时,我回答了没有引导请求,我断开了我的开发板;
    我还终止了正在运行的控制台程序主机程序项目。然后我比较
    选择的图片显示在Nexus 9上(我用SUOTA应用程序下载的那个)
    upgrade_image2.img由控制台程序生成(出现在
    DA1458x\U SDK\U 5.0.3\DA1458x\U SDK\5.0.3\projects\host\u apps\windows\approxity\reporter\host\u proxr\u SDK文件夹:
    它们大小相同,只有一个字节不同(字节33th-I使用cmp-l-b file1.img file2.img来比较这两个图像)。
  12. 为了确保SUOTA应用程序没有修改连接到DA14580的外部SPI Flash,我使用了SmartSnippets
    在测试之前和之后阅读它的内容,并与之进行比较,看看它们是否不同。他们的比赛。
    这意味着在外部模式(也称为完全嵌入式)下,SUOTA应用程序允许更新固件
    外部MCU,而不是SPI Flash烧伤的。

所以我的问题是:有没有一种方法也更新SPI Flash从DA14580在存在外部模式配置引导?

预先感谢您的关注

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

嗨scrat75,

外部接近报告程序中的示例从SUOTA获取文件并将其存储在磁盘上。因此,由于文件位于您的外部处理器,您可以选择直接下载580上的固件。既然你不想直接下载固件,你想用图片烧录闪存,我可以想到两个选择。

1) 外部处理器与580共享SPI闪存,因此直接将图像刻录到SPI的相应内存地址(其中的难点是确保两个MCU都不可能尝试访问闪存,您可以在外部MCU下载二进制文件时尝试将580保持在重置状态)。

2) 您可以通过580将fw下载到flash,在这种情况下,您可以更改flash_编程器(Smart Snippets使用的实用程序),将flash_编程器下载到580,然后提供新的suota映像,以便580将其刻录到flash(这需要从MCU的主机端实现)。

由于MT_dialog

scrat75
离线
最后一次见到:4年11个月前
加入:2016-05-03 09:53
嗨,对话支持,

嗨,对话支持,

在用户手册或应用笔记文件夹中是否有文档解释外部主MCU和应用程序的协议flash_编程器
两者都必须实现和遵循交换数据和正确编程的外部SPI Flash。我知道我可以通过逆向工程得到它
flash_编程器的代码项目,但我认为如果你能给我指一份官方文件,那就更好了。。

提前感谢您的回复

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

嗨scrat75,

上面解释的实现不是通过对话框实现的,也没有解释flash编程器功能的文档。flash编程器的主要用途是仅在智能代码段中使用,而不是由外部MCU使用,以便通过580刻录flash,但这是您案例中唯一可用的示例,因为您希望允许这个选项。

由于MT_dialog

主题锁定