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

8个职位/ 0个新
最后发表
scrat75
离线
最后看到:4年10个月前
加入:2016-05-03 09:53
外部处理器的SUOTA (IF/UART)

Hi对话框用户,

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

谢谢你的支持,
scrat75。

关键词:
设备:
MT_dialog
离线
最后看到:1个月前3个星期前
工作人员
加入:2015-06-08 34
嗨scrat75,

嗨scrat75,

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

由于MT_dialog

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

嗨,对话支持/用户,

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

提前感谢你的回答。

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

嗨scrat75,

580可以在两种配置下运行,完全嵌入式(通过外部MCU运行应用程序实现,并通过GTL -一个对话框的自定义协议-通过UART与580通信)和完全托管(内部580 MCU运行应用程序和蓝牙堆栈)。在具有外部MCU的完全嵌入式模式下,应用程序处理从位于580中的配置文件部分接收到的消息。例如SUOTA创建的数据库,应用程序将发送app_spotar_create_db(),这将通过580和数据库将被创建,那么580年将回复一个确认消息,db创建的应用程序应该抓住这个消息HandleBleMsg()函数并通过spotar_create_db_cfm_handler处理(例如)创建db之后开始广告或为另一个服务创建数据库等。

由于MT_dialog

scrat75
离线
最后看到:4年10个月前
加入: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”定义,并构建了一个项目
    我重命名的十六进制文件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 \ \ target_apps \ prod_test \ prod_test项目文件夹中。
    我建立了产生bin文件的项目prod_test_580.bin
  4. 我运行命令Mkimage single prox_reporter_ext.bin ble_580_sw_version_0.h prox_reporter_ext.jmg .bin
    文件ble_580_sw_version_0.h包含以下代码行:

    #定义DA14580_SW_VERSION "v_5.0.3.0"
    #定义DA14580_SW_VERSION_DATE "2016-05-19 16:01"
    #定义仓库版本号
  5. 我运行命令Mkimage单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"
    #定义DA14580_SW_VERSION_DATE "2016-05-19 16:04"
    #定义仓库版本号
  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 secondary_bootloader.hex
  7. 我运行命令:
    Mkimage multi spi secondary_bootloader.bin prox_reporter_ext。Img 0x8000 prod_test_580。img 0x13000 0x1F000 da14580.bin
    使用SmartSnippet(我没有使可引导)在外部SPI Flash中烧录的双重图像
    因为如果我正确理解了mkimage.exe自动执行该操作);
  8. 我在Microsoft Visual Studio c++ 2010版中加载并构建了该项目host_proxr位于
    DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \项目host_apps \ windows \接近\记者文件夹中。
    执行结果host_proxr_sdk.exe在命令行传递COMM号
    当我把DA14580开发工具包连接到我的PC时,看到了虚拟Com端口。
  9. 接下来,我在运行android 6.0.1的Nexux 9上安装了Dialog SUOTA应用程序,并通过USB将Nexus连接到PC上
    复制到Nexus 9\内部存储\Suota文件夹另一个img文件的结果,以前的实验。
  10. 我启动了SUOTA应用程序,成功发现了我的DA14580开发工具包;然后我与它建立了联系;
    结果下一个屏幕显示了我所设置的确切的固件版本和软件版本。点击
    更新设备按钮的SUOTA应用程序让我获得下一个屏幕页面,我选择
    图像库升级;我选择了第二个(图像库被设置为2)告诉应用程序重新编程SPI
    闪存映射在P0_0 (sck), P0_3 (cs), P0_5 (miso)和P0_6 (miso)上。SUOTA正确下载新的
    我在屏幕应用程序和控制台中都看到了下载进度
    host_proxr项目。
  11. 下载完成后,我对引导请求回答“不”,并断开了与开发板的连接;
    我还终止了运行控制台的程序host_proxr项目。然后我比较了
    在Nexus 9上显示的选择图像(我用SUOTA应用程序下载的图像)
    upgrade_image2.img由控制台程序生成(出现在
    DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \项目host_apps \ windows \接近\ \ host_proxr_sdk记者文件夹:
    它们具有相同的大小,并且仅在一个字节(字节33 -我使用cmp -l -b file1。img file2。Img比较两张图片)。
  12. 为了确保SUOTA应用程序没有修改连接到DA14580的外部SPI Flash,我使用了SmartSnippets
    阅读上面暴露的测试前后的内容,并进行比较,看看它们是否不同。他们的比赛。
    这意味着在外部模式(也称为完全嵌入式)SUOTA应用程序允许更新固件
    外部MCU,而不是SPI Flash中烧毁的那个。

所以我的问题是:有一种方法可以更新DA14580在外部模式配置下启动的SPI Flash吗?

提前感谢您的关注

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

嗨scrat75,

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

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

2)你可以通过580下载fw到flash,在这种情况下,你可以改变flash_programmer(智能片段使用的实用程序),下载flash_programmer到580,然后提供新的suota图像,这样580将把它烧到flash(这需要从MCU的主机端实现)。

由于MT_dialog

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

嗨对话支持,

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

提前感谢您的回复

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

嗨scrat75,

上面解释的实现不是由Dialog实现的,也没有文档解释flash程序员的功能。Flash程序员的主要目的是只在智能片段中使用,而不是通过外部MCU来通过580燃烧闪存,但这是你的情况下唯一可用的例子,因为你想遵循这个选项。

由于MT_dialog

主题锁定