Topic

FAQ
Login Register
TLSR8258 异常卡死
Nov 20, 2023 11:07

/

A

/A

在TLSR8258正常运行过程中,经常异常卡死,卡死后,通过BDT查看RAM的明显的异常点是 :
00849b88 g O .data_no_init 00000200 scan_pri_chn_rx_fifo 这个区域的值都变成了0xFF。

请问是什么原因造成的?


9 replies
TL_Soyo Nov 20, 2023 17:00
0
/A

你好,

  请和未修改的SDK比对,有什么操作引起的,一般可能是是数组越界了。

leewen [Author] Nov 21, 2023 08:46
0
/A


红色框的数据跟正常的时候是一样的,按理说数组越界了,那么在9B88地址前的数据也可能会异常,且也不会有覆盖512大小的填充0xFF的操作。

以下是在此地址之前的相关的变量,新增的变量没发现有越界的操作,其他的是SDK自带的,其中system_clk_type的值是0x60,是正常的,bltempParam,aes_enc_dec_busy,scan_pri_chn_rx_fifo在库里,看不到怎么操作的,这个数组512大小全部变成0xFF了,感觉更可能是库自行赋值。

leewen [Author] Nov 21, 2023 08:50
0
/A

PS: 目前用的是B85M_BLE_SDK_V4.0.1.3这个软件中的b85m_m1s1工程



TL_Soyo Nov 21, 2023 10:19
0
/A

你好,

  最好能在原始SDK复现出来,如果为企业可以同FAE一起调试看看。

leewen [Author] Nov 21, 2023 10:27
0
/A

另外请教一下:

boot_32k_retn.link中的:

. = 0x848900;
.data :
AT ( _dstored_ )
{
. = (((. + 3) / 4)*4);
PROVIDE(_start_data_ = . );
*(.data);     //这个为什么有 ’;‘
*(.data.*);  //这个为什么有 ’;‘

但是在boot.link文件中相应的位置却没有’;‘。 这个是什么意思呢?


还有.S文件中:

FLL_D:
.word 0xffffffff
.word (_start_data_)
@.word (0x850000)
.word (_start_data_ + 32)

这个只需要初始化前32个字节,而不需要全部初始化吗?

leewen [Author] Nov 21, 2023 11:45
0
/A

如果系统卡死了,如何定位死在什么位置,什么原因导致的?


TL_Soyo Nov 21, 2023 16:48
0
/A

尝试逐渐减少你的应用代码,添加打印,找到出问题的地方。

leewen [Author] Nov 22, 2023 18:46
0
/A

谢谢解答,我用了很简易的应用,还是同样概率出现。

有什么方法可以读取当前PC指向哪个位置,以及往上Track Call stack的过程?

另:上面说的 *(.data)和 *(.data.*)后面是否加分号“;” 有什么影响,以及.S文件对RAM的初始化,为什么只前32个字节,其余的不用初始化,没什么关系吗?

感谢!

TL_Soyo Nov 23, 2023 09:49
0
/A

1 BDT软件中的PC按钮能获取当前PC值,查看函数压栈的过程请联系FAE,并未公开。

2 .word (_start_data_ + 32)只是在flash的某个位置保存_start_data_ + 32这个值,初始化ram在后面了,可以贴出你的复现代码,步骤。