strstr入参指针同时读写引起hardfault的坑
今天作测试,发现个偶然的hardfault. 经过调试发现是strstr函数的入参指针应用不当引起的。if(!lyBleConnectState)
{
uint8_t *ap = gpbIF_UARTRxdBufferGet();
if( strstr((char*)ap, "SampleStart") )
{
lyBleConnectState = TRUE;
DEBUG_PRINT("BLE connected, sample start.\r\n");
lbStep = 10u;
}
}
如上为典型应用,正常任务中在进行条件判断,条件判断中调用了strstr, 此时函数还未返回,若串口中断又对ap指针指向的RAM进行了写操作,就会引起hardfault.
特此记录。
你这么用法,无论调用什么函数,只要碰那个RAM,都是坑 at90s 发表于 2019-12-12 16:51
你这么用法,无论调用什么函数,只要碰那个RAM,都是坑
想省一块临时BUFFER,结果还是省不了。 想省就锁中断呗..
本来也没啥好省的
页:
[1]