OpenHarmony南向设备开发:LiteOS-M内核移植

往期鸿蒙全套实战精彩文章必看内容:


一、LiteOS-M 介绍

LiteOS-M 内核是面向轻量级物联网操作系统内核。具有小体积、低功耗、高性能的特点。根据与硬件相关性,主要分为以下两大块:

  • 硬件相关层
    • arch 向上提供统一的 HAL 接口。以及 HAL 硬件及平台相关接口的实现
  • 硬件无关层
    • 内核: LiteOS 内核源码,任务调度、信号量等实现
    • Componets 可选组件,网络、文件系统等模块
    • Utils 工具相关,提供错误处理、调测等能力
    • KAL 内核抽象层。向上层提供标准的操作系统接口

组织结构如下图所示:

OpenHarmony-LiteOS-M 核内核架构图.png

源码中目录结构如下:

.
├── arch # 内核指令架构层目录 
├── components # 可选组件
├── drivers # 驱动框架Kconfig 
├── kal # 内核抽象层 
├── kernel # 内核最小功能集支持 
└── utils # 通用工具

二、LitesOS 源码介绍

2.1、硬件无关代码

以下是 LiteOS 的核心功能源码。

./kernel
├── include
│   ├── los_config.h //系统时钟、系统节拍、堆栈、任务、裁剪等配置
└── src
    ├── los_event.c //事件初始化
    ├── los_init.c //内核初始化 内核启动
    ├── los_mux.c //互斥锁
    ├── los_queue.c //队列
    ├── los_sched.c //任务调度
    ├── los_sem.c //信号量
    ├── los_sortlink.c //排序链表
    ├── los_swtmr.c //软件定时器
    ├── los_task.c //任务创建
    ├── los_tick.c //Tick时钟
    └── mm
        ├── los_membox.c //静态内存管理
        └── los_memory.c //动态内存管理

2.2、硬件相关代码 以 cortex-m3 为例

./arch
├── arm 
│   ├── cortex-m3 特定体系架构层
│   │   └── keil
│   │       ├── los_arch_atomic.h # 头文件  与平台相关的arch原子操作定义
│   │       ├── los_arch_context.h # 任务调度初始化
│   │       ├── los_arch_interrupt.h # 头文件 中断接管与处理
│   │       ├── los_arch_timer.h # 头文件  systick底层实现
│   │       ├── los_atomic.S # 与平台相关的arch原子操作实现 对内存的一些操作 没看到使用
│   │       ├── los_context.c # 任务调度初始化
│   │       ├── los_dispatch.S # 中断开关、任务调度等实现
│   │       ├── los_exc.S # 异常向量处理(向量号为负值)
│   │       ├── los_interrupt.c #  中断接管与处理
│   │       ├── los_startup.s # 向量表->复位向量,main入口
│   │       └── los_timer.c # systick底层实现
├── include   通用体系架构层
│   ├── los_arch.h # 定义arch初始化 
│   ├── los_atomic.h  # 定义通用arch原子操作 
│   ├── los_context.h # 定义通用arch上下文切换 
│   ├── los_interrupt.h # 定义通用arch中断 
│   ├── los_mpu.h # 定义通用arch内存保护 
│   └── los_timer.h # 定义通用arch定时器 

三、内核及编译平台介绍

arm 处理器目前在智能手机及平板电脑占有率达到 95%。Cortex-M 系列在中低端嵌入式硬件也占据了绝对的领导地位。以下 ARM 家族内核介绍:

ARM 家族介绍

Cortex 系列 **  ARM 公司在经典处理器 ARM11 以后的产品改用 Cortex 命名,并分成 A、R 和 M 三类,旨在为各种不同的市场提供服务。Cortex 系列属于 ARMv7 架构,由于应用领域不同,基于 v7 架构的 Cortex 处理器系列所采用的技术也不相同,基于 v7A 的称为 Cortex-A 系列,基于 v7R 的称为 Cortex-R 系列,基于 v7M 的称为 Cortex-M 系列。**

  • Application Processors(应用处理器):面向移动计算,智能手机,服务器等市场的高端处理器。这类处理器运行在很高的时钟频率(超过 1GHz),支持像 Linux,Android,MS Windows 和移动操作系统等完整操作系统需要的内存管理单元(MMU)。如果规划开发的产品需要运行上述其中的一个操作系统,你需要选择 ARM 应用处理器.
  • Real-time Processors (实时处理器):面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持 MMU,不过通常具有 MPU、Cache 和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如 200MHz 到 >1GHz ),响应延迟非常低。虽然实时处理器不能运行完整版本的 Linux 和 Windows 操作系统,但是支持大量的实时操作系统(RTOS)。
  • Microcontroller Processors(微控制器处理器):微控制器处理器通常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在 200Mhz 之上)。并且,新的 Cortex-M 处理器家族设计的非常容易使用。因此,ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。
    Cortex-M 处理器家族更多的集中在低性能端,但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大。例如,Cortex-M4 和 Cortex-M7 处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到 400Mhz。

芯片底层适配,主要区别在于****内核指令集编译平台区别

3.1、内核指令集区别

内核的区别,主要与 CPU 支持的指令集有关。以下是内核之间支持的指令集区别<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值