时分多线程技术在单片机中的应用
本文就时分多线程技术在单片机中的应用进行了介绍。该方法为构建低成本、高效、便于维护的单片机系统提供了良好的体系框架结构和设计思想。
1 时分多线程结构应用
通常,在单片机应用的各种控制系统中,都或多或少地存在着诸如现场数据采集、控制量输出、工作状态检测以及数据传输等各种同外设的交互过程;而各类外设与Mcu的响应速度不匹配,是制约系统整体性能的重要因素。面对这种交互瓶颈,运用时分多线程架构可获得良好的效果。
特别是对于系统与外设频繁进行数据交互的场合,能显著提升系统的实时响应能力。这里采用的是以时分轮转调度算法实现在单片机系统中的多任务控制目标。
1.1 时分轮转调度算法的多线程实现
时分轮转调度算法是以多个线程轮流占用cPu的执行时间来实现的。在外设交互频繁的应用场合中,可有效地解决响应速度不匹配所造成的CPU等待外设响应的时间消耗问题,从而提高MCU运算部件的利用率。
而在多线程的调度切换过程中,要对上一个线程的运行环境进行保护,并为下一个线程做好准备。就单片机系统而言,要严格实现真正意义上的实时多线程控制,会受到容量、中断源、指针等一系列系统资源的条件限制。
本文是以C8051F005单片机构建的应用系统。它是以805l内核为基础的,没有太多空间用于存放或保护任务切换时的现场数据(如程序指针、程序状态字、累加器等),也难于应用抢占式实时任务切换的实现激励机制,同时MCU速率也有限。
针对单片机存在的这些资源瓶颈,运用时分轮转算法作为多线程控制算法架构,以非抢占式异步处理方法,在合理分配、运用通用工作寄存器组的情况下,通过整合或细分功能模块结构,将控制程序划分为各线程任务,以缩短CPU的闲置时间;并将每个线程的执行时间控制在时间片内,以降低上下文切换的复杂度,从而降低开发风险。
1.2 多线程的管理策略及应用
(1)时间片长度
通过对控制功能、时序的合理组合,以时间片长度划分的程序片段,应确保每个线程的执行代码段在“时间片”内完成,以此降低线程任务的控制复杂度和设计风险。具体实施原则详见第2节。
(2)线程协调方式
通过设置标识量,将各时间片内的线程任务协调起来。例如,在键盘输入中的消抖动延时和键值冗余读取、在A/D数据采集中的采样触发与数值读取,以及SPI的数据传输等功能块,都可进行任务线程的作业步骤细分。通过设置线程的阶段标识量,协调前后时间片的线程执行步调.
(3)线程管理
在时钟中断服务程序中,用任务号调度线程执行次序。根据控制目标、设备状态以及当前线程的执行结果,选择下一步将要执行的任务号;而各任务线程执行在主控循环程序中完成。也就是说,把时间片驱动以及任务调度与任务线程处理过程分开,这样有利于构建灵活、高效的软件框架结构,提高系统的实时响应能力与可维护性。
在以C8051F005芯片构建的应用系统中,为了缩短时间片中断服务程序的执行时间,提高系统的中断响应能力,任务线程调度以及上下文切换控制在T2时钟中断服务程序中实现,以事件发生标识TstateChange和线程标识TimeSlice进行线程调度。TstateChange用于控制主控循环方向,TimeSlice则用于调度就绪线程的执行次序。
为了降低系统功耗,提高系统可靠性,程序主控循环体在每个循环结束后都要使MCU进入体眠状态,并以时间片T2中断、其他异步中断源或引脚触发事件等唤醒MCU。而TstateChange状态标识量就是控制主控循环方向,以区分时间片任务线程调度与非T2等的异步中断事件。其主控循环流程如图1所示,其线程控制可以用如下程序结构实现。
该体系框架优点在于:可方便地构建控制关系并行的多线程架构;任务线程的执行时间明确;同时对调整任务线程执行时序、维护功能模块提供了便利。
缺陷是:由于构成的是非抢占式控制方式,在线程调度处理上不能确保时间关键的异步事件优先执行,这也是其器件内核的固有缺陷。
2 确定时间片长度
在统筹考虑任务线程段的代码量、外设响应、系统响应性能以及线程切换的数据保护量后,确定以lOms作线程时间片的切换单位。主要考虑以下几方面因素:
(1)任务线程段代码量的大小
根据各功能模块大小,依据相关性以及时序等逻辑关系,在考虑各功能模块内聚性、线程切换运算量的基础上,进行模块分解、合并,组成线程执行代码段,以确保线程执行代码段(包括中断服务程序的执行时间)能在时间片内完成,从而简化了控制模型,降低了多线程中上下文之间切换的复杂度。
例如处理键盘输入,为实现键盘输入的消抖动干扰、冗余读取键值以及持续按键与点击按键功能。通过设置若干
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)