LiteOS基础架构(5)—— Kernel模块–中断、队列、时间管理

LiteOS基础架构(5)—— Kernel模块–中断、队列、时间管理,第1张

LiteOS基础架构(5)—— Kernel模块–中断队列、时间管理 中断机制简介

中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务。此时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。

LiteOS的中断系统:

  • 中断初始化
  • 中断创建
  • 开/关中断
  • 恢复中断
  • 中断使能
  • 中断屏蔽


Kernel模块–中断运作机制

当中断产生时,处理机将按如下的顺序执行:
保存当前处理机状态信息

载入异常或中断处理函数到PC寄存器

把控制权转交给处理函数并开始执行

当处理函数执行完成时,恢复处理器状态信息

从异常或中断中返回到前一个程序执行点

Kernel模块–中断发生在任务上下文

任务在工作的时候,如果此时发生了一个中断,无论中断的优先级是多大,都会打断当前任务的执行,从而转到对应的中断服务函数中执行。

Kernel模块–中断嵌套发生

·在执行中断服务例程的过程中,如果有更高优先级别的中断源触发中断,由于当前处于中断处理上下文环境中,根据不同的处理器构架可能有不同的处理方式。

中断机制应用场景与开发流程

·当有中断请求产生时,CPU暂停当前的任务,转而去响应外设请求。根据需要用户通过中断申请,注册中断处理程序,可以指定CPU响应中断请求时所执行的具体 *** 作。

·开发流程

· 1、修改target_config.h中的配置项

·2、初始化硬件中断。

·3、调用中断创建接口函数创建中断,根据需要使能指定中断。

OSAL接口函数说明

接口名描述形参说明osal_int_connet硬中断创建,注册硬中断处理程序形参有:中断号,优先级,模式,中断函数,中断函数形参

int osal_int_connet(int intnum,int prio,int mode,fun_interrupt_handle_callback,void *arg);

中断机制功能实现

队列

队列又称消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。任务能够从队列里面读取消息,当队列中的消息是空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。

消息队列的运作过程

LiteOs的消息队列采用两个双向链表来维护,一个链表指向消息队列的头部,一个链表指向消息队列的尾部( stReadWriteList[QUEUE_HEAD_TAIL]),通过访问这两个链表就能直接访问对应的消息空间,并且通过消息队列控制块中的读写类型( usReadWriteableCnt[QUEUE_READ_WRITE])来 *** 作消息队列。

队列读写数据

时间管理

时间管理以系统时钟为基础。时间管理提供给应用程序所有和时间有关的服务。

系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。一个Tick的时长可以静态配置。

用户是以秒、毫秒为单位计时,而芯片cPU的计时是以Tick为单位的,当用户需要对系统 *** 作时,例如任务挂起、延时等,输入秒为单位的数值,此时需要时间管理模块对二者进行转换。

Tick与秒之间的对应关系可以配置。

Huawei LiteOs的时间管理模块提供时间转换、统计、延迟功能以满足用户对时间相关需求的实现。

软件定时器

软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。

硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足需求,提供更多的定时器,Huawei LiteOS *** 作系统提供软件定时器功能。

软件定时器扩展了定时器的数量,允许创建更多的定时业务。

软件定时器单次与周期模式

N个Huawei LiteOS中间件



Open API

开放的API接口

开放的API屏蔽底层差异,让应用开发者只需关注上层应用开发。

友好的兼容性使得已熟悉在Linux系统上开发应用的开发者,能够非常平滑的切换到Huawei LiteOS系统上开发,同时由于Huawei LiteOS系统的精简内核特性,使得开发者更容易理解内核。

端云互通组件

LwM2M/CoAP系统方案

Huawei LiteOS SDK端云互通组件针对“单模组、单MCu”和“外置MCU+模组”两种应用场景,提供了不同的软件架构。

LiteoS SDK端云互通组件层次构成

1.开放APl层: Liteos SDK端云互通组件的开放API为应用程序定义了通用接口,终端设备调用开放API能快速完成华为云物联网平台的接入、业务数据上报、下发命令处理等。对于外置MCU+模组的场景,LiteOS
SDK端云互通组件还提供了AT命令适配层,用于对AT命令做解析。

2.协议层: LiteOS SDK端云互通组件集成了LwM2M/CoAP/DTLS/TLS/UDP等协议。

3.驱动及网络适配层: LiteOS SDK端云互通组件为了方便终端设备进行集成和移植,提供了驱动及网络适配层,用户可以基于SDK提供的适配层接口列表,根据具体的硬件平台适配硬件随机数、内存管理、日志、数据存储以及网络Socket等接口。

4.LiteOs基础内核:为用户终端设备提供RTOS特性。

集成策略

可集成性:LiteOs SDK端云互通组件作为独立的组件,不依赖特定的芯片架构和网络硬件类型,可以轻松地集成到各种通信模组上,如NB-loT模组、eMTC模组、wIFI模组、,GSM模组、以太网硬件等。

可移植性:Liteos SDK端云互通组件的Adapter层提供了常用的硬件及网络适配接口,终端或者模组厂家可以根据自己的硬件实现这些接口后,即可完成Liteos sDK端云互通组件的移植。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5695517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存