我想请教这方面的专家。我的问题是下一个:我需要连接蓝牙芯片mcu有可能下载一个程序到内部闪存,有时有可能在内部闪存升级程序。
嗨,斯巴达,
您提到的场景有点棘手,因为583的主要功能是从内部闪存引导。583配备了一个OTP引导加载程序,它从主引导程序获取控制,并检查UART引脚和SPI,以及一个称为高级引导加载程序的附加引导加载程序的存在。现在只要我能理解你可以消除从外部单片机内部flash(这需要一点努力自580年你必须确保不使用)和直接燃烧图像内部flash或您可以使用580为了更新flash(更复杂)。目前还不支持这种实现。
由于MT_dialog
有一个想法,需要mt_对话专家的意见。下一步的想法是:如果我使用MCU的硬件SPI,将连接到蓝牙引脚P0_0-P0_3(引导引脚在引导顺序)下载一个智能程序,将BT的SPI(离开P2_0, P2_3, P2_4, P2_9未连接)配置到内部flash和GPIOs作为软件SPI。需要使用软件SPI作为MCU和BT之间的连接,flash和BT之间的内部SPI连接,下载真正的固件到内部flash。有没有可能升级蓝牙的固件?还有一个备注:我可以重新配置引脚P0_0-P0_3作为GPIOs(智能程序)为软件SPI,(在这种情况下我不需要软件连接)。
你将不得不烧录一个先进的引导加载程序到你的SPI,因为583不使用的引脚,你提到,我不明白你的设置或你想说什么,你能不能更详细地描述?为了通过BLE更新您的固件,您可以使用SUOTA配置文件,是的,您可以在运行时重新配置580的引脚。
你好MT-dialog,
斯巴达和我在同一个项目上工作,所以我会试着解释我们遇到的问题和我们想尝试的解决方案。
我们有一款基于LPC4357的产品,采用DA14583芯片。我们使用Wi-Fi来更新/升级我们设备上的固件。我们也想更新蓝牙固件,如果有必要通过Wi-Fi。(我们的用例不允许我们通过SUOTA更新所有设备)。蓝牙软件在DA14583内部flash中。DA14583使用SPI连接到我们的MCU。据我所知,DA14583的启动顺序如下:1.OTP中是否有引导加载程序(是的,它是通过对话框闪过的),跳转到OTP引导加载程序2.在第二个OTP中有引导程序吗,运行这个引导程序3.扫描所有uart连接,如果连接建立,下载程序到系统4.读取内部闪存,如果程序存在,开始运行它5.再次尝试uart
基于这个引导顺序,我们有以下选项,只在必要时更新固件(希望永远不会)1.在OTP中烧录智能引导加载程序,它将使用uart/spi下载新的固件并将其写入flash(程序每次都会启动,如果我们在OTP中出错,我们就有问题了)2.从uart引导智能程序,这将下载新的固件使用uart/spi和写它到flash(更安全,mcu可以总是更新,DA将总是允许新的智能程序)3.写智能程序到flash,这将下载新的固件使用uart/spi和写它到flash
我们需要SPI连接HCI,我们没有uart在设备上留下。我们在MCU上使用的SPI引脚显然也可以用作uart,所以我们想做的是如下所示:
1.通过uart引导数据库并为数据库提供智能程序2.智能程序配置内部闪存和uart传输,MCU发送新的固件3.DA重新启动,现在发现程序在内部闪存和将运行新的固件4.如果固件或智能程序出现故障,我们可以使用uart上传新的智能程序/固件,通过Wi-Fi更新可以在MCU上替换智能程序/固件。
你认为这是解决这个问题的好办法吗?或者这种技术有什么缺点,或者根本不可能?
亲切的问候,
Diederik厕所
嗨diederikloos,
我没有得到你的第三种选择,不管怎样,我同意,也许最好的方法是下载的弗兰克-威廉姆斯uart (OTP的解决方案不给你足够的空间用于测试),关于uart别针,从583年,他将引导装载程序运行后配置针,你可以下载指定的弗兰克-威廉姆斯的别针。之后,下载的程序将擦除闪存和准备下载一个新583年弗兰克-威廉姆斯通过外部单片机和等到项目提供(设置优先UART别针,等待定制特定的头为了开始数据从UART和写作的SPI闪光灯)。下载完成后,583应该重置,OTP中已经刻录好的引导加载程序将跳过高级引导加载程序和UART,并将进入内部flash。是的,我认为这样做是可行的。这是唯一的方法,我可以看到一个人可以写内部闪光的583。我还假设您还可以使用flash_programmer (uart_selection)来实现这一点,并发送智能代码片段发送的相应命令,以操纵583芯片的闪存。
嗨,斯巴达,
您提到的场景有点棘手,因为583的主要功能是从内部闪存引导。583配备了一个OTP引导加载程序,它从主引导程序获取控制,并检查UART引脚和SPI,以及一个称为高级引导加载程序的附加引导加载程序的存在。现在只要我能理解你可以消除从外部单片机内部flash(这需要一点努力自580年你必须确保不使用)和直接燃烧图像内部flash或您可以使用580为了更新flash(更复杂)。目前还不支持这种实现。
由于MT_dialog
有一个想法,需要mt_对话专家的意见。下一步的想法是:如果我使用MCU的硬件SPI,将连接到蓝牙引脚P0_0-P0_3(引导引脚在引导顺序)下载一个智能程序,将BT的SPI(离开P2_0, P2_3, P2_4, P2_9未连接)配置到内部flash和GPIOs作为软件SPI。需要使用软件SPI作为MCU和BT之间的连接,flash和BT之间的内部SPI连接,下载真正的固件到内部flash。有没有可能升级蓝牙的固件?还有一个备注:我可以重新配置引脚P0_0-P0_3作为GPIOs(智能程序)为软件SPI,(在这种情况下我不需要软件连接)。
嗨,斯巴达,
你将不得不烧录一个先进的引导加载程序到你的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.在第二个OTP中有引导程序吗,运行这个引导程序
3.扫描所有uart连接,如果连接建立,下载程序到系统
4.读取内部闪存,如果程序存在,开始运行它
5.再次尝试uart
基于这个引导顺序,我们有以下选项,只在必要时更新固件(希望永远不会)
1.在OTP中烧录智能引导加载程序,它将使用uart/spi下载新的固件并将其写入flash(程序每次都会启动,如果我们在OTP中出错,我们就有问题了)
2.从uart引导智能程序,这将下载新的固件使用uart/spi和写它到flash(更安全,mcu可以总是更新,DA将总是允许新的智能程序)
3.写智能程序到flash,这将下载新的固件使用uart/spi和写它到flash
我们需要SPI连接HCI,我们没有uart在设备上留下。我们在MCU上使用的SPI引脚显然也可以用作uart,所以我们想做的是如下所示:
1.通过uart引导数据库并为数据库提供智能程序
2.智能程序配置内部闪存和uart传输,MCU发送新的固件
3.DA重新启动,现在发现程序在内部闪存和将运行新的固件
4.如果固件或智能程序出现故障,我们可以使用uart上传新的智能程序/固件,通过Wi-Fi更新可以在MCU上替换智能程序/固件。
你认为这是解决这个问题的好办法吗?或者这种技术有什么缺点,或者根本不可能?
亲切的问候,
Diederik厕所
嗨diederikloos,
我没有得到你的第三种选择,不管怎样,我同意,也许最好的方法是下载的弗兰克-威廉姆斯uart (OTP的解决方案不给你足够的空间用于测试),关于uart别针,从583年,他将引导装载程序运行后配置针,你可以下载指定的弗兰克-威廉姆斯的别针。之后,下载的程序将擦除闪存和准备下载一个新583年弗兰克-威廉姆斯通过外部单片机和等到项目提供(设置优先UART别针,等待定制特定的头为了开始数据从UART和写作的SPI闪光灯)。下载完成后,583应该重置,OTP中已经刻录好的引导加载程序将跳过高级引导加载程序和UART,并将进入内部flash。是的,我认为这样做是可行的。这是唯一的方法,我可以看到一个人可以写内部闪光的583。我还假设您还可以使用flash_programmer (uart_selection)来实现这一点,并发送智能代码片段发送的相应命令,以操纵583芯片的闪存。
由于MT_dialog