设备挂起并由看门狗在RWIP_INIT中重置

11个帖子/ 0新
最后一篇
休斯克
离线
最后一次露面:2年8个月前
加入:2014-04-26 02:56
设备挂起并由看门狗在RWIP_INIT中重置

我有4个电路板,在SPI闪光启动后不久被看门狗定时器重置。
这些板使用Pan1740模块。
通过在整个代码中添加GPIO切换,我确定了软件从呼叫到rwip_init返回。

我在之前的一篇文章中看到,由于硬件(接地)问题,其他人也有这个问题。由于我们使用的是PAN1740,这种情况不太可能发生,但仍然是可能的。这是复杂的事实,这个设计已经在以前的板运行,但这批是由一个新的供应商(对我们来说是新的,他们是一个建立的,好的制造商)。

您能推荐如何继续解决这些问题吗?我很乐意通过电子邮件提供源代码,原理图等。

谢谢,
凯文

设备:
mt_dialog.
离线
最后一次露面:5个月1个星期前
职员
加入:2015-06-08 11:34
嗨Hughesk,

嗨Hughesk,

如果您尝试在没有睡眠模式的情况下运行,那么设备是否可操作或删除看门狗?另外尝试在DEV套件上运行FW,并检查设备是否在该板上运行,或者尝试在您提到的电路板上的最近SDK上运行任何示例。您还可以通过检查代码丢失和看门狗的位置来检查(肯定)通过检查nmi_handler()来检查代码停止。

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年5个月前
加入:2015-05-15 17:19
我也在看这个

我也在看这个问题,我看到改变的行为可能受到一些微妙的硬件时机的影响。
禁用睡眠不会改变行为,也不使用SDK 5.0.4。SPS配置文件示例DA1458x_DSPS_V_5.150.2只有TX&RX端口引脚更改呈现相同的行为,有时硬故障有时也可以。
由于CFG_HOST和因此BLE_HOST_PRESENT都定义,因此RWIP_INIT()不可用于踩到RWIP_INIT()调用RWIP_INIT(),而不是源代码中的版本。尝试跟踪ROM代码的异常捕获并不是真正可能的,除非堆栈源可用。

mt_dialog.
离线
最后一次露面:5个月1个星期前
职员
加入:2015-06-08 11:34
嗨nzbackpackers.

嗨nzbackpackers.

无论您使用哪个SDK版本,设备都在硬脱机或NMI(看门狗)中停止?如果设备正确执行代码或不与任何特定事件无关?您可以看到从中断的PC最终在RWIP_INIT()对应的ROM地址中,无论您使用哪个SDK(您都可以在硬符中查看PC或NMI,并将地址与地图文件匹配)?

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年5个月前
加入:2015-05-15 17:19
HardFault处理程序:看起来像

hardfault处理程序:看起来像smpc.obj 0x20002298(链接在0x200002280-
只有在电路板上发生,当DA14580使用吹磨机时,我有机会。如果较冷,问题会消失。销重置或断电复位两者都不可靠地恢复,尽管有时断电复位会恢复。我将重新访问稍后的SDK5版本。
.text 0x20002194第0节第0个atts_task.obj(.text)
.text 0x20002280部分0 smpc.obj(.text)
.text 0x2000236C部分0 SMPC_TASK.OBJ(.text)

mt_dialog.
离线
最后一次露面:5个月1个星期前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

所以你必须预热它以便设备有这样的行为,关于复位和设备不能正确地恢复可能与事实有关,引导加载程序是温度依赖于一个错误的测量ADC在引导期间,但是这会导致单个或多个引导加载程序的执行而不是执行失败,当设备启动失败时,它在引导期间停止或它总是由于Hardfault而停止?

事实上,在设备上方有一个吹风机会影响太多的参数,580的建议操作条件是在85摄氏度,但温度会影响晶体(减少稳定时间)。请给它与最新的SDK,但你应该检查设备达到的确切温度,你开始有这些问题,烤箱将是一个更合适的温度测试比电吹风。

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年5个月前
加入:2015-05-15 17:19
失败出现随机,但

故障出现随机,但确保温暖(热手温度,远低于85度)而不是冷却增加了电力应用失败的频率。有时,设备永远不会到解硬盘,而且代码甚至无法踩踏,而是当然运行调试会话会影响行为。
关于ADC和温度测量,您提及引导加载程序使用,我没有看到引导加载程序测试和随后采取的操作的任何文档。那会有吗?我看到可能正在测试的几个值:
DA14580 ADC
单一结束模式
=================.
0000-0011 = P0 [0] .. PO [3]
0100 = AVS.
0101 = VDD_REF.
0110 = VDD_RTT.
0111 = vbat3v.
1000 = VDCDC.
1001 = vbat1v.
(其他人保留)
差异模式
=================.
0000 = p0 [0] vs p0 [1]
else = p0 [2] vs p0 [3]

我也无法在Pan1740 DA14580模块中找到电源连接细节;你知道他们是否可用?松下数据表我没有提供细节。图9和图12中的图12中的12在DA14580数据表中暗示VDCDC-VDCDC_RF连接(ADC&RF)是外部平滑电容的外部,但这些隐藏在模块内。
我正在使用最新的SDK测试,到目前为止,我在此处看到出版物的故障:
nvic_clearpendingirq.
ble_rxdesccnt.getf.

我将继续测试 - 感谢您对此问题的帮助。

mt_dialog.
离线
最后一次露面:5个月1个星期前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

ADC功能属性是ROM引导程序的一部分,并且不可用,正如我所说的,因为我说不应该影响设备的操作,因为温度的变化会影响引导加载程序将执行顺序引导过程的次数而不是引导加载程序本身。由于设备在某些时候运行和摊位,当代码已启动时,我不认为这是您的问题。

我不知道是否有PAN模块中的内部连接可用,但由于崩溃是随机的,并且据我所知,您有时会丢失与调试器的连接,也许您应该检查电源(不应该相当稳定,没有涟漪)或者在PCB的组装中存在一些问题,我正在使用Panasonic检查,我会告诉您关于您的请求的一些反馈,但最逻辑的解释是PCB组件的问题。

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年5个月前
加入:2015-05-15 17:19
我终于能够

我终于能够在SDK5上使用对话框emply_peripheral_template软件重现问题;当冷却时,它运行正常,但是当热量热(小于65度)时,代码失败。代码仅在冷却和重置后恢复。我正在使用北欧部分嗅出数据包。我会尝试捕获失败的失速点,目前看起来像一个nmi。
电力很干净,我认为没有问题;该供应是甲酸甲特特LDO,在输入和输出上清洁。
一旦运行温度不是问题,即使在相当热 - 至少65度。

nzbackpackers.
离线
最后一次露面:4年5个月前
加入:2015-05-15 17:19
对话框extent_peripheral.

对话框empty_peripheral_template软件
从我的测试,温度敏感部件是Pan1740模块,因为通过接触加热模块而不提高周围部件的温度,我得到了故障。在“使用KEIL SDK5 V5.22.0.0中构建的”Office_Peripheral_Template软件“上,我从0x200004B2的NMI_Handler获得了一个可重复的中断,似乎源于DA14580 ROM。调用地址表示为0x40FFFFC。在发生电源周期之前,即使在冷却模块后,即使在冷却模块后,也会简单地发出重置。在稍微冷却后的电源循环后,故障被移除。但是在Office_Peripheral_Template软件对话框中,Boot_vectors中的NMI_Handler()代码不会调用NMI_Handlerc(),因此在0x81850中未捕获Status_Base中的堆栈跟踪。keil表示名为0xfffffffe的nmi_handler,暗示可能是一个硬故障,尽管Hardfault_handler()似乎没有达到,所以尚未调用solutfault_handlern(),并且再次没有将信息复制到status_base中(在0x81800处)。development_debug是定义的,但堆栈信息在对话框代码上显然不会被保存(nmi all = 0)。手动预先写的测试值不会改变。除非在早期帖子中注明的稍微加热,否则此代码正常工作并按预期广播广告数据包,在加热一次成功启动时没有观察到的故障。

客户的应用程序代码
在客户端的应用程序代码上,达到HardFault_Handlern(),但没有真正的调试设施看起来功能。
调用堆栈跟踪:
0xfffffffe.
nmi_handler位置/值0x200004b2类型void(f)
0x00000000.

development_debug定义,但堆栈信息来自上一个失败;调试模式下的后续失败不会生成任何堆栈跟踪信息。status_base在0x81850的保留RAM中为NMI和0x81800 for HardFault处理程序:
//堆栈跟踪 - 启动失败后的客户端代码
// ==============================================
// 0x81800 0x81850 <== status_base
//
// HardFault NMI寄存器地址
// ========== ========== ======== ==========
// 0x00000000 0x00000013 R0
// 0x00000000 0x00000000 R0
// 0x00000000 0x00000000 R1
// 0x00000000 0x00000000 R2
// 0x00000000 0x00000000 R3
// 0x00000000 0x00010100 R12
// 0x00000000 0x00000000 LR
// 0x00000000 0x01000000 PC
// 0x00000000 0x00000000 PSR
//
// 0x00000000 0x00000000 cfsr 0xe000ed28
// 0x00000000 0x00000000 HFSR 0xe000ed2c
// 0x00000000 0x00000000 DFSR 0xE000ED30
// 0x00000000 0x00000000 AFSR 0xe000ed3c
// 0x00000000 0x00000000 mmar 0xe000ed34
// 0x00000000 0x00000000 bfar 0xe000ed38

mt_dialog.
离线
最后一次露面:5个月1个星期前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

由于它在低于85的温度下,设备是非功能,因此您确定模块电源没有问题,则PCB的组装是应检查的东西(在设备上提升时出现问题可能由于焊接不足而发生)。只要没有看门狗的时间,虽然模板具有定义的看门狗,但是不应该发生nmi_handler(),尽管模板定义了看门狗,但不确定您是否在没有看门狗的情况下尝试过。我不认为你在遇到的情况下,只要我可以告诉你没有任何一致性的错误,你就可以为SDK做任何事情,并且还提供给SDK的例子超过测试。此外,我想你在多个设备中测试这个问题。

谢谢mt_dialog.