例外发生在SDK代码中。

11个帖子/ 0新
最后一篇
ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
例外发生在SDK代码中。

嗨对话框,

我的设备在启动后跑了几分钟或几小时。它不经常发生。异常位置是SDK内部代码。以下是UART捕获的3个例外信息。SDK是5.0.3。你可以帮帮我吗?

例外1:

--- HF状态
r0 = 0 x00000080
r1 = 0 x0000000d
r2 = 0 x0000000d
r3 = 0 x00000002
R12 = 0x00000028
lr = 0x200013cb.
PC = 0x0002401A.
PSR = 0x21000000

地图文件有这个:

lld_data_ind_handler 0x00023fef Thumb Code 0 rom_symdef.txt ABSOLUTE
llm_le_enc_cmp_evt_handler 0x000241cf thumb代码0 rom_symdef.txt绝对

GAPM_ADV_SANITY 0x200012D5拇指代码170 GAPM_UTIL.OBJ(.text)
.text 0x20001384部分0 ke_task.obj(.text)
ke_task_schedule 0x20001385 Thumb代码146 ke_task.obj(.text)
.text 0x2000143C第0 SMPC.OBJ(.text)
.text 0x20001598第0节SMPC_TASK.OBJ(.text)
.text 0x200017ac部分0 llc.obj(.text)
my_llc_le_con_update_cmd_handler 0x200017AD thumb代码30 llc.obj(.text)

例外2:

--- HF状态
r1 = 0 x0000000d
r2 = 0 x0000000d
r3 = 0 x00000002
R12 = 0x00000028
LR = 0x2000141B.
电脑= 0 x0002401a
PSR = 0x21000000

地图文件有这个:

lld_data_ind_handler 0x00023fef Thumb Code 0 rom_symdef.txt ABSOLUTE
llm_le_enc_cmp_evt_handler 0x000241cf thumb代码0 rom_symdef.txt绝对

gapm_adv_sanity 0x20001325 Thumb Code 170 gapm_util.obj(.text)
.text 0x200013d4 Section 0 ke_task.obj(.text)
ke_task_schedule 0x200013d5拇指代码146 ke_task.obj(.text)
.text 0x2000148C第0 SMPC.OBJ(.text)
.text 0x200015e8 Section 0 smpc_task.obj(.text)
.text 0x200017FC第0 LLC.OBJ(.text)
my_llc_le_con_update_cmd_handler 0x200017fd Thumb Code 30 llc.obj(.text)

例外3:

--- HF状态
r0 = 0 x240027fd
r1 = 0 x00000000
R2 = 0x0000003F.
R3 = 0x00000050
r12 = 0 x00080ec8
lr = 0 xfffffff9
电脑= 0 x240027fc
PSR = 0x01000014

在地图文件中没有找到lr和PC地址。

关键词:
设备:
mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨ericxiong,

嗨ericxiong,

这是一个棘手的,它有点难以点击这样的问题,因为PC在ROM函数中撞击。我可以建议检查您发送的邮件的分配,或许会出现问题,或检查是否有任何memcpy函数,也许错误的错误损坏了内存中的数据。

谢谢mt_dialog.

Joacimwe.
离线
最后一次露面:10个月前1年
大师
加入:2014-01-14 06:45
似乎有例外1和2

例外1和2似乎是相同的。很难说有什么例外。

在异常1和2中,似乎LLD_DATA_IND_HANDLLER正在处理BLE事件,即使当前没有建立连接,因此崩溃了与空指针异常。
我猜在这事发生之前联系就被切断了。

你的设备怎么样?你的DA14580是外围设备还是中心设备?
你是否有一个永久的活动连接到一个对等体,或者当这种情况发生时,你手动连接/断开连接?
您是否在BLE链接上发送大量数据,或者大部分时间都是空闲的吗?
是否发送连接参数更新请求或其他非gatt请求?
这会发生一次吗?

ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
你是指lld_data_ind吗

嗨Joacimwe:
你的意思是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分钟,定期保持闲置1分钟。在测试时,我有时会按键将触发指示通知中央设备的键。

ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
——敝中断状态

两个新例外:

异常4:

——敝中断状态
r0 = 0 x00000000
r1 = 0 x00000000
R2 = 0x000805E4
r3 = 0 x00000002
R12 = 0x00000028
lr = 0x00026079.
电脑= 0 x00032102
PSR = 0x61000000.

映射文件是:

lld_evt_schedule 0x00026041拇指代码0 rom_symdef.txt绝对
lld_evt_init_func 0x000260e9 thumb代码0 rom_symdef.txt绝对

ke_event_clear 0x000320dd Thumb Code 0 rom_symdef.txt ABSOLUTE .txt .txt
ke_event_get 0x00032109 Thumb Code 0 rom_symdef.txt ABSOLUTE

异常5:

——敝中断状态
R0 = 0x00080FA4.
r1 = 0 x00008000
r2 = 0xffffffff.
R3 = 0x00000025
R12 = 0x00000028
lr = 0x00025d29.
PC = 0x0002572E.
PSR = 0x01000000.

映射文件:

lld_data_tx_flush 0x00025603拇指代码0 rom_symdef.txt绝对
lld_evt_int_extract 0x00025877 Thumb Code 0 rom_symdef.txt ABSOLUTE
lld_evt_init 0x00025f5f thumb代码0 rom_symdef.txt绝对

Joacimwe.
离线
最后一次露面:10个月前1年
大师
加入:2014-01-14 06:45
这些例外似乎非常

这些例外似乎很奇怪......你确定你不会破坏你的堆栈还是什么?

ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
嗨Joacimwe:

嗨Joacimwe:

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

lt_dialog(未经验证)
你好,

你好,
在例外3中,地址0x240027FC指向PC指向无效,这在保留区域中。

如果到目前为止,如果堆栈损坏是主要的嫌疑人,则可以从一件事开始,是检查项目中的任何非法访问是否有任何非法访问数据数组。

ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
嗨lt_dialog:

嗨lt_dialog:

我的所有数据都存储在数据库中,并通过attmdb_att_get_value在配置文件和应用程序图层中获取的指针操作。ATTMDB_ATT_GET_VALUE可能会返回无效指针吗?

lt_dialog(未经验证)
你好埃里克,

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

ericxiong
离线
最后一次露面:2年9个月前
加入:2015-08-16 08:22
不允许非法进入

我的计划中没有违法的访问权限。有时,当程序访问DA14580寄存器时,可能会发生一种异常。我的设备硬件根据对话框参考设计设计。以下是在未修改的GPIO_CONFIGUREPIN中发生了异常。

lr = 0 x200019cd
电脑= 0 xfffffffe

映射文件:

GPIO_CONFIGUREPIN 0x200019B3拇指代码38 GPIO.O(.text)
GPIO_GETPINSTATUS 0x200019D9拇指代码26 GPIO.O(.text)