liteos源码详解(LiteOS内核源码分析系列三)

这是关于中断的第一篇,先熟悉下中断的相关概念内容太长分开发,今天小编就来说说关于liteos源码详解?下面更多详细答案一起来看看吧!

liteos源码详解(LiteOS内核源码分析系列三)

liteos源码详解

这是关于中断的第一篇,先熟悉下中断的相关概念。内容太长分开发。

本文我们来一起学习下LiteOS中断模块的源代码,文中所涉及的源代码,均可以在LiteOS开源站点https://gitee.com/LiteOS/LiteOS 获取。中断源代码、开发文档,示例程序代码如下:

  • LiteOS内核中断源代码包括中断模块的私有头文件kernel\base\include\los_hwi_pri.h、头文件kernel\include\los_hwi.h、C源代码文件kernel\base\los_hwi.c。
  • 中断控制器实现代码开源LiteOS支持的中断控制器有通用中断控制器GIC(General interrupt Controller)、嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller),本文以STM32F769IDISCOVERY为例,分析一下适用于Cortex-M核的NVIC。各中断控制器的源代码包含头文件、源文件,代码路径如下:https://gitee.com/LiteOS/LiteOS/blob/master/targets/bsp/hw/include/、https://gitee.com/LiteOS/LiteOS/blob/master/targets/bsp/hw/arm/interrupt/gic/、https://gitee.com/LiteOS/LiteOS/blob/master/targets/bsp/hw/arm/interrupt/nvic/。
  • 开关中断汇编实现代码

开关中断的函数UINT32 ArchIntLock(VOID)、UINT32 ArchIntUnlock(VOID)、ArchIntRestore(UINT32 intSave)是基于汇编语言实现的,根据不同的CPU架构,分布在下述文件里: arch\arm\cortex_a_r\include\arch\interrupt.h、arch\arm64\include\arch\interrupt.h、arch\arm\cortex_m\src\dispatch.S。

  • 开发指南中断文档在线文档https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Kernel_Developer_Guide.md#中断。

我们先看看中断的相关概念,详细的介绍,请参考LiteOS开发指南中断文档。

1、中断概念介绍

中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。当外设需要CPU时,将通过产生中断信号使CPU立即中断当前任务来响应中断请求。在剖析中断源代码之前,下面介绍些中断相关的硬件、中断相关的概念。

1.1 中断相关的硬件介绍

与中断相关的硬件可以划分为三类:设备、中断控制器、CPU本身。

  • 设备

发起中断的源,当设备需要请求CPU时,产生一个中断信号,该信号连接至中断控制器。

  • 中断控制器

中断控制器是CPU众多外设中的一个,它一方面接收其它外设中断引脚的输入。另一方面,它会发出中断信号给CPU。可以通过对中断控制器编程来打开和关闭中断源、设置中断源的优先级和触发方式。

  • CPU

CPU会响应中断源的请求,中断当前正在执行的任务,转而执行中断处理程序。

1.2 中断相关的概念
  • 中断号

每个中断请求信号都会有特定的标志,使得计算机能够判断是哪个设备提出的中断请求,这个标志就是中断号。

  • 中断优先级

为使系统能够及时响应并处理所有中断,系统根据中断时间的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。

  • 中断处理程序

当外设产生中断请求后,CPU暂停当前的任务,转而响应中断申请,即执行中断处理程序。产生中断的每个设备都有相应的中断处理程序。

  • 中断向量

中断服务程序的入口地址 。

  • 中断向量表

存储中断向量的存储区,中断向量与中断号对应,中断向量在中断向量表中按照中断号顺序存储。

  • 中断共享

当外设较少时,可以实现一个外设对应一个中断号,但为了支持更多的硬件设备,可以让多个设备共享一个中断号,共享同一个中断号的中断处理程序形成一个链表。当外部设备产生中断申请时,系统会遍历中断号对应的中断处理程序链表,直到找到对应设备的中断处理程序。在遍历执行过程中,各中断处理程序可以通过检测设备ID,判断是否是这个中断处理程序对应的设备产生的中断。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页