嗨
当我调用“status = attmdb_add_service(shdl, dest_id, nb_att_uuid_16, 0, nb_att_uuid_128, total_size);”函数时
nb_att_uuid_16 = 15
nb_att_uuid_128 = 6
total_size = 868
软件崩溃。如果total_size小于868就可以了。我试图增加堆大小,但结果是一样的。
如果我在函数之前和之后放一个调试打印,我可以看到函数内部崩溃。
设备:
每Christiannsen你好,
设备崩溃的原因是因为您耗尽了数据库堆,这是设备分配数据库请求的内存量的地方,您提到您已经增加了堆(是DB_HEAP_SZ定义吗?)显然,当设备在不同的睡眠模式下运行时,您要么增加了错误的堆类型,要么增加了DB堆大小。例如,如果您希望增加DB_HEAP_SZ,请转到da1458x_conifg_advanced.h文件,并在#if defined(CFG_MEM_MAP_EXT_SLEEP) || !defined(CFG_MEM_MAP_DEEP_SLEEP)下添加以下具有相应大小的#define DB_HEAP_SZ。
由于MT_dialog
嗨
在这种情况下,我认为函数应该返回“ATT_ERR_INSUFF_RESOURCE”,而不是崩溃。
每
嗨,克里斯琴森,
设备不会崩溃,它只是重置,因为wrap_platform_reset()被调用,是的,函数应该返回你提到的东西,它不返回的原因是分配所需空间的malloc函数只是在函数返回之前调用重置,所以如果我得到你正确的问题,然后你的设备结束在wrap_platform_reset()和你应该得到的错误消息是RESET_MEM_ALLOC_FAIL。所以请尽量遵循我上面提到的。
由于MT_dialog