代码环境
babyos+freertos
操作方法
通过 shell 操作eeprom 的写操作
问题现象
整个系统会卡在延时函数这里,卡的原因是rtos 的tick中断不响应了。
shell不响应外部命令 系统是正常运行的。
解决方法
成功的方法
ms延时由依赖tick改为us的堵塞延时;
这里改为堵塞延时的副作用是 系统会堵塞在这里,现在这个应用场景这样做是没问题的,因为我们再人为调参数。
失败的方法
ms 延时改为rtos延时;
这时候如果写入的是4个字节,正常运行;
如果写入50个字节,系统就会卡死在
void vPortEnterCritical( void )
分析:eeprom 的写操作 需要ms级别的延时,如果涉及到eeprom 的写操作中,会涉及到很对5ms 的延时;
rtos的延时就会发生一次任务切换,改为us堵塞延时正常了,原因之一就是任务切换太频繁了。
对于任务切换太频繁导致进入void vPortEnterCritical( void )的方法,我是使用堵塞延时;其他方法应该也有,这里我就不去研究了。
总结
记录一些这次经历,也是有收获的。