我正在尝试为DA14580上的DSPS 5.150.2实施“心跳”功能。
这个想法是拥有一个特殊的消息,我的主机应用程序将通过UART发送到DSP并获得不通过BLE传输数据的DSPS(也通过UART)的响应。
1.实施此类功能的正确方法是什么?2.我应该自定义哪种代码/函数以实现“心跳”?
任何帮助都将非常感激。
嗨shpasser,
你能解释一下你的“心跳”特征是什么意思,你想要完成什么?你的意思是将心率配置文件添加到DSPS参考应用程序代码中吗?
谢谢,PM_DIALOG.
你好,
“心跳”功能是使用的机制(实际上是一个简单的消息交换),以便确保节点,在我的情况下是在DA14580上运行的固件,是“Alive”。如果它不是“活着”的主机软件将发出DA14580的重置和重新编程它通过UART(相同的UART稍后被DSPS设备使用)。
大多数时间DSP工作都很好,但有时它会崩溃,然后我需要知道崩溃发生了并对DA14580芯片进行复位和重新编程。
提前谢谢。
谢谢你的信息。您可以在调试器热连接的调试模式下运行dsp固件吗?代码会在什么地方崩溃吗?请解释清楚发生了什么事。可能是NMI或硬故障。另外,你提到固件有时会崩溃。你能解释一下吗?
亲爱的支持,
DSP崩溃我经历过非常罕见,我无法在使用调试器附加的同时再现它们。我正在工作的系统应该随时是可连接的,这就是为什么我需要实现“心跳”特性的原因。
因为我必须通过UART对DA14580进行编程,所以简单的“故障重启”不能完成这项工作。
由于您已修改DSPS项目,因此我不知道您已添加到应用程序代码中的内容。请注意,DSP是非常特定应用的参考设计。亚博国际官网平台网址你提到“我正在努力的系统应该在所有时间可以连接”,你能澄清吗?您是否意味着您希望在设备与其他对等DSP设备连接时进行宣传和可连接?您能否向我提供更多关于您所做的内容的投入?
再次问好,
我还没有使用DSPS的修改版本。所以,崩溃实际上是连接到DSPS代码本身。
对于我来说,“随时可连接”就是即使DSPS应用程序崩溃了,我的主机应用程序也应该能够知道崩溃发生了崩溃,以便重置DA14580并通过UART重新编程它。
所以现在我们回到了我的原始问题,是什么是改变DSPS代码的正确方法实现“随时可连接”?
您必须调试代码并找到DSP崩溃的位置。如果使用调试器运行它,并且如果问题来自主机侧,则固件应该堆叠某处。例如,可能会陷入断言或进入NMI处理程序或硬盘处理程序。在代码崩溃之前触发哪个调用回函数?您可以通过步骤添加一些断点并调试它。调试代码的最佳做法是具有优化级-0(-O0)。因此,从Keil环境中导航到“C / C ++”选项卡的“C / C ++”选项卡,并将优化为Level-0(-O0)。
谢谢你详尽的解释。我已经试着调试了几次dsp,正如我之前描述的,崩溃非常罕见(但仍然存在),我无法使用调试器查明问题。
问题出现前可能需要一天时间,虽然我有几个系统在工作,但调试的方法是最好的,但在我的情况下并不实用。
所以,我决定尝试改变DSPS代码,以便能够与DSP通信,以便是能够通过UART重置和重新编程芯片时,它变得无响应。
您能否在DSPS代码之上向我提供有关实现此类功能的最佳/正确方法的信息。
你能描述一下你将遵循的程序吗?很抱歉,你的描述让我有点困惑,你的问题太笼统了。为了把事情弄清楚,我来问你几个问题。
因为你的问题是非常普遍和罕见的,它将非常有帮助提供我一些输入,以便理解什么是错误的。
谢谢你的回复。
1.我只使用“sps_device”,我在Murata模块上运行。2.“主机”应用程序运行在STM32L4和程序Murata(与dsp设备代码)通过UART,并通过同一个UART与它通信。3.有一个“客户端”应用程序运行在iPad上,通过Murata模块(DSPS设备)与我的“主机”应用程序运行在STM32L4上通信。4.“sps_device”被配置为在没有HW(不支持)或SW(不适用)流控制的情况下工作。5.有时,非常罕见(可能一天一次),运行在Murata模块上的“sps_device”可能由于您描述的原因之一(断言或某种类型的崩溃)而无法连接。6.当(5)发生时,我可以连接到我的“主机”应用程序运行在STM32L4上通过额外的UART(没有连接到Murata模块),并看到它仍然运行,但通过BLE发送的消息停止到达(在两个方向)。7.我无法在与Murata模块连接到Murata模块时重现问题。8.为了准备一个解决方案,我决定在运行在STM32L4上的“主机”应用程序和运行在Murata模块上的“sps_device”之间实现“带外”通信(“心跳”),所以我可以在Murata模块变得无响应时重新编程。9.唯一的通信我的“主机”应用程序与Murata通过UART(它也用于编程“SPS_DEVICE”)。10.为了实现所描述的解决方案,请提供关于可能的代码定制或源文件更改的建议。
你对我有什么建议吗?
首先,如果您不使用流量控制并且设备延长睡眠模式,则无法唤醒。因此,如果您希望没有流量控制,则必须删除扩展睡眠模式,芯片仅在活动模式下运行。关于您将描述的解决方法,我们从未使用过它,并且谢谢您让我们知道。如果我能够正确理解,主机必须在UART到Murata模块发送一些消息?主机运行哪个应用程序?我想我与Murata模块连接而不是STM32L4的DSP移动应用程序。
1.为了避免睡觉,我更换了
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_ON;
与
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
在user_config.h, 这样对吗?
2.通信路径如下:STM32L4(主机) - > UART - > Murata(DSPS) - > BLE - > iPad(BLE App)
3.等待您对可能的代码定制或源文件进行更改提出建议,以实现解决方案。
嗨shpasser,
你能解释一下你的“心跳”特征是什么意思,你想要完成什么?你的意思是将心率配置文件添加到DSPS参考应用程序代码中吗?
谢谢,PM_DIALOG.
你好,
“心跳”功能是使用的机制(实际上是一个简单的消息交换),以便确保节点,
在我的情况下是在DA14580上运行的固件,是“Alive”。如果它不是“活着”的主机软件将发出
DA14580的重置和重新编程它通过UART(相同的UART稍后被DSPS设备使用)。
大多数时间DSP工作都很好,但有时它会崩溃,然后我需要知道崩溃发生了
并对DA14580芯片进行复位和重新编程。
提前谢谢。
嗨shpasser,
谢谢你的信息。您可以在调试器热连接的调试模式下运行dsp固件吗?代码会在什么地方崩溃吗?请解释清楚发生了什么事。可能是NMI或硬故障。另外,你提到固件有时会崩溃。你能解释一下吗?
谢谢,PM_DIALOG.
亲爱的支持,
DSP崩溃我经历过非常罕见,我无法在使用调试器附加的同时再现它们。
我正在工作的系统应该随时是可连接的,这就是为什么我需要实现“心跳”特性的原因。
因为我必须通过UART对DA14580进行编程,所以简单的“故障重启”不能完成这项工作。
提前谢谢。
嗨shpasser,
由于您已修改DSPS项目,因此我不知道您已添加到应用程序代码中的内容。请注意,DSP是非常特定应用的参考设计。亚博国际官网平台网址你提到“我正在努力的系统应该在所有时间可以连接”,你能澄清吗?您是否意味着您希望在设备与其他对等DSP设备连接时进行宣传和可连接?您能否向我提供更多关于您所做的内容的投入?
谢谢,PM_DIALOG.
再次问好,
我还没有使用DSPS的修改版本。所以,崩溃实际上是连接到DSPS代码本身。
对于我来说,“随时可连接”就是即使DSPS应用程序崩溃了,我的主机应用程序也应该能够知道
崩溃发生了崩溃,以便重置DA14580并通过UART重新编程它。
所以现在我们回到了我的原始问题,是什么是改变DSPS代码的正确方法
实现“随时可连接”?
提前谢谢。
嗨shpasser,
您必须调试代码并找到DSP崩溃的位置。如果使用调试器运行它,并且如果问题来自主机侧,则固件应该堆叠某处。例如,可能会陷入断言或进入NMI处理程序或硬盘处理程序。在代码崩溃之前触发哪个调用回函数?您可以通过步骤添加一些断点并调试它。调试代码的最佳做法是具有优化级-0(-O0)。因此,从Keil环境中导航到“C / C ++”选项卡的“C / C ++”选项卡,并将优化为Level-0(-O0)。
谢谢,PM_DIALOG.
亲爱的支持,
谢谢你详尽的解释。我已经试着调试了几次dsp,正如我之前描述的,
崩溃非常罕见(但仍然存在),我无法使用调试器查明问题。
问题出现前可能需要一天时间,虽然我有几个系统在工作,但调试的方法是最好的,
但在我的情况下并不实用。
所以,我决定尝试改变DSPS代码,以便能够与DSP通信,以便是
能够通过UART重置和重新编程芯片时,它变得无响应。
您能否在DSPS代码之上向我提供有关实现此类功能的最佳/正确方法的信息。
提前谢谢。
嗨shpasser,
你能描述一下你将遵循的程序吗?很抱歉,你的描述让我有点困惑,你的问题太笼统了。为了把事情弄清楚,我来问你几个问题。
因为你的问题是非常普遍和罕见的,它将非常有帮助提供我一些输入,以便理解什么是错误的。
谢谢,PM_DIALOG.
亲爱的支持,
谢谢你的回复。
1.我只使用“sps_device”,我在Murata模块上运行。
2.“主机”应用程序运行在STM32L4和程序Murata(与dsp设备代码)通过UART,并通过同一个UART与它通信。
3.有一个“客户端”应用程序运行在iPad上,通过Murata模块(DSPS设备)与我的“主机”应用程序运行在STM32L4上通信。
4.“sps_device”被配置为在没有HW(不支持)或SW(不适用)流控制的情况下工作。
5.有时,非常罕见(可能一天一次),运行在Murata模块上的“sps_device”可能由于您描述的原因之一(断言或某种类型的崩溃)而无法连接。
6.当(5)发生时,我可以连接到我的“主机”应用程序运行在STM32L4上通过额外的UART(没有连接到Murata模块),并看到它仍然运行,但通过BLE发送的消息停止到达(在两个方向)。
7.我无法在与Murata模块连接到Murata模块时重现问题。
8.为了准备一个解决方案,我决定在运行在STM32L4上的“主机”应用程序和运行在Murata模块上的“sps_device”之间实现“带外”通信(“心跳”),所以我可以在Murata模块变得无响应时重新编程。
9.唯一的通信我的“主机”应用程序与Murata通过UART(它也用于编程“SPS_DEVICE”)。
10.为了实现所描述的解决方案,请提供关于可能的代码定制或源文件更改的建议。
提前谢谢。
亲爱的支持,
你对我有什么建议吗?
提前谢谢。
嗨shpasser,
首先,如果您不使用流量控制并且设备延长睡眠模式,则无法唤醒。因此,如果您希望没有流量控制,则必须删除扩展睡眠模式,芯片仅在活动模式下运行。关于您将描述的解决方法,我们从未使用过它,并且谢谢您让我们知道。如果我能够正确理解,主机必须在UART到Murata模块发送一些消息?主机运行哪个应用程序?我想我与Murata模块连接而不是STM32L4的DSP移动应用程序。
谢谢,PM_DIALOG.
亲爱的支持,
1.为了避免睡觉,我更换了
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_ON;
与
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
在user_config.h, 这样对吗?
2.通信路径如下:STM32L4(主机) - > UART - > Murata(DSPS) - > BLE - > iPad(BLE App)
3.等待您对可能的代码定制或源文件进行更改提出建议,以实现解决方案。
提前谢谢。