1、SYS/BIOS--HWI

本文深入解析SYS/BIOS的HWI线程,作为最高优先级的中断服务程序,HWI线程在系统启动后优先执行。介绍了HWI线程的生命周期中的钩子函数,包括Register、Create、Begin、End和Delete,并展示了动态和静态创建HWI线程的例子,以及钩子函数的结构体定义和执行顺序。
摘要由CSDN通过智能技术生成

在SYS/BIOS中,一个线程就是控制单点,它能够激活一个函数的调用,或者是激活一段中断服务程序(ISR)。SYS/BIOS中提供了一系列具有不同属性的线程,每个线程类型具有不同的优先权和执行特性,各种线程从最高优先级到最低优先级排列如下:

  1. HWI(硬件中断):包括了定时器函数
  2. SWI(软件中断):包括了CLOCK函数
  3. TASK(任务)
  4. IDLE(后台空闲线程)

本文主要讲解SYS/BIOS中的HWI线程。HWI也成为中断服务程序(ISR)是SYS/BIOS中具有最高优先级的线程:

 从上图可以看出,在我们编写一个main程序时,其后台的处理流程是:先进行初始化,紧接着执行BIOS_start函数,执行SYS/BIOS中的HWI线程,处理完成后才会执行空闲的循环线程。

钩子:HWI,SWI,TASK线程在线程生命周期内可以提供插入点来插入用户代码,方便调试代码,每个这种代码叫做一个“钩子”,提供给钩子的函数叫钩子函数。

HWI线程具有以下5种钩子函数:

  1. Register:在静态创建的HWI下,运行时被初始化前调用的一个函数。在main函数前启动,并且在中断使能之前。

  2. Create:创建HWI时调用的一个函数,包含静态创建与动态创建。

  3. Begin:在运行ISR函数前调用的一个函数。

  4. End:在ISR运行完后调用的一个函数。

  5. Delete:在运行时删除HWI线程的一个函数 。

动态创建HWI线程:

 hwi0是一个创建HWI对象的句柄,id是定义的中断号,hwiFunc是与中断相关的函数名,hwiParams是一个结构体,这里将其参数设置为5。eb是一个错误块,通过它处理在创建硬件中断对象时可能发生的错误。

静态创建HWI线程: 

 结果与上面相同。

钩子函数的结构体定义如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值