liteos开篇 【华为liteos|liteos开篇】
文章目录
- liteos开篇
- 前言
- 一、什么是liteos
- 二、使用步骤
-
- 1.扩展库的移植
- 2.liteos的框架
- 关注点
- 公众号
前言 liteos是华为开发的一款轻量级的面向物联网领域的开源操作系统,最小内核提供了内存管理,任务调度,锁,信号量等操作系统所必须的最基础的单元,有了这几个模块基本一个最小的操作系统的五脏六腑差不多就有了。
一、什么是liteos liteos是一款轻量级的实时操作系统,网上可以下载到最小内核,提供了操作系统的最小机制,基于这些基础机制可以扩展实现自己的业务。
二、使用步骤 1.扩展库的移植 诸如文件系统,网络协议等的实现在liteos里面主要还是使用现成的,例如tcpip协议栈移植了lwip,对于虚拟文件系统的支持还没那么完善,主要还是使用开源的一些文件系统,比如要使用fat32,那么就移植FAT32的库,为了方便应用程序开发,确实移植了libc之类的接口标准,让linux下的程序开发者方便开发,同样也使得linux下原来的许多现成的基础库,可以方便移植,比如json解析的cJson库,libxml,数据库sqlite,mqtt等。尽量向上兼容之前的生态。当然这部分统一的libc,libc++,libpthread等以及一系列的linux下的基础库似乎并没有开源。这我们不重点关注。我们关注的重点是操作系统最基础的部分,内存管理,任务调度,锁信号量等,因为其他的driver,文件系统,网络协议等等都是依赖于这些基础的机制来实现的。这个观点无论是在liteos,linux,鸿蒙,或者其他的诸如freertos等等都是基于这样的思想,甚至在liteos或者ucos,freertos下移植的一些功能基础库大家都用lwip,fat32等等。这个做过嵌入式系统开发的人我觉得应该深有体会。
2.liteos的框架 liteos主要分为liteos最小系统(kernel),还有liteos的适配层,以及上层的主要针对物联网生态的sdk。如下图:
文章图片
关注点 如上图针对具体的产品开发主要关注的是这些云端组件等,系统移植主要关注的是第三方MCU等移植这部分,理解操作系统需要关注的是kernel这一层。这部分麻雀虽小,五脏俱全
liteos kernel部分的组成主要如下图:
文章图片
主要分为两部分,一部分是为了适配linux下的生态,适配linux下的接口对posix做的适配。以及VFS部分,libc,libc++,STL等适配,网络lwip部分。这样做的好处是让开发linux下的程序员能在liteos下无缝衔接,还有一个好处是在linux下的一些用户态的库,可以快速的移植到liteos下,当然前提是大部分posix接口都支持,并且资源充足。
还有一部分是基础内核部分,也是我们讲解的重点,中断,定时器,消息,任务,内存管理,锁等操作系统必备的基础结构,这部分属于五脏六腑,属于操作系统中的核心,其他的driver等都是基于这些最基础的机制实现的。我们重点关注和讲解的是这部分。
后面的分析,为了讲解没那么抽象,我们讲解的liteos是基于stm32f103这个处理器来讲解。从程序的编译,连接器脚本,程序启动之后在程序在内存中的布局,堆栈段,数据段等等的具体布局,最后堆栈的管理等等,能看到一个具体的布局图像,而不是抽象的内存,抽象的任务。
我们主要从连接器脚本和内存布局讲起来,然后是一些基础的链表队列等其他内存管理,任务调度会用到的基础数据结构讲起来。然后是堆栈管理,内存中的宏观布局。再接着是锁,信号量等这些再任务管理里面会用到。最后是任务管理调度等
公众号 想了解操作系统原理的朋友欢迎关注微信公众号deepcoder,该公众号会分享操作系统方面的知识,由简入繁,从轻量级到重量级,从单核心到多核心。从内核态到用户态。轻量级的以liteos系统为例分享。重量级的以linux为例子分享。每一种都会分享内存管理,任务调度,锁,信号量等操作系统核心原理知识。欢迎志同道合的朋友一起交流学习