SDK代码出现异常。

11个员额/ 0个新员额
最后发表
爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
SDK代码出现异常。

嗨,对话框中,

我的设备在启动几分钟或几小时后就会跑掉。这种事不经常发生。异常位置在SDK内部代码中。以下是UART捕获的3个异常信息。SDK是5.0.3。你能帮我个忙吗?

例外1:

——高频状态
r0=0x00000080
r1=0x0000000d
r2=0x0000000d
r3=0x00000002
r12 = 0 x00000028
lr = 0 x200013cb
电脑= 0 x0002401a
psr = 0 x21000000

地图文件有:

lld_数据_ind_处理程序0x00023fef拇指代码0 rom_symdef.txt绝对值
llm_le_enc_cmp_evt_handler 0x000241cf Thumb Code 0 rom_symdef.txt ABSOLUTE

gapm_adv_sanity 0x200012d5 Thumb Code 170
.text 0x20001384 Section 0 ke_task.obj(.text)
ke_task.obj(.text) 0x20001385 Thumb Code 146
.text 0x2000143c Section 0 smpc.obj(.text)
.text 0x20001598 Section 0 smpc_task.obj(.text)
.text 0x200017ac Section 0 llc.obj(.text)
my_llc_le_con_update_cmd_handler 0x200017ad Thumb Code 30 llc.obj(.text)

例外2:

——高频状态
r1=0x0000000d
r2=0x0000000d
r3=0x00000002
r12 = 0 x00000028
lr = 0 x2000141b
pc=0x0002401a
psr = 0 x21000000

地图文件有:

lld_数据_ind_处理程序0x00023fef拇指代码0 rom_symdef.txt绝对值
llm_le_enc_cmp_evt_handler 0x000241cf Thumb Code 0 rom_symdef.txt ABSOLUTE

gapm_adv_sanity 0x20001325拇指代码170 gapm_util.obj(.text)
.text 0x200013d4第0节ke_任务.obj(.text)
ke_task.obj(.text) 0x200013d5 Thumb Code 146
.text 0x2000148c Section 0 smpc.obj(.text)
.text 0x200015e8第0节smpc_任务.obj(.text)
.text 0x200017fc Section 0 llc.obj(.text)
my_llc_le_con_update_cmd_handler 0x200017fd拇指代码30 llc.obj(.text)

异常3:

——高频状态
r0=0x240027fd
r1=0x00000000
r2 = 0 x0000003f
r3 = 0 x00000050
r12=0x00080ec8
lr=0xFFFFF9
pc=0x240027fc
psr = 0 x01000014

在映射文件中找不到lr和pc地址。

关键词:
设备:
MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨ericxiong,

嗨ericxiong,

这是一个很棘手的问题,有点难找出问题所在,因为pc机的ROM功能崩溃了。我能建议的是检查你发送的消息的分配,也许出了什么问题,或者检查是否有任何memcpy函数,也许有一个错误的大小等,损坏了内存中的数据。

由于MT_dialog

Joacimwe
离线
最后看到:1年5个月前
大师
加入:2014-01-14 06:45
例外情况1和2似乎

例外情况1和2似乎相同。例外3很难说清楚。

在异常1和2中,似乎lld_data_ind_handler正在处理一个BLE事件,即使目前没有建立连接,因此会因为一个空指针异常而崩溃。
我的猜测是,就在这件事发生之前,这种联系被切断了。

你的设备怎么样?你的DA14580是外围设备还是中心设备?
您是否有与对等计算机的永久活动连接,或者在发生这种情况时是否手动连接/断开连接?
您是否通过BLE链路发送了大量数据,或者它大部分时间都处于空闲状态?
您发送的是连接参数更新请求还是其他类型的非GATT请求?
这种情况多久发生一次?

爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
你是说lld_数据索引吗

嗨,乔西姆韦:
你的意思是lld_data_ind_handler正在处理一个指示中心设备的BLE事件吗?

我构建了一个引用prox_reporter外设示例代码的新应用程序。我的DA14580是一个带有128位UUID服务的外设,它有一个150字节的大小特征和一个20字节的大小特征和几个2或4字节的大小特征。
中心设备是iOS或Android。连接时间为几分钟,中心设备将手动断开。
连接后,中心设备将从DA14580读取(或写入)约50个字节。它大部分时间都在无所事事。
我使用SDK默认连接参数,不确定iOS或Android是否会发送连接参数更新请求。
如果我测试的iOS应用程序工作,这种情况大约每天发生1次,首先进行扫描,然后连接到发现的DA14580,读取几个字节,保持连接1分钟,然后断开DA14580,保持空闲1分钟,定期。在测试时,我有时会按下按键,触发指示,通知中心设备。

爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
---NMI状态

两个新的例外:

例外情况4:

---NMI状态
r0=0x00000000
r1=0x00000000
r2 = 0 x000805e4
r3=0x00000002
r12 = 0 x00000028
lr = 0 x00026079
pc=0x00032102
psr = 0 x61000000

映射文件是:

lld_evt_schedule 0x00026041 Thumb Code 0 rom_symdef.txt ABSOLUTE
lld_evt_init_func 0x000260e9 Thumb Code 0 rom_symdef.txt ABSOLUTE

ke_事件_清除0x000320dd拇指代码0 rom_symdef.txt绝对值
ke_事件获取0x00032109拇指代码0 rom_symdef.txt绝对值

例外情况5:

---NMI状态
r0 = 0 x00080fa4
r1=0x00008000
r2 = 0 xffffffff
r3 = 0 x00000025
r12 = 0 x00000028
lr = 0 x00025d29
电脑= 0 x0002572e
psr = 0 x01000000

映射文件:

lld_data_tx_flush 0x00025603 Thumb Code 0 rom_symdef.txt ABSOLUTE
lld_evt_int_提取0x00025877拇指代码0 rom_symdef.txt绝对值
lld_evt_init 0x00025f5f Thumb Code 0 rom_symdef.txt ABSOLUTE

Joacimwe
离线
最后看到:1年5个月前
大师
加入:2014-01-14 06:45
这些例外情况似乎非常严重

这些例外似乎很奇怪……你确定你没有损坏你的档案什么的吗?

爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
嗨,乔西姆韦:

嗨,乔西姆韦:

什么样的东西会损坏堆栈?测试时,我的iOS应用程序只从DA14580读取了几个字节的数据。你能给我一些建议来避免这种情况吗?谢谢

LT_Dialog(未验证)
你好,

你好,
在异常3中,指向pc的地址0x240027fc是无效的,属于保留区域。

如果堆栈损坏是到目前为止的主要怀疑,那么您可以首先检查项目中是否存在对数据数组的非法访问。

爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
嗨LT_Dialog:

嗨LT_Dialog:

我的所有数据都存储在数据库中,并通过profile和App层的attmdb_att_get_value获得的指针进行操作。attmdb_att_get_value是否可能返回无效的指针?

LT_Dialog(未验证)
嗨,埃里克,

嗨,埃里克,
我的意思是,如果有任何非法访问你的本地缓冲区,变量,指针等

爱立雄
离线
最后看到:2年4个月前
加入:2015-08-16 08:22
这里没有非法通道

我的程序里没有非法访问。有时,当程序访问da14580寄存器时,似乎会发生一种异常。我的设备硬件是根据对话参考设计。在GPIO_ConfigurePin中发生了一个没有被修改的异常。

lr=0x200019cd
pc=0xFFFFFE

映射文件:

GPIO_ConfigurePin 0x200019b3拇指代码38 gpio.o(.text)
GPIO_GetPinStatus 0x200019d9拇指代码26 gpio.o(.text)