Hi对话框用户,
我正在研究SUOTA服务及其在外部处理器模式下(连接到应用程序代码所在的外部MCU)的DA14580上的可能实现。
在未来的项目中,我们需要升级DA14580的固件代码,而不是外部MCU的固件代码。如果我理解正确的话,SUOTA功能将允许我们进行升级
只有外部MCU代码,而不是DA14580的代码,除非外部MCU能够擦除/编程DA14580的次要引导加载程序所期望的外部SPI闪存
为了找到新的图像,它将加载。
我说的对吗?
谢谢你的支持,
scrat75。
设备:
嗨scrat75,
SUOTA将从android应用程序中获取图像,并将该图像写入连接到580的外部闪存/eeprom。SUOTA操作完成后,580将从flash启动并运行您刚刚下载的新固件。对于完全嵌入式解决方案的外部处理器,这意味着应用程序运行在外部MCU上,SUOTA不会更新运行在外部MCU上的应用程序。
由于MT_dialog
嗨,对话支持/用户,
正如你所写的,我可以解释为(SUOTA启用)DA14580上运行的应用程序任务能够擦除/写入外部数据
SPI flash,还可以发送/触发(通过GTL层/UART接口)应用程序用户中的一些或所有通知事件/回调
部分运行在外部MCU上。我说的对吗?
提前感谢你的回答。
嗨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
嗨,对话支持/用户,
这是我最后的测试结果:
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;
DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \ target_apps \ prod_test \ prod_test项目文件夹中。
我建立了产生bin文件的项目prod_test_580.bin;
的文件ble_580_sw_version_0.h包含以下代码行:
#定义DA14580_SW_VERSION "v_5.0.3.0"
#定义DA14580_SW_VERSION_DATE "2016-05-19 16:01"
#定义仓库版本号
现在,文件ble_580_sw_version_1.h包含以下代码行:
#定义DA14580_SW_VERSION "v_5.0.3.1"
#定义DA14580_SW_VERSION_DATE "2016-05-19 16:04"
#定义仓库版本号
C:\Users\monsminc\Documents\Dialog\ DA1458x_SDK_5.0.3 \ \ secondary_bootloader DA1458x_SDK \ 5.0.3 \实用工具,
生产secondary_bootloader.hex;执行以下命令转换为二进制格式:
hex2bin secondary_bootloader.hex
Mkimage multi spi secondary_bootloader.bin prox_reporter_ext。Img 0x8000 prod_test_580。img 0x13000 0x1F000 da14580.bin
使用SmartSnippet(我没有使可引导)在外部SPI Flash中烧录的双重图像
因为如果我正确理解了mkimage.exe自动执行该操作);
在DA1458x_SDK_5.0.3 \ DA1458x_SDK \ 5.0.3 \ \项目host_apps \ windows \接近\记者文件夹中。
执行结果host_proxr_sdk.exe在命令行传递COMM号
当我把DA14580开发工具包连接到我的PC时,看到了虚拟Com端口。
复制到Nexus 9\内部存储\Suota文件夹另一个img文件的结果,以前的实验。
结果下一个屏幕显示了我所设置的确切的固件版本和软件版本。点击
更新设备按钮的SUOTA应用程序让我获得下一个屏幕页面,我选择
图像库升级;我选择了第二个(图像库被设置为2)告诉应用程序重新编程SPI
闪存映射在P0_0 (sck), P0_3 (cs), P0_5 (miso)和P0_6 (miso)上。SUOTA正确下载新的
我在屏幕应用程序和控制台中都看到了下载进度
host_proxr项目。
我还终止了运行控制台的程序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比较两张图片)。
阅读上面暴露的测试前后的内容,并进行比较,看看它们是否不同。他们的比赛。
这意味着在外部模式(也称为完全嵌入式)SUOTA应用程序允许更新固件
外部MCU,而不是SPI Flash中烧毁的那个。
所以我的问题是:有一种方法可以更新DA14580在外部模式配置下启动的SPI Flash吗?
提前感谢您的关注
嗨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
嗨对话支持,
在用户手册或应用笔记文件夹中是否有文档解释了协议,外部主MCU和flash_programmer
两者都必须实现和遵循交换数据和正确编程外部SPI Flash。我知道我可以通过逆向工程得到它
flash_programmer的代码项目,但我认为如果你能给我指一份官方文件,那就更好了。
提前感谢您的回复
嗨scrat75,
上面解释的实现不是由Dialog实现的,也没有文档解释flash程序员的功能。Flash程序员的主要目的是只在智能片段中使用,而不是通过外部MCU来通过580燃烧闪存,但这是你的情况下唯一可用的例子,因为你想遵循这个选项。
由于MT_dialog