在没有响应的情况下发送写入时固件崩溃

14个帖子/ 0新
最后一篇
GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
在没有响应的情况下发送写入时固件崩溃

你好,

我正在尝试使用TRIET发送从平板电脑到我们的固件的数据,而无需响应。
当我发送超过1200字节的固件崩溃时。调试器停止,所有核心寄存器设置为0,Callstack为空

我们所做的是,我们发送200字节,然后读取一个特征,告诉我们如果数据到达或没有。然后我们发送下一个200个字节。
我看不到任何可以帮助我调试情况的寄存器或处理程序。

任何想法如何调试或修复它?我们在我们项目中至关重要。

布莱恩
离线
最后一次露面:6年5个月前
专家 掌握
加入:2014-10-16 18:10
你在Windows 8吗?我得到了

你在Windows 8吗?我得到了与你的相同行为,但出于不同的原因。我相信它是由来自未对齐的内存中的strh指令引起的。这应该导致硬盘且没有完整的重置崩溃,而在Windows 7上工作时,我会得到硬盘。是的编译器应该符合内存,但有些东西是Awry。

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
我在Windows 8是的。这是

我在Windows 8是的。这是一个严重的问题,因为我不可能调试。我所拥有的唯一信息是问题是一致的。
我可以尝试找到一个Windows 7机器 - 但为什么你认为我没有在Windows 8上收到硬盘?它们之间有很多差异吗?

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
好的,所以我尝试了Windows 7,

好的,所以我尝试了Windows 7,结果完全相同!

布莱恩
离线
最后一次露面:6年5个月前
专家 掌握
加入:2014-10-16 18:10
很抱歉听到这个消息。它是

很抱歉听到这个消息。这只是一个猜测,因为这就是我得到的。但是,我根本不明白。但我肯定熟悉这个问题!绝对没有办法发现它也可以调试它。在我的情况下,我有DA14580连接到TERA术语,当发生这种错误时,我只能打印到屏幕上的一堆垃圾;在上传十六进制文件之前,就像一个人一样。我没有在Windows 7上发生这种情况,但这是我的案例在系统初始化时清楚地发生(在它到达App_Init()之前)。你清楚地运行了。我必须说有时我也会在Windows 8上获得硬盘。 Small changes in the organization of this struct make a big difference.

这是您可以查看的其他东西。我假设您有一些拍摄书面数据的缓冲区。检查Out / LST目录中的地图。看它是否在跳转表之前加载,或者在Arch_Main中关键的其他东西。

首先寻找一个看起来像这样的线
RWIP_RF 0x0008071C数据0 rom_symdef.txt绝对

现在寻找你的阵列。在我的情况下,我正在使用的结构是在系统中的这些关键任务项目之前加载。即使尺寸是正确的,如果它对齐错误的灾难可能会发生(显然)。下方是我无法控制系统加载我的数组的位置。我也在记忆疲惫的边缘(我正在写一个完全托管的中心)。如果该缓冲区(假设您有一个)就在突出表堆的问题之前,请看看您是否可以在缓冲区和该表之间粘贴一个较小的缓冲区。您需要在该缓冲区或编译器中使用一些东西,只需优化它(除非您在优化级别0处运行)。

我不是说这将解决任何问题,但它值得一试着给出其他选择(不知道该怎么办)。

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
布莱恩,

布莱恩,

多数民众出的是,我没有一个缓冲区,这都来自堆栈。数据来自gattc_write_cmd_ind_handler直接从堆栈中,我使用attmdb_att_set_value将其保存到数据库。
在此过程中,我根本不会使用缓冲区。
感谢您的帮助Brian,希望对话中的某人可能会在此揭示一些光线。我猜他们正在使用与他们的套筒相同的方法

ak_dialog.
离线
最后一次露面:6个月4天前
职员
加入:2013-12-16 15:49
你好,

你好,

这可能是由DA14580进入睡眠模式或看门狗定时器跳转引起的。

你在使用睡眠模式吗?看门狗是否使用过?

对话框蓝牙支持团队。

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
你好,

你好,

禁用看门狗和扩展和深度睡眠模式。

ak_dialog.
离线
最后一次露面:6个月4天前
职员
加入:2013-12-16 15:49
嗨,如果你看看我们的代码

嗨,如果您调查我们的代码,可以看到用于调试目的NMI处理程序(NMI_Handler.c)和Harfault处理程序(HardFault_Handler.c)将在内存中转储ARM寄存器(包括PC和SP)。在“崩溃”之后,您可以ATACH调试器并调查“上次”状态。

对话框蓝牙支持团队。

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
它与调试器崩溃了

它与调试器附加的调试器崩溃了。
HardFaults不会调用,所有寄存器都是空白的,包括PC。
我需要尽快让客户为客户工作,所以很高兴为您发送我们的固件和Android代码,如果有帮助

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
你好,

你好,

我怀疑这是一个堆栈问题,所以我将ble_connection_max_user增加到2,这将增加堆栈(#define non_ret_heap_size,#define env_heap_size #define msg_heap_size)

我现在能够在没有崩溃的情况下发送数据。
但是,如果我将我发送到3200字节的数据量,当然它崩溃了。它是堆栈内部的内存问题
正如我在原来的帖子中所说,我每200个字节读取该特征,以确保数据已经写入,所以我看不出为什么应该有任何堆栈溢出问题。

你能帮我吗?

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
你好,

你好,

我如何获得这个问题的帮助?它已经5天,唯一的回复是检查我已经在原来的帖子中告诉过你的东西。

GCBlair.
离线
最后一次露面:5年1个月前
掌握
加入:2014-09-08 10:21
我修复了问题,我是

我解决了问题,我没有从处理每次写入数据的任务中返回任何任务。这是一个耻辱,没有错误处理

RVA.
离线
最后一次露面:1个月2周前
职员
加入:2014-02-07 14:10
很高兴听到这个问题是

很高兴听到这个问题已经解决了。回复较晚,抱歉。