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

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

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

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

能否请你建议如何继续解决这些问题?我很乐意提供源代码,原理图等,通过电子邮件为好。

谢谢,
凯文

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

嗨Hughesk,

如果试图不睡模式下运行,且设备操作或者取消定义看门狗?也尝试如果该设备是运行在该板上运行上的开发工具包,并检查FW或尝试上的板上的最新的SDK您正在提运行的任何的实施例。您还可以检查(肯定的),其中的代码档通过检查究竟在何处代码摊位和看门狗发生检查NMI_Handler()。

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年7个月前
加入:2015年5月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.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨nzbackpackers.

嗨nzbackpackers.

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

谢谢mt_dialog.

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

Hardfault处理程序:貌似smpc.obj在0x20002298(在0x200002280-链接
这只是发生在电路板上时,DA14580是使用吹风机的手温暖我有;如果冷却器问题消失。销复位或断电复位都不能可靠地恢复,虽然断电复位有时确实恢复。我会重新登陆后SDK5版本。
的.text 0x20002194第0 atts_task.obj(的.text)
.text 0x20002280部分0 smpc.obj(.text)
.text 0x2000236C部分0 SMPC_TASK.OBJ(.text)

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

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

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

谢谢mt_dialog.

nzbackpackers.
离线
最后一次露面:4年7个月前
加入:2015年5月15日17:19
失败看起来是随机的,但

故障出现随机,但确保温暖(热手温度,远低于85度)而不是冷却增加了电力应用失败的频率。有时,设备永远不会到解硬盘,而且代码甚至无法踩踏,而是当然运行调试会话会影响行为。
关于ADC和温度测量你提到引导加载程序使用,我没有看到什么Bootloader的测试和后续行动所采取的任何文档。请问这是否可用?我看可以被测试的几个值:
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.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

该ADC functionallity是ROM引导加载程序的一部分,是不可用的,正如我所说尽管这不应该影响该装置的操作中,由于温度变化影响的次数,引导程序将执行顺序启动过程,而不是数引导加载程序本身。由于设备运行和摊位在某些时候,当代码已经启动媒体链接我不认为这是你的问题。

我不知道如果PAN模块中的内部连接是可用的,但是因为崩溃是随机的,据我了解,你与调试器有时会失去连接也许你应该检查或者您的电源(应该是没有涟漪相当稳定),或有一些问题与PCB的组装,我与松下检查,我会让你知道,当我对自己的要求一些反馈,但对于这个最合乎逻辑的解释是与PCB装配的问题。

谢谢mt_dialog.

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

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

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

对话框empty_peripheral_template软件
从我的测试温度敏感元件是因为由接触不提高周边元件我得到的错误的温度加热模块PAN1740模块。在使用Keil SDK5内置对话框empty_peripheral_template软件v5.22.0.0我得到0xFFFFFFFE从NMI_Handler在0x200004B2可重复的突破,这似乎在DA14580 ROM发起。调用地址被表示为0x40FFFFFC。直到电源循环发生时,简单地发出复位甚至冷却模块后重复该故障。继故障稍微冷却后,电源循环被删除。然而,在对话框empty_peripheral_template软件boot_vectors.s的NMI_Handler()的代码不会调用NMI_HandlerC()等堆栈跟踪在0x81850没有捕获到STATUS_BASE。凯尔表示NMI_Handler称为0xFFFFFFFE这意味着也许是硬故障,虽然HardFault_Handler()似乎没有达到,所以HardFault_HandlerN()没有(在0x81800这个时候)调用,并再次没有信息被复制到STATUS_BASE。DEVELOPMENT_DEBUG被定义,但堆栈信息没有明显保存(NMI所有= 0)上的对话的代码。手动预先写好的测试值都没有改变。除非在前面的帖子指出稍微加热,这个代码工作正常和广播广告包如预期,当加热一次启动成功没有失败观察。

客户的应用程序代码
在客户端的应用程序代码HardFault_HandlerN()达到,但没有真正的调试设备出现功能。
调用堆栈跟踪:
0xFFFFFFFE
nmi_handler位置/值0x200004b2类型void(f)
00000000

development_debug定义,但堆栈信息来自上一个失败;调试模式下的后续失败不会生成任何堆栈跟踪信息。status_base在0x81850的保留RAM中为NMI和0x81800 for HardFault处理程序:
//堆栈跟踪 - 启动失败后的客户端代码
// ==============================================
// 0x81800 0x81850 <== status_base
//
// HardFault NMI寄存器地址
// ========== ========== ======== ==========
// 00000000 0x00000013 R0
// 0x00000000 0x00000000 R0
// 0x00000000 0x00000000 R1
// 0x00000000 0x00000000 R2
// 0x00000000 0x00000000 R3
// 00000000 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
// 00000000 00000000 MMAR 0xE000ED34
// 00000000 00000000 BFAR 0xE000ED38

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨nzbackpackers,

嗨nzbackpackers,

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

谢谢mt_dialog.