0%

[物联网全栈成长-第一阶段学习笔记]1.4 操作系统,轻量开源

概述

对于影响物联网发展而言,最主要的问题是碎片化。其中芯片、传感器、通信协议和应用场景等碎片化使得技术方案难以统一。体系结构不统一阻碍了物联网的发展也局限了互联互通的范围。对于物联网的终端开发者而言,他们需要了解硬件相关知识,自行选型和对接适配以应用物联网通信协议众多,同时更新迭代很快的情况。而其中,操作系统扮演了一个很重要的角色,它可以支持不同的硬件、通信标准和应用场景。这里主要介绍一下 LiteOS 的相关知识。

LiteOS 基础架构

LiteOS 的基础架构是一个 1+N 的架构,其中:

  • 1 指一个内核
  • N 指 N 个中间件,包含了 LiteOS 的互联框架,传感框架,安全框架,运行引擎。下面分别进行介绍。

内核

LiteOS 的内核主要包括以下功能:

  • 内存管理:内存管理模块管理系统的内存资源。LiteOS 中关于内存管理提供了静态内存和动态内存两种算法。支持内存申请和释放。其中:
    • 动态内存是在动态内存池中分配用户指定大小的内存块。优点是可以按需分配,缺点是内存池中会出现碎片。相关管理算法包括 DLINK 算法和 Best Little 算法。
    • 相对的,静态内存是在静态内存吃中分配用户初始化时预设大小的内存块。优点时分配和释放效率高,静态内存池中无碎片。缺点是不能按需申请。使用算法包括 BOX 算法。
  • 任务管理:任务是竞争系统资源的最小运行单元。任务可以使用或等待 CPU 时间,使用内存空间等系统资源。任务之间可以独立运行。嵌入式基本都是单进程多线程。进程和线程的概念可以查阅操作系统相关资料,这里不做赘述。
    • 在 LiteOS 中,任务是抢占式调度机制,同时也支持时间片轮转调度机制。
    • 任务管理模块提供了任务的创建、删除、延迟、挂起、恢复、(任务调度的)锁定和解锁等功能。例如,一个任务对一些共享资源使用的时候,可以临时锁定任务调度防止被其他任务打断。
  • 中断管理:中断指的是出现新需求时,CPU 暂停执行当前程序转而执行新程序的过程。
    • 中断主要包含以下几个步骤。
      • CPU 在运行现行程序过程中,出现新事件
      • 中断处理:CPU 中止现行程序(保存相关状态,断点)转而执行处理事件的处理程序
      • 中断服务程序执行完毕返回断点执行原来的程序
    • LiteOS 中中断管理提供了中断创建、删除、屏蔽、开/关、恢复和使能等功能。
  • 通信机制:包括队列管理和事件管理
    • 队列管理:队列又称消息队列,是一种常用于任务间通信的数据结构。实现了接收来自任务或中断的不固定长度的消息,并根据不同接口选择要传递的消息是否存放在自己空间。消息队列有先进先出和先进后出两种模式。而 LiteOS 的消息队列支持队列的创建、删除、发送和接收功能。
    • 事件管理:事件管理即简单的事件触发。例如预设好一定时间,如果时间内事件X发生,则触发使得 CPU 从处理一个任务到另一个任务上。
  • 任务同步:
    • 信号量:信号量也是一种实现任务间通信的机制。实现任务之间同步或临界资源的互斥访问。常用于协助一组相互竞争的任务来访问临界资源。其表示还有多少任务可以做该共享资源的访问。(资源可能可以被两个及以上任务同时访问)
    • 互斥锁:互斥锁可理解特殊的信号量,作为两个以上任务对有限共享资源做访问时的保护。互斥锁表示任务是否可以做该共享资源的访问。(此时共享资源只能同时让一个任务访问。)
  • 时间管理:
    • 系统时间:MCU 中的时钟源对应系统主频,例如 80MHz 表示每秒进行 80 M 次计数,每次计数系统(CPU)可以执行一条指令。通过时钟源,MCU 可以知道系统时间。
    • 时间片调度:LiteOS 中每个任务可以对 CPU 进行进行最小时间分片。参数单位为 tick。每个 tick 可以调度任务一次,默认情况下每个 tick 为 10 ms。

中间件

  • 互联框架:主要用于解决不同协议终端之间的互联互通。
    • 能够提供完整的协议框架,降低开发门槛;
    • 同时还提供了可灵活配置的应用 Profile 实现不同设备的互通。
    • LiteOS 还提供了 AgentTiny,AgentTiny 是一个轻量级互联互通中间件。部署在对功耗、存储、计算资源有苛刻限制的终端设备上,开发者只需要调用相应 API 接口即可实现设备快速接入到华为 IoT 云平台以及数据上报和命令接受等功能。
    • 互联框架还优化了 Mesh 自组网能力,提高组网终端数量。
  • 传感框架:提供多传感器的统一管理。
    • 提供统一的驱动接口,抽象不同类型传感器接口,屏蔽硬件细节,实现即插即用。
    • 提供统一的传感器交互管理与传感算法库。例如一些基础算法和数据融合,方便开发者直接调用。
  • 安全框架:
    • 端云安全:主要涉及云端的认证鉴权。云端会设置白名单,对终端进行双向设备认证。(例如网银需要安装证书对云端进行双向认证才能使用)
    • 传输安全:包括数据链路安全、网络层安全、路由层 RPL 安全以及 DTLS。其中 DTLS 是数据报安全传输协议(Datagram Transport Level Security),提供了 UDP 传输场景下的安全解决方案,防止消息被窃听。
    • 终端安全:通常包含 API 认证,对于调用 API 接口的任务程序与应用需要通过认证。同时终端安全还提供了一个安全区域,包含白名单,双向设备认证、安全固件/APP 升级、安全启动、安全 ID 、密钥管理、安全存储等功能,其中安全存储是芯片内部划分了一部分存储空间,不会让外部线程访问。
  • 运行引擎:提供了以下两部分功能
    • 高性能、轻量级的 JavaScript 虚拟机:针对资源高度受限的设备设计和优化,与 OS 、应用框架协同优化提高性能。JavaScript 框架有以下优点:
      • 简化跨硬件平台和中间件的系统集成;
      • 用高级语言抽象来隐藏部分编程细节;
      • 兼容大量第三方库来丰富平台功能
    • 面向物联网的应用开发框架