我对这个领域的专家有一个问题。我的问题是下一页:我如何将蓝牙芯片连接到MCU,以便将程序下载到内部闪存,有时可以在内部闪存中升级程序。
嗨,斯巴达,
你提到的场景有点棘手,因为583的主要功能是从内部闪存引导。583配备了一个OTP引导加载程序,该程序从主程序获得控制权,并检查UART引脚和SPI,以及是否存在一个额外的引导加载程序(称为高级引导加载程序)。现在只要我能理解你可以消除从外部单片机内部flash(这需要一点努力自580年你必须确保不使用)和直接燃烧图像内部flash或您可以使用580为了更新flash(更复杂)。目前不支持这种实现。
由于MT_dialog
有一个想法,需要MT_dialog专家的意见。接下来的想法是:如果我使用硬件SPI从MCU,将连接到引脚P0_0-P0_3(引导引脚在启动顺序)的蓝牙下载一个智能程序,将配置的SPI(离开P2_0, P2_3, P2_4, P2_9未连接)的BT内部flash和gpio软件SPI。需要使用软件SPI作为MCU和BT之间的连接,以及flash和BT之间的内部SPI连接,将真实的固件下载到flash内部。有没有可能升级蓝牙固件?还有一个备注:我可以重新配置引脚P0_0-P0_3作为软件SPI的gpio(智能程序),(在这种情况下,我不需要软件连接)。
你将不得不烧一个高级引导加载程序到你的SPI,因为583不使用你提到的引脚,我不明白你的设置或你试图说什么,你能更详细的描述吗?为了通过BLE更新你的固件,你可以使用SUOTA配置文件,是的,你可以在运行时重新配置580引脚。
你好MT-dialog,
斯巴达和我在同一个项目上工作,所以我会尝试解释我们遇到的问题和我们想要尝试的解决方案。
我们有一个基于LPC4357的产品,采用DA14583芯片。我们正在使用Wi-Fi更新/升级我们设备上的固件。我们也想更新蓝牙固件,如果需要通过Wi-Fi。(我们的用例不允许我们通过SUOTA更新所有设备)。蓝牙软件采用DA14583内置flash。DA14583通过SPI与我们的MCU连接。现在据我所知,这是DA14583的启动顺序:1.是否有引导加载程序在OTP(是的,它是闪过对话框),跳转到OTP引导加载程序2.在2nd OTP中有引导加载程序,运行此引导加载程序3.扫描所有uart连接,如果连接建立,下载程序到syram4.读取内部flash,如果程序存在,开始运行它5.再次尝试uart
基于这个启动顺序,我们有以下选项来更新固件只有在必要的时候(希望永远不会)1.烧录智能bootloader在OTP,它将下载新的固件使用uart/spi,并将其写入flash(程序将每次启动,如果我们在OTP中出错,我们有问题)2.从uart引导智能程序,它将使用uart/spi下载新的固件并将其写入flash(更安全,mcu可以总是更新,DA将总是允许新的智能程序)3.编写智能程序到flash,这将下载新的固件使用uart/spi,并写入flash
HCI需要SPI连接,设备上没有uart了。我们在MCU上使用的SPI引脚显然也可以用作uart,所以我们想做的是如下:
1.通过uart引导DA,为DA提供智能程序2.智能程序配置内部flash和uart传输,MCU发送新的固件3.DA重新启动,现在在内部flash中找到程序,并将运行新的固件4.如果固件或者智能程序坏了,我们可以使用uart上传新的智能程序/固件,通过Wi-Fi更新可以在MCU上替换智能程序/固件。
你认为这是解决问题的好办法吗?或者这种技术有什么缺点,或者可能根本不可能?
亲切的问候,
Diederik Loos.
嗨diederikloos,
无论如何,我不同意从UART下载FW的最佳方式,从UART引脚从583运行之后,也许是从UART下载FW的最佳方式(OTP解决方案没有给您测试的足够的测试空间)他将配置引脚,您可以从指定的引脚下载FW。之后,下载的程序将删除闪存并准备583通过外部MCU下载新FW并等到程序提供(设置优先的UART引脚并等待自定义特定标题,以便开始从中获取数据UART并将它们写入SPI闪光灯)。下载完成后583应重置,OTP中的全部刻录引导加载程序将跳过高级引导程序和UART,并将用于内部闪存。是的,我认为这样做是可行的。这是我可以看到一个人可以写入583的内部闪光的唯一方法。我想也可以使用flash_programmer(Uart_selection)来执行此操作并发送智能片段发送的相应命令以便操纵583芯片的闪存。
嗨,斯巴达,
你提到的场景有点棘手,因为583的主要功能是从内部闪存引导。583配备了一个OTP引导加载程序,该程序从主程序获得控制权,并检查UART引脚和SPI,以及是否存在一个额外的引导加载程序(称为高级引导加载程序)。现在只要我能理解你可以消除从外部单片机内部flash(这需要一点努力自580年你必须确保不使用)和直接燃烧图像内部flash或您可以使用580为了更新flash(更复杂)。目前不支持这种实现。
由于MT_dialog
有一个想法,需要MT_dialog专家的意见。接下来的想法是:如果我使用硬件SPI从MCU,将连接到引脚P0_0-P0_3(引导引脚在启动顺序)的蓝牙下载一个智能程序,将配置的SPI(离开P2_0, P2_3, P2_4, P2_9未连接)的BT内部flash和gpio软件SPI。需要使用软件SPI作为MCU和BT之间的连接,以及flash和BT之间的内部SPI连接,将真实的固件下载到flash内部。有没有可能升级蓝牙固件?还有一个备注:我可以重新配置引脚P0_0-P0_3作为软件SPI的gpio(智能程序),(在这种情况下,我不需要软件连接)。
嗨,斯巴达,
你将不得不烧一个高级引导加载程序到你的SPI,因为583不使用你提到的引脚,我不明白你的设置或你试图说什么,你能更详细的描述吗?为了通过BLE更新你的固件,你可以使用SUOTA配置文件,是的,你可以在运行时重新配置580引脚。
由于MT_dialog
你好MT-dialog,
斯巴达和我在同一个项目上工作,所以我会尝试解释我们遇到的问题和我们想要尝试的解决方案。
我们有一个基于LPC4357的产品,采用DA14583芯片。我们正在使用Wi-Fi更新/升级我们设备上的固件。我们也想更新蓝牙固件,如果需要通过Wi-Fi。(我们的用例不允许我们通过SUOTA更新所有设备)。蓝牙软件采用DA14583内置flash。DA14583通过SPI与我们的MCU连接。现在据我所知,这是DA14583的启动顺序:
1.是否有引导加载程序在OTP(是的,它是闪过对话框),跳转到OTP引导加载程序
2.在2nd OTP中有引导加载程序,运行此引导加载程序
3.扫描所有uart连接,如果连接建立,下载程序到syram
4.读取内部flash,如果程序存在,开始运行它
5.再次尝试uart
基于这个启动顺序,我们有以下选项来更新固件只有在必要的时候(希望永远不会)
1.烧录智能bootloader在OTP,它将下载新的固件使用uart/spi,并将其写入flash(程序将每次启动,如果我们在OTP中出错,我们有问题)
2.从uart引导智能程序,它将使用uart/spi下载新的固件并将其写入flash(更安全,mcu可以总是更新,DA将总是允许新的智能程序)
3.编写智能程序到flash,这将下载新的固件使用uart/spi,并写入flash
HCI需要SPI连接,设备上没有uart了。我们在MCU上使用的SPI引脚显然也可以用作uart,所以我们想做的是如下:
1.通过uart引导DA,为DA提供智能程序
2.智能程序配置内部flash和uart传输,MCU发送新的固件
3.DA重新启动,现在在内部flash中找到程序,并将运行新的固件
4.如果固件或者智能程序坏了,我们可以使用uart上传新的智能程序/固件,通过Wi-Fi更新可以在MCU上替换智能程序/固件。
你认为这是解决问题的好办法吗?或者这种技术有什么缺点,或者可能根本不可能?
亲切的问候,
Diederik Loos.
嗨diederikloos,
无论如何,我不同意从UART下载FW的最佳方式,从UART引脚从583运行之后,也许是从UART下载FW的最佳方式(OTP解决方案没有给您测试的足够的测试空间)他将配置引脚,您可以从指定的引脚下载FW。之后,下载的程序将删除闪存并准备583通过外部MCU下载新FW并等到程序提供(设置优先的UART引脚并等待自定义特定标题,以便开始从中获取数据UART并将它们写入SPI闪光灯)。下载完成后583应重置,OTP中的全部刻录引导加载程序将跳过高级引导程序和UART,并将用于内部闪存。是的,我认为这样做是可行的。这是我可以看到一个人可以写入583的内部闪光的唯一方法。我想也可以使用flash_programmer(Uart_selection)来执行此操作并发送智能片段发送的相应命令以便操纵583芯片的闪存。
由于MT_dialog