内核系统层

更新时间:2022-11-24 09:20:05下载pdf

内核系统层 API 是 TuyaOS 根据物联网操作系统特性,封装的一套通用的系统服务组件接口。

概述

内核系统层 API 对上层屏蔽了硬件和系统的差异,确保上层软件在任意系统和芯片平台上的一致性。同时也提供了通用的系统服务,包括安全数据存储、安全启动、安全内存管理、消息、定时、工作队列、事件等。

您通过调用 API 实现内核系统层的相关功能,可直接调用上层软件,大大加快产品的开发速度。

数据存储

物联网平台碎片化严重,各种各样的芯片和操作系统,资源、能力差异非常大。但是物联网设备的存储需求通常如下:

  • 要有非常高的安全性,因为涉及到用户的隐私问题。
  • 要有非常高的可靠性,因为客户的场景不可控,必须在各种极端的情况下保证用户设备的可用性。
  • 要有性能的要求,保证用户的使用体验。

TuyaOS 提供了 KV DB,支持在文件系统、Flash 上实现一套基于 Key-Value 存储的加密数据库。屏蔽了底层介质、操作系统的差异,为您提供了安全、可靠、高效的数据存储服务。

内存管理

请参考 内存管理 查看 ADC 外设相关函数的使用说明。

消息处理

消息队列提供通用的消息处理功能。通过创建一个消息,并注册消息的回调函数,然后发送对应的消息ID的形式,实现异步的消息传递、串行处理能力。

TuyaOS 内部维护了一个叫 cmmod 的任务,所有的消息都是在此任务里处理,因此避免在消息回调里处理复杂的逻辑,否则会阻塞、影响其他消息的效率。避免在回调里采用过于深、复杂的逻辑,否则可能会导致堆栈溢出。

定时器

定时器支持毫秒级的定时功能,您可以创建、启动、定制、删除定时器。定时器有两种类型:

  • 一种是TIMER_ONCE,即仅执行一次,执行完成之后不再执行,等待您删除
  • 另一种是TIMER_CYCLE,会循环执行,一直到您停止或者删除这个定时器。

通过定时器和消息队列的结合,可以实现定时消息处理功能。通过创建一个定时消息,并注册定时消息的回调函数,实现异步的定时消息触发、传递、串行处理能力。

工作队列

提供通用的异步任务调度机制,将工作任务发送到指定的工作队列,工作队列会串行的执行队列里的工作任务。

资源丰富的平台可以根据自身的需求,创建自己的工作队列,并通过工作队列调度一些工作任务。

事件管理

TuysOS 提供轻量级的事件通知库,其特点如下:

  • 支持订阅和发布模式的事件机制,使用非常简单方便,可以在任意位置、任意时间进行时间的订阅。
  • 轻量级,专注于进程内部的事件通知,代码小巧,仅 400 多行。
  • 跨平台,基于 TuyaOS 的跨平台特性,可以在任意平台上运行。
  • 有弹性,默认情况下,事件是同步调用,基于 TuyaOS 的跨平台特性,可以在订阅函数里使用 Work Queue 或者 Timer Queue 实现多线程的异步机制。