DA1468x
2年前
发布的gbmej0点 7回复你好,
我在函数中得到了assertplatform_reset_func ()
:
# ifdef RAM_BUILD
空白platform_reset_func (uint32_t错误)
{
reset_reason =错误;
ASSERT_ERROR (0);
}
你在论坛上说这个函数被调用时的函数platform_reset ()
是由SW调用的。然而,我从来没有调用这个函数,我在SDK中没有看到调用者。你能给我解释一下这个函数是如何调用的吗?我没有读错误代码,但即使有错误代码的值,我不知道我能做什么,因为我不知道调用者…
非常感谢。
gbmej
2年前
谢谢你的回答。
我有另一个CPU,它驱动680,可以用680的复位引脚复位。但是在大多数情况下,函数platform_reset_func()不会被调用,也不会抛出assert。680刚刚重启。
680也可以在错误(硬故障,freertos错误,如堆栈溢出等)时重新启动自身。但是在这种情况下,在重新启动之前,我记录了重新启动状态,然后让680重新设置自己(调用hw_cpm_reboot_system()或使用watchdog),我从来没有看到我的日志。
就像你说的,我有重启680的东西,但我不知道是什么…
就像我之前说的,我还没有读到错误代码(680被放在一个黑盒子里),但即使我能读到它,我也不知道哪些是可用的错误代码,我可以在哪里玩,以防止重新启动。
谢谢,gbmej
2年前
嗨gbmej,
重置后,如果没有使用__RETAINED_UNINIT属性,日志中的数据将不会被保留。该属性将在680重新启动和系统初始化再次开始后将您的数据保存在保留RAM中,而不进行初始化。你能在调试模式下运行你的代码并检查代码崩溃的地方吗?你启用或禁用看门狗了吗?请尝试运行您的固件与启用和禁用看门狗,并让我知道你的代码卡在哪里。另外,你能说明一下SDK的哪个例子和你使用的是哪个板吗?您是否已经开发了带有DA14680芯片的定制板或在我们的开发套件中运行您的固件?如果你有一个自定义板,请检查电源线和一个可能的原因ii为什么你得到一个BOD复位。
谢谢,PM_Dialog
2年前
你好,
我有一个定制板,在一个黑盒子(没有jtag,没有串行)。我已经在重新启动之前记录了这个断言。我不能在开发板上或在带有jtag的板上复制。我唯一能看到的是这个断言已经被抛出,我不知道为什么。此外,这是非常罕见的断言,所以它是非常困难的,我调查它。
—关闭看门狗。
- - - - - - SDK 1.0.8
我会按你说的检查电源线。
谢谢你的帮助
gbmej
2年前
你好,
断言错误代码为RESET_MEM_ALLOC_FAIL
.哪个代码可以抛出这个错误?我必须增加哪个堆/堆栈/范围?
谢谢,
gbmej
注:在我的项目中,malloc
连接到FreeRTOS malloc;我已经启用了FreeRTOS分配错误。我在FreeRTOS上没有错误(回调未被调用),但我有平台重置RESET_MEM_ALLOC_FAIL
错误代码…
2年前
嗨gbmej,
Τhe platform_reset_func()是从platform_reset()调用的,它是一个由ROM代码实现的函数。产生这个断言的最可能的原因是内存不足,或者有什么东西触发了680本身的复位引脚。你的描述太笼统了,能否请你说明一下你想要达到的目标。为了给你提供正确的指导方针,这将是非常有帮助的。
谢谢,PM_Dialog