与MCU的硬件连接有可能升级蓝牙的固件

6个帖子 / 0新
最后一篇文章
斯巴达
离线
最后一次露面:1年1个月前
加入:2016-03-14 14:22
与MCU的硬件连接有可能升级蓝牙的固件

我对该领域的专家有一个问题。我的问题是下一个:我需要如何将蓝牙芯片连接到MCU,以便有可能将程序下载到内部闪存,有时有时可以在内部闪存中升级程序。

关键字:
设备:
mt_dialog
离线
最后一次露面:3个月20小时前
职员
加入:2015-06-08 11:34
嗨,斯巴达,

嗨,斯巴达,

您提到的方案有些棘手,因为583的主要功能是从内部闪光灯启动。583配备了一个OTP引导加载程序,该启动程序从主体中获取控件,并检查UART引脚和SPI,并存在一个额外的引导加载程序,称为高级引导加载程序。据我所知,现在您可以从外部MCU删除内部闪光灯(由于您必须确保580不使用它,因此需要一点努力),然后直接在内部闪光灯或您可以使用580来更新闪光灯(这更棘手)。目前不支持这种实现。

谢谢mt_dialog

斯巴达
离线
最后一次露面:1年1个月前
加入:2016-03-14 14:22
有一个想法和需求

有一个想法,需要MT_Dialog专家的意见。这个想法是下一个:如果我使用MCU的硬件SPI,将连接到蓝牙的P0_0-P0_3(启动序列中的引导引脚)来下载将配置SPI的智能程序(weff p2_0,p2_3,p2_3,p2_4,p2_4,p2_9,p2_9未连接)BT到Internal Flash和GPIO作为软件SPI。使用软件SPI作为MCU和BT之间的连接以及Flash和BT之间的内部SPI连接,将真实的固件下载到内部Flash需要。是否有可能有可能升级蓝牙的固件???还有一句话:我可以重新配置PINS PIS P0_0-P0_3作为软件SPI的GPIO(智能程序)(在这种情况下,我不需要软件连接)。

mt_dialog
离线
最后一次露面:3个月20小时前
职员
加入:2015-06-08 11:34
嗨,斯巴达,

嗨,斯巴达,

您将不得不将高级引导程序刻录到您的SPI,因为583不使用您提到的引脚,我不了解您的设置或您想说的话,您能说出更多的描述性吗?为了通过BLE更新固件,您可以使用Suota配置文件,是的,您可以在运行时重新配置580的引脚。

谢谢mt_dialog

Diederikloos
离线
最后一次露面:2年9个月前
加入:2015-07-16 10:26
你好山dialog,

你好山dialog,

我和斯巴达(Sparta)从事同一项目,因此我将尝试解释我们遇到的问题以及我们想尝试的解决方案。

我们有一个基于LPC4357的产品,带有DA14583芯片。我们正在使用Wi-Fi来更新/升级设备上的固件。如果需要,我们还想更新蓝牙固件。(我们的用例不允许我们更新Suota的所有设备)。蓝牙软件在DA14583内部闪存中。DA14583使用SPI连接到我们的MCU。据我了解,这是DA14583的引导顺序:
1. OTP中是否存在引导加载程序(是的,它是通过对话框闪烁的),跳到OTP引导加载程序
2.在第二个OTP中是否有Bootloader,运行此引导加载程序
3.扫描所有UART连接,如果建立连接,请下载程序
4.阅读内部闪存,如果有程序开始运行
5.再次尝试UART

基于此引导序列,我们只有以下选项才能在必要时更新固件(希望永远不会)
1.在OTP中刻录智能引导程序,它将使用UART/SPI下载新的固件并将其写入Flash(程序将每次启动,如果我们在OTP中犯错,我们就会出现问题)
2.从UART启动智能程序,该程序将使用UART/SPI下载新固件并将其写入Flash(更安全,MCU始终可以更新,并且DA将始终允许新的智能程序)
3.将智能程序写入Flash,它将使用UART/SPI下载新固件并将其写入Flash

我们需要HCI的SPI连接,并且设备上没有剩余的UART。我们在MCU上使用SPI的引脚显然也可以用作UART,因此我们想做的就是如下:

1.引导DA并通过使用UART向DA提供智能程序
2.智能程序配置内部闪光灯和UART用于传输,MCU发送新固件
3. DA重新启动,现在在内部闪存中找到程序,并将运行新的固件
4.如果打破了固件或智能程序,我们可以使用UART上传新的智能程序/固件,并且可以使用Wi-Fi更新在MCU上更换智能程序/固件。

您认为这将是解决问题的好解决方案吗?还是该技术有任何弊端,或者根本不可能?

亲切的问候,

Diederik Loos

mt_dialog
离线
最后一次露面:3个月20小时前
职员
加入:2015-06-08 11:34
嗨,DiDerikloos,

嗨,DiDerikloos,

我没有您的第三种选择,无论如何,我都同意,最好的方法是从UART下载FW(OTP解决方案没有足够的测试空间),在Bootloader从583运行之后他将配置引脚,您可以从指定的引脚下载FW。之后,下载的程序将删除闪光灯,并准备583,以通过外部MCU下载新的FW并等待提供该程序(设置了优选的UART引脚,并等待自定义特定的标头,以便开始从该数据中获取数据UART并将其写入SPI Flash)。下载完成后,583应重置,并且OTP中的所有准备就绪燃烧的引导程序将跳过高级引导加载程序和UART,并将用于内部闪光灯。是的,我认为这样做是可行的。这是我看到的唯一方法,可以写入583的内部闪光灯。另外,我想您还可以使用Flash_programmer(uart_selection)来执行此操作并发送智能片段发送的相应命令,以便操纵583芯片的闪存。

谢谢mt_dialog

主题锁定