又有奇思妙想,所长等大狭们探讨一下如何实现?可行性?
扫描二维码
随时随地手机看文章
做一个专用与MCU的基于消息驱动的前后台多"线程"操作系统OS,基本工作原理是;
1. 把一个函数或多个需要顺序执行的函数看成是一个"线程"(Thread),一个"线程"是由一个消息来恢复 运行的。一个"线程"执行一次后就挂起(Suspend)或等待时间到(TimeOut),等待下一次消息来恢复(Resume)运行。
2. 消息可以是任何的一种事件发生的标志,可以用一个唯一的数值代表一个消息。比如可以用一个char变量 传递256种消息。操作系统接收到一个消息就恢复(Resume)该消息的一个"线程"。
3. 后台任务是一个无限循环,它在等待"线程"的恢复(Resume)。所有"线程"运行都是由后台任务调用一个OSThreadRun()来完成。
4. 每个"线程"(Thread)有自己的优先级,当几个"线程"同时恢复时,OSThreadRun()先运行最高优先级的"线程"。
5. 一个"线程"可以由后台任务恢复(Resume),也可以由中断恢复(Resume),也可以由一个"线程"恢复(Resume)。
6. 这样的多"线程"不需做任务切换,所以不需要独立的堆栈空间,OS的code也应该比较小,特别适合RAM较小的MCU。