OpenHarmony 内核 liteos_A和lite_M
OpenHarmony源码里面包含两个内核代码,分别是liteos_A和lite_M
我的理解,liteos_A和liteos_M分别对应ARM架构的 A系列和M系列
liteos_A对标linux内核 ,linux是分时操作系统
liteos_M是对标freeFTOS、rt-thread、UCOS,这些都属于实时操作系统(RTOS),MCU(单片机上),不支持MMU(内存管理单元),内核空间和APP空间不能隔离开,APP出错后整个系统就会崩溃;也不支持POSIX接口,这使得大量的开源软件无法直接在MCU上运行。
liteos_M似乎和Huawei LiteOS差不多
liteos_M适用架构:当前只适用于cortex-m3、cortex-m4、cortex-m7、risc-v芯片架构,属于MCU(单片机上)
liteos_A适用架构:Hi3518EV300、Hi3516DV300、还可以移植第三方板子
为什么提出liteos_A呢
Linux的强大在于它支持的硬件非常多,但是它过于庞大,启动慢、耗电,这些缺点导致它不适合用在物联网领域。比如倒车摄像头,没人能忍受2秒钟后才看见图像:即使你能忍受,也很难把Linux优化到2秒内启动。
Liteos-a为物联网而生,支持MMU,支持内核/APP空间隔离、支持各个APP空间隔离,系统更健壮;支持POSIX接口,大量开源软件可以在Liteos-a上直接使用;启动快,省电。
内核层包含linux和liteos,我认为这里liteos指的是liteos_A
linux文件树
linux内核架构图
上图说明了Linux内核的整体架构。根据内核的核心功能,Linux内核提出了5个子系统,分别负责如下的功能:
1. Process Scheduler,也称作进程管理、进程调度。负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。
2. Memory Manager,内存管理。负责管理Memory(内存)资源,以便让各个进程可以安全地共享机器的内存资源。另外,内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的时候,再取回到内存中。
3. VFS(Virtual File System),虚拟文件系统。Linux内核将不同功能的外部设备,例如Disk设备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可以通过统一的文件操作接口(open、close、read、write等)来访问。这就是Linux系统“一切皆是文件”的体现(其实Linux做的并不彻底,因为CPU、内存、网络等还不是文件,如果真的需要一切皆是文件,还得看贝尔实验室正在开发的"”的)。
4. Network,网络子系统。负责管理系统的网络设备,并实现多种多样的网络标准。
5. IPC(Inter-Process Communication),进程间通信。IPC不管理任何的硬件,它主要负责Linux系统中进程之间的通信。
OpenHarmony-LiteOS-A内核架构图
lite_A 内核文件系统
OpenHarmony-LiteOS-M核内核架构图
lite_M 内核文件系统
``` /kernel/liteos_m ├── components # 可选组件 │ ├── cppsupport # C++支持 │ └── cpup # CPUP功能 ├── kal # 内核抽象层 │ ├── cmsis # cmsis标准接口支持 │ └── posix # posix标准接口支持 ├── kernel # 内核最小功能集支持 │ ├── arch # 内核指令架构层代码 │ │ ├── arm # arm32架构的代码 │ │ └── include # 对外接口存放目录 │ ├── include # 对外接口存放目录 │ └── src # 内核最小功能集源码 ├── targets # 板级工程目录 ├── utils # 通用公共目录 ```
