概述
最近想研究一下跑在MCU上的hypervisor,想看看有哪些开源的方案可以研究,发现 L4Re 这个OS框架有在Cortex-R上hypervisor的实现,那就研究一下吧。
研究了一下,发现L4是一个庞大的家族,目前商用的车规hypervisor和微内核都有L4内核家族的影子(EB的 corbos, SYSGO的 PikeOS。
看了一下L4Re的代码,发现这个hypervisor的实现和它的微内核有着千丝万缕的联系,那就先研究一下微内核吧。
L4Re是用C++实现,博主对C++不熟悉,恰巧发现L4内核家族还有个小老弟,F9 Microkernel,C实现,能跑在STM32这样的MCU上,对这些内容还熟悉一些,那就先看看这个 F9 Microkernel,了解一下L4微内核的设计思想吧!
预备知识
- 整个微内核目前是构建在ARM Cortex-M体系架构上,需要对Cortex-M有了解,比如MCU内核提供的异常,MPU的使用等等。
- 嵌入式软件开发的知识,比如启动过程,startup文件,链接脚本文件等等。
参考资料
经过一段时间的研究,发现目前有一些参考资料对研究很有帮助,链接放在这里:
-
L4 F9 kernel微内核初探
这里对整个微内核做了概述,并且有完整的build过程,想要先构建环境,在板子上跑一跑的同学可以看这里。 -
embedded/f9-kernel
这里对整个内核描述的很详细,结合代码对设计做了解析,对学习很有帮助 -
L4 eXperimental Kernel Reference Manual
这个文档介绍了L4内核的一些概念,对于理解F9中的概念有帮助
目录
计划按照下面的顺序介绍 F9 Microkernel,希望能够讲明白。
- 重要的概念和抽象
- 启动过程
- 内存管理
- IPC
- 线程管理和调度