跳到主要内容

平台\u重置\u func调用方

两年前

平台\u重置\u func调用方

过帐人gbmej0分 7答复
0票以上

你好,
我在函数中有断言平台\u reset\u func():

#ifdef RAM\u构建
void platform\u reset\u func(uint32\u t错误)
{
复位\u原因=错误;
断言错误(0);
}

你在论坛上说这个函数是在函数调用时调用的平台\u重置()由软件调用。但是,我从未调用这个函数,而且在SDK中没有调用程序。你能解释一下这个函数是怎么调用的吗?我没有读过错误代码,但即使有错误代码值,我也不知道我能做什么,因为我不认识调用方。。。

谢谢。
gbmej

两年前

PM\U对话框

嗨,gbmej,

Τ平台reset_ufunc(),它是从平台u reset()调用的,是一个由ROM代码实现的函数。获得此断言的最可能原因是内存不足,或者是某些东西触发680本身的重置pin。你能澄清一下你想完成什么吗,因为你的描述很通用。这将是非常有帮助的,以便为您提供正确的指导方针。

谢谢,下午好

两年前

gbmej 0分

谢谢你的回答。

我有另一个CPU,它驱动680,它可以重置它使用680的复位引脚。但是在大多数情况下,函数平台uReset_uFunc()从未被调用,也不会抛出assert。680刚刚重新启动。
680在错误时也可以重新启动自己(硬故障、自由操作系统错误,如堆栈溢出等)。但是在这种情况下重新启动之前,我先记录重新启动状态,然后让680重新设置自己(调用hw\cpm\u reboot\u system()或使用看门狗),而我从未看到日志。
正如你所说,我有一些东西可以重新引导680,但我不知道。。。
正如我之前所说,我没有读过错误代码(680放在黑匣子里),但即使我能读到它,我也不知道哪些是可用的错误代码,我可以在哪里玩以防止重新启动。

谢谢,gbmej

两年前

PM\U对话框

嗨,gbmej,

重置后,如果您不使用保留的\u unnit属性,则日志中的数据将不会保留。此属性将使您的数据在680重新启动后未初始化到保留RAM中,系统初始化将再次启动。您能在调试模式下运行代码并检查代码崩溃的位置吗?您是否启用或禁用了看门狗?请尝试使用启用和禁用的看门狗运行固件,并让我知道您的代码卡在哪里。另外,您能否澄清SDK的哪个示例以及您使用的是哪个板?您是否开发了带有DA14680芯片的自定义板,或在我们的开发工具包中运行固件?如果您有自定义板,请检查电源线和可能的原因ii,为什么您要获得BOD复位。

谢谢,下午好

两年前

gbmej 0分

你好,

我有一个定制的板,在黑匣子里(没有jtag,没有序列号)。在重新启动之前,我已经记录了这个断言。我无法在开发板上或在带有jtag的板上复制。我唯一能看到的是,这个断言已经被抛出,我不知道为什么。此外,这种说法非常罕见,因此我很难对其进行调查。
-看门狗已禁用。
-SDK 1.0.8
我会按照你说的检查电源线。
谢谢你的帮助

gbmej

两年前

PM\U对话框

嗨,gbmej,

请在启用看门狗的情况下运行固件。另外,请检查您定制板的电源线,并告知我结果。

谢谢,下午好

两年前

gbmej 0分

你好,
断言错误代码为重置\u MEM\u ALLOC\u失败. 哪个代码的和平可以抛出这个错误?我必须扩展哪些堆/堆栈/范围?
谢谢,
gbmej

注:在我的项目中,马洛克连接到FreeRTOS malloc;我已经启用了FreeRTOS分配错误。FreeRTOS上没有错误(回调未调用),但我已重置了平台重置\u MEM\u ALLOC\u失败错误代码。。。

两年前

PM\U对话框

嗨,gbmej,

请更改配置总堆大小自定义自定义配置\u qspi.h头文件中的宏。最明显的原因是内存分配失败,这意味着软件中存在内存泄漏,您将数据分配到某个地方,而您从未发布它们。

谢谢,下午好