我正在尝试实现DSPS 5.150.2在DA14580上的“心跳”特性。
这个想法是有一个特殊的消息,我的主机应用程序将通过UART发送到DSPS并获得来自DSP(也通过UART)的响应而不通过BLE发送数据。
1.实现这种特性的正确方法是什么?2.为了实现“心跳”,我应该定制哪些代码/函数?
任何帮助将不胜感激。
嗨Showserer,
您能否澄清你的意思,以“心跳”特征以及你想要完成的东西?您是否意味着要添加到DSP参考应用程序代码中的心率曲线?
谢谢,PM_Dialog
你好,
“心跳”特性是一种机制(实际上是一种简单的消息交换),用于确保节点、在我的情况下,固件运行在DA14580上,是“活的”。如果它不是“活的”主机软件应发出DA14580通过UART重置和重新编程它(DSP设备以后使用的相同UART)。
大多数情况下dsp工作正常,但有时它会崩溃,然后我需要知道崩溃发生了并重置和重新编程DA14580芯片。
提前致谢。
感谢你的信息。您可以使用调试器热连接在调试模式下运行DSP固件吗?代码是否崩溃了?请尽量澄清发生了什么。可能,你得到了一个nmi或硬盘。此外,您提到有时固件崩溃。你能澄清一下吗?
你好亲爱的支持,
我所经历的dsp崩溃非常罕见,我无法在运行附加的调试器时重现它们。我正在努力的系统始终是可连接的,这就是我需要实现“心跳”功能的原因。
由于我必须通过UART编程DA14580,因此简单的“重启 - on-Fault”不会完成作业。
因为您已经修改了DSPS项目,所以我不知道您在应用程序代码中添加了什么。请注意,DSPS是非常特定应用程序的参考设计。亚博国际官网平台网址你提到“我正在使用的系统应该是随时可以连接的”,能否请你澄清一下?您的意思是,当设备与另一个对等DSPS设备连接时,您希望发布和连接?关于你所做的工作,你能给我提供更多的信息吗?
你好再次,
我还没有使用DSP的修改版本。因此,崩溃实际上与DSPS代码本身相连。
即使DSP应用程序崩溃我的主机应用程序也应该能够知道,即使DSPS应用程序崩溃了为了重置DA14580并通过UART对其重新编程,导致了崩溃。
所以现在我们回到我最初的问题,什么是改变DSPS代码的正确方法实施“始终可连接”?
你必须调试代码并找到DSPS崩溃的地方。如果你运行它与调试器附加,如果问题从主机的一方,固件应该堆栈某处。例如,可能会卡在断言中,或者卡在NMI处理程序中,或者卡在硬错误处理程序中。在代码崩溃之前,哪些回调函数会被触发?您可以添加一些断点并逐步调试它。调试代码的最佳实践是优化级别为0 (-O0)。因此,从Keil环境导航到“目标选项”的“C/ c++”标签,并优化到0级(-O0)。
谢谢你的彻底解释。我已经尝试多次调试DSP,并在之前描述的,崩溃是非常罕见的(但他们仍然存在),我无法查明问题使用调试器。
它可能需要一天,直到出现问题,而我有几个系统工作的调试方法是最好的,但对我来说不现实。
所以,我决定尝试和改变DSPS代码,以便能够在带外方式与DSPS通信,以便能够通过UART重置和重新编程芯片,当它无响应时。
您可以帮助我的信息,在DSPS代码上实现这样一个功能的最佳/正确的方法。
您能否描述你关注的程序?对不起,但我很困惑你的描述,你的问题非常通用。让我问你一些问题,以便清除这些问题。
由于您的问题非常通用,罕见,为我提供一些投入是非常有帮助的,以便理解出错了。
感谢您的回复。
1.我只使用“sps_device”,我在Murata模块上运行。2.“主机”应用程序在STM32L4上运行,并通过UART编程Murata(使用DSP设备代码),并通过相同的UART与其通信。3.有一个“客户端”应用程序,它在iPad上运行,它通过Murata模块(DSP设备)与STM32L4上运行的“主机”应用程序通信。4.“SPS_DEVICE”配置为在没有HW(不支持的)或SW(不适用)流量控制的情况下工作。5.有时,非常罕见(也许每天一次)在Murata模块上运行的“SPS_DEVICE”可能是由于您描述的原因之一(断言或某种崩溃)之一而无法连接。6.当(5)发生时,我可以通过其他UART(未连接到Murata模块)连接到STM32L4上运行的“主机”应用程序,并看到它仍在运行,但通过BLE发送的消息已停止到达(在两个方向上).7.我无法复制问题,而连接到一个调试器Murata模块。8.为了准备一个解决方法解决方案,我决定在STM32L4上运行的“主机”应用程序和“SPS_DEVICE”在MURATA模块上运行的“带外”通信(“心跳”),所以我可以重新编程Murata模块变得无响应。9.我的“主机”应用程序与Murata的唯一通信是通过UART(它也用于编程“sps_device”)。10.请就可能的代码自定义或源文件提供建议,以便更改以实现所描述的解决方法。
你有什么建议吗?
首先,如果你不使用流量控制,设备进入延长睡眠模式,它将无法醒来。因此,如果你不想要流量控制,你将不得不移除延长睡眠模式,芯片将只在活动模式下工作。关于您将描述的解决方案,我们从未使用过,感谢您让我们知道。如果我能正确理解,主机必须发送一些消息通过UART到Murata模块?主机运行哪个应用程序?我认为我连接的DSPS移动应用程序与Murata模块,而不是与STM32L4。
谢谢,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(Host) -> UART -> Murata(DSPS) -> BLE -> iPad(BLE App)
3.等待有关可能的代码自定义或源文件的重新组件,以便实现解决方法。
嗨Showserer,
您能否澄清你的意思,以“心跳”特征以及你想要完成的东西?您是否意味着要添加到DSP参考应用程序代码中的心率曲线?
谢谢,PM_Dialog
你好,
“心跳”特性是一种机制(实际上是一种简单的消息交换),用于确保节点、
在我的情况下,固件运行在DA14580上,是“活的”。如果它不是“活的”主机软件应发出
DA14580通过UART重置和重新编程它(DSP设备以后使用的相同UART)。
大多数情况下dsp工作正常,但有时它会崩溃,然后我需要知道崩溃发生了
并重置和重新编程DA14580芯片。
提前致谢。
嗨Showserer,
感谢你的信息。您可以使用调试器热连接在调试模式下运行DSP固件吗?代码是否崩溃了?请尽量澄清发生了什么。可能,你得到了一个nmi或硬盘。此外,您提到有时固件崩溃。你能澄清一下吗?
谢谢,PM_Dialog
你好亲爱的支持,
我所经历的dsp崩溃非常罕见,我无法在运行附加的调试器时重现它们。
我正在努力的系统始终是可连接的,这就是我需要实现“心跳”功能的原因。
由于我必须通过UART编程DA14580,因此简单的“重启 - on-Fault”不会完成作业。
提前致谢。
嗨Showserer,
因为您已经修改了DSPS项目,所以我不知道您在应用程序代码中添加了什么。请注意,DSPS是非常特定应用程序的参考设计。亚博国际官网平台网址你提到“我正在使用的系统应该是随时可以连接的”,能否请你澄清一下?您的意思是,当设备与另一个对等DSPS设备连接时,您希望发布和连接?关于你所做的工作,你能给我提供更多的信息吗?
谢谢,PM_Dialog
你好再次,
我还没有使用DSP的修改版本。因此,崩溃实际上与DSPS代码本身相连。
即使DSP应用程序崩溃我的主机应用程序也应该能够知道,即使DSPS应用程序崩溃了
为了重置DA14580并通过UART对其重新编程,导致了崩溃。
所以现在我们回到我最初的问题,什么是改变DSPS代码的正确方法
实施“始终可连接”?
提前致谢。
嗨Showserer,
你必须调试代码并找到DSPS崩溃的地方。如果你运行它与调试器附加,如果问题从主机的一方,固件应该堆栈某处。例如,可能会卡在断言中,或者卡在NMI处理程序中,或者卡在硬错误处理程序中。在代码崩溃之前,哪些回调函数会被触发?您可以添加一些断点并逐步调试它。调试代码的最佳实践是优化级别为0 (-O0)。因此,从Keil环境导航到“目标选项”的“C/ c++”标签,并优化到0级(-O0)。
谢谢,PM_Dialog
你好亲爱的支持,
谢谢你的彻底解释。我已经尝试多次调试DSP,并在之前描述的,
崩溃是非常罕见的(但他们仍然存在),我无法查明问题使用调试器。
它可能需要一天,直到出现问题,而我有几个系统工作的调试方法是最好的,
但对我来说不现实。
所以,我决定尝试和改变DSPS代码,以便能够在带外方式与DSPS通信,以便
能够通过UART重置和重新编程芯片,当它无响应时。
您可以帮助我的信息,在DSPS代码上实现这样一个功能的最佳/正确的方法。
提前致谢。
嗨Showserer,
您能否描述你关注的程序?对不起,但我很困惑你的描述,你的问题非常通用。让我问你一些问题,以便清除这些问题。
由于您的问题非常通用,罕见,为我提供一些投入是非常有帮助的,以便理解出错了。
谢谢,PM_Dialog
你好亲爱的支持,
感谢您的回复。
1.我只使用“sps_device”,我在Murata模块上运行。
2.“主机”应用程序在STM32L4上运行,并通过UART编程Murata(使用DSP设备代码),并通过相同的UART与其通信。
3.有一个“客户端”应用程序,它在iPad上运行,它通过Murata模块(DSP设备)与STM32L4上运行的“主机”应用程序通信。
4.“SPS_DEVICE”配置为在没有HW(不支持的)或SW(不适用)流量控制的情况下工作。
5.有时,非常罕见(也许每天一次)在Murata模块上运行的“SPS_DEVICE”可能是由于您描述的原因之一(断言或某种崩溃)之一而无法连接。
6.当(5)发生时,我可以通过其他UART(未连接到Murata模块)连接到STM32L4上运行的“主机”应用程序,并看到它仍在运行,但通过BLE发送的消息已停止到达(在两个方向上).
7.我无法复制问题,而连接到一个调试器Murata模块。
8.为了准备一个解决方法解决方案,我决定在STM32L4上运行的“主机”应用程序和“SPS_DEVICE”在MURATA模块上运行的“带外”通信(“心跳”),所以我可以重新编程Murata模块变得无响应。
9.我的“主机”应用程序与Murata的唯一通信是通过UART(它也用于编程“sps_device”)。
10.请就可能的代码自定义或源文件提供建议,以便更改以实现所描述的解决方法。
提前致谢。
你好亲爱的支持,
你有什么建议吗?
提前致谢。
嗨Showserer,
首先,如果你不使用流量控制,设备进入延长睡眠模式,它将无法醒来。因此,如果你不想要流量控制,你将不得不移除延长睡眠模式,芯片将只在活动模式下工作。关于您将描述的解决方案,我们从未使用过,感谢您让我们知道。如果我能正确理解,主机必须发送一些消息通过UART到Murata模块?主机运行哪个应用程序?我认为我连接的DSPS移动应用程序与Murata模块,而不是与STM32L4。
谢谢,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(Host) -> UART -> Murata(DSPS) -> BLE -> iPad(BLE App)
3.等待有关可能的代码自定义或源文件的重新组件,以便实现解决方法。
提前致谢。