microLite裸机系统04 | microLite裸机系统之内核(Kernel)

本文介绍了microLite裸机系统中的内核设计,包括Background和Foreground的概念,系统时钟SysClock,内核初始化与调度,以及定时器的使用。强调了软件定时器在实时性和耦合度方面的考量,提供了实现简单任务调度的方法。
摘要由CSDN通过智能技术生成

这里所谓的内核就是软件定时器,要想设计出简单易用的软件定时器,至少要做到不增加代码的耦合度。


Background和Foreground

一般小型系统由Background和Foreground构成。Background称为任务区,Foreground称为中断区。对实时性要求很高的操作要由中断区的中断服务程序来完成。位于Background区域的任务响应时间取决于超级循环(Super-Loops)执行一次的时间,也称之为扫描周期ScanCycleTime。扫描周期并不固定,任务执行过程中扫描周期的最大值意味着任务最坏的响应时间。
在这里插入图片描述
典型的小型系统任务区执行伪代码如下,


int main(void{
   
    内核初始化;
    外设初始化;
    while1{
    /*超级循环(Super-Loops)*/
        内核调度;
        任务1;
        任务2;
        任务3;
    }
 }

内核Kernel

内核主要为应用层的任务提供调度。主要由系统时钟sysClock和看门狗时钟watchdog的相关函数构成。

本章提到的函数原型可在ml_kernel.h中找到。


系统时钟SysClock

microLite要求开发人员设置定时中断来实现超时控制delay与延时sleep功能。

时钟节拍中断频率由tickRate决定,在MLKernel.Init的第一个参数设置,可设置为1000或100,表示每秒产生的tick数目,一般使用1000。microLite使用的时间单位为tick,如M

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值