zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Nuttx SMP实现的一个BUG

BUG 实现 一个
2023-09-11 14:15:46 时间


核心问题在于,在enter_critical_section函数的实现上,Nuttx存在打脸行为,具体点说,就是SMP版本的enter_critical_section和UP(单核)版本的enter_critical_section语义不一致。

UP版本的enter_critical_section实现:

单核版本的enter_critical_section实现符合经典的RTOS实现策略,就是关闭中断,在单核系统中,中断一关闭代表所有的异步执行流都被控制住了,后面的执行流就可以完全被软件控制了,也就是everything is in the control.,RTT, Zephyr,UCOS等系统都是这么干的,没什么问题。

但是在来看看奇葩的SMP版的实现: