开发板运行一段时间后死机,如何定位死机原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
死机的原因可能是多方面的,软件硬件都有可能,
您能否描述一下是在何种情况下碰到的这种情况,硬件方面是launchpad还是您客制化的板子?软件方面是在跑什么程序,有使用到相关的一些SDK吗?
感谢您的支持,期待您的回复。
硬件:官方开发板LAUNCHXL-CC26X2R1
工程:multi_role_CC26X2R1_LAUNCHXL_tirtos7_ticlang
修改项:
一、修改角色为Observer,在case GAP_DEVICE_INIT_DONE_EVENT事件完成后打开 GapScan_enable(0, 0, 30);持续扫描,并在MR_EVT_ADV_REPORT事件中打印扫描到的MAC和RSSI,运行3分钟后出现卡住,类似死机现象。(去掉扫描结果打印后,在定时器(3S)中加打印字符串,但是在后续挂机中定时器中打印也出现死机现象只不过运行90分钟才出现。,怀疑是UART打印速率过高导致死机?)
二、去除了官方打印和界面,自己添加打印,修改代码如下,Printf为向外部task调用打印接口(单Task调用)
创建一个Uart任务
Uart初始化
任务实体
给外部提供的打印接口
您好,
您可以尝试把您的工程打包直接发文件压缩包过来,我们可以实际上手测试查找相关问题。
感谢您的支持。
SDK: simplelink_cc13xx_cc26xx_sdk_6_41_00_17
您好,
感谢您的快速跟进,我们这边会进行测试,有结论及时联系您。
您好,
您的问题已经同步给产线工程师,他们给反馈后会即使答复您
您好,
收到工程师的回复:
根据您的描述,应用似乎不需要使用多角色项目(multirole project)。如果正在实施观察员角色(observer role),那么我们会建议从 simple_central 开始并根据需要修改项目。
您能否尝试对 simple_central 项目执行更改并验证该现象是否仍然存在?
另外,7.10 SDK 已经发布了一段时间,我们会建议您始终使用最新的 SDK,以确保得到最新的错误修复、功能和优化。
您好,
收到工程师的和回复:
首先,为什么您要扫描这么长时间?保持在扫描模式会消耗大量电量。
也许更推荐做一些周期扫描来避免这个问题。
还要确保调用函数以在正确的位置进行扫描(检查它在simple_central中调用的位置),因为如果不分配内存,它可能会遇到“内存不足”问题。
要真正了解崩溃的来源, 请用sniffer记录一些BLE痕迹( BLE traces)。
如图高亮部分,buf为Static时不死机,去掉static时死机,当为局部buf时减小size为32时也不会死机,是不是芯片堆栈管理的问题?
case MR_EVT_ADV_REPORT:
{
GapScan_Evt_AdvRpt_t* pAdvRpt = (GapScan_Evt_AdvRpt_t*) (pMsg->pData);
static int8_t buf[128] = {0};
memset(buf, 0, sizeof(buf));
snprintf(buf, sizeof(buf), "MAC: %s, RSSI: %d\r\n", Util_convertBdAddr2Str(pAdvRpt->addr), pAdvRpt->rssi);
DoPrint(gPrintHand, "Discovered: %s", buf);
if (pAdvRpt->pData != NULL)
{
ICall_free(pAdvRpt->pData);
}
break;
}
您好,
我们工程师认为可能和持续扫描(continuous scanning)有关。工程师还是希望您可以尝试抓取BLE Trance。
可能和扫描方式不当也有关系。如果扫描不正确,设备可能会耗尽内存导致崩溃。