时分多线程在单片机系统中的应用研究

发布者:RadiantDreams最新更新时间:2010-08-03 来源: 单片机与嵌入式系统应用关键字:多线程  单片机  时分 手机看文章 扫描二维码
随时随地手机看文章

    随着IT技术的飞速发展,单片机应用系统几乎覆盖了社会生活的各个角落,从消费电子、通信网络、工业控制、汽车到军事等领域皆可觅其踪影;而在硬件、软件以及网络技术日益成熟的今天,其应用形式正呈现多样性和复杂性。尤其是SoC、可配置内核等性能的出现,其可裁剪性使系统设计成本大大降低,减小了系统设计工作量,为单片机应用提供了便利,在产品设计、更新换代等应用方面也备受青睐。
   
    为适应这些纷繁的应用需求.本文就时分多线程技术在单片机中的应用进行了介绍。该方法为构建低成本、高效、便于维护的单片机系统提供了良好的体系框架结构和设计思想。  

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)任务线程段代码量的大小
   
    根据各功能模块大小,依据相关性以及时序等逻辑关系,在考虑各功能模块内聚性、线程切换运算量的基础上,进行模块分解、合并,组成线程执行代码段,以确保线程执行代码段(包括中断服务程序的执行时间)能在时间片内完成,从而简化了控制模型,降低了多线程中上下文之间切换的复杂度。
  
    例如处理键盘输入,为实现键盘输入的消抖动干扰、冗余读取键值以及持续按键与点击按键功能。通过设置若干标识变量,细分键值处理线程的时序作业步骤,使每个作业执行时间片小于lOms,从而适应时钟片调度的时间约束条件,降低设计风险。
   
    对按键的20~30ms防抖动延时,可通过设置标识量keydelay,在时间片中断服务程序中进行延时计数,而在主循环程序中就可进行如下处理。  



(2)外设响应
   
    在考虑MCU同各种外设交互的延时因素中,要综合平衡外设延时时间、线程切换、时间片周期等因素对系统整体综合性能的影响,最大限度地提升CPU利用率。
  
(3)A/D数据转换速率
   
    对所读温度、功率值的采样频率,根据C8051F005的片上A/D转换速率以及数字滤波处理的信号冗余读数要求,兼顾时间片大小。 

3 特别注意事项
   
    ①时间片中断T2应设最高优先级,以免其他中断程序干扰时间片调度程序的实时性处理。

    ②中断服务程序的调度算法应尽量简短,提高系统的响应能力。

    ③注意堆栈操作的溢出控制。

    ④分配在时间片中的线程代码段要有合理的组合与调度考虑,以均衡负担CPU的时间片,降低设计风险。

    ⑤在初始化系统状态时,确保线程状态标识的创建,以及时间片中断T2的使能。

    ⑥慎重处理中断服务程序执行时间,避免挤占线程时间片的正常处理,引起控制紊乱、系统崩溃。  

结语
  
    针对日益复杂、多样、高实时要求的应用项目,本文提供了一种易于设计、功能便于扩充的解决方案。由此也启示我们,采用正确、灵活的设计方法,综合运用现有技术,可有效提高单片机应用系统性能,扩大应用领域,增强实时控制能力,降低开发难度。
   
    当前,随着IT业的硬件技术不断提升,探求高效软件方法同样是不容忽视的问题。虽然一些低效、存在速度瓶颈的程序问题.会随着时问推移因硬件技术的提升而化解,但编写高效软件是锻炼、提升编程人员技术水平的途径,有极强的技术性,需要有的放矢、长期的代码实践,才能磨砺出编写高效代码的技巧、方法和能力。在资源、设计成本、交货时间允许的日常设计中,应进行多重算法的优劣选择,而不要简单地使用头脑中首位闪现的方案。

关键字:多线程  单片机  时分 引用地址:时分多线程在单片机系统中的应用研究

上一篇:瑞萨电子牵手全国大学生电子设计竞赛
下一篇:TI年底前推智能手机和平板电脑用双核芯片

推荐阅读最新更新时间:2024-03-16 12:29

ARM7单片机轻松入门与实践
ARM7是32 位通用微处理器ARM(Advanced RISC Machines)家族中的一员,具有比较低的电源消耗和良好的性价比,基于(精简指令)RISC结构,指令集和相关的译码机制与微程序控制的复杂指令系统的计算机相比要相对简单,这使得它拥有比较高的指令处理能力和实时中断响应能力。 本课程是ARM7单片机学习者从入门到深入的一套经典视频教程,以初学者为对象,从零开始手把手教你学习单片机,循序渐进地基于理论讲解并结合实验项目实战开发,讲解当前最热门的ARM7单片机的C程序设计! 本教程的亮点就是在分析初学者认知规律的基础上,结合国内重点大学一线教师的教学经验以及借鉴国外经典教材的写作手法,对ARM7单片机的应用基础知
[单片机]
ARM7<font color='red'>单片机</font>轻松入门与实践
87C196MC单片机内部存储器的重复编程
本文针对Intel 87C196MC单片机内部存储器的不可擦除性,对两种情况下的使用问题提供了可以有效实现重复编程的方法,并可以推广至其他任何带有OTPROM的单片机系列的编程应用中。 1 87C196MC单片机内部存储器的编程方式 Intel 87C196MC单片机支持三种编程方式:自动编程方式(使87C196MC单片机不用EPROM编程器即可从外部EPROM对自己编程)、从机编程方式(给外部EPROM编程器提供了一个标准接口)和实时编程方式(运行中编程方式,可以在软件控制下实时对单个EPROM单元编程)。和其他方式不同,实时编程可以在不进入全EPROM编程方式下完成。 对于Intel 87C196MC单片机的OTPROM只
[单片机]
87C196MC<font color='red'>单片机</font>内部存储器的重复编程
华大半导体:布局物联网时代的动与静
日前,深圳2017国际电子展暨嵌入式系统展在深圳会展中心盛大召开,华大半导体展出的自主系列MCU芯片及应用方案显示了华大强大的芯片设计、算法研究和方案开发能力。展会期间华大半导体MCU事业部总经理谢文录接受了记者的采访,畅聊了华大半导体在物联网时代下动与静的产品布局以及在国际舞台的挑战和机遇。 “动”“静”相宜,打造MCU产品线 对于华大“动”与“静”的概念,谢文录解释到,物联网是物理世界与信息世界的融合,物理世界将信息采集、感知送到信息世界,信息世界处理完将指令发送到物理层去执行,这其中的关键点就是“感知”和“执行”。 在物联网快速发展的环境下,感知意味物联网设备要对
[嵌入式]
华大半导体:布局物联网时代的动与静
基于单片机DS1302电子时钟闹钟控制系统
一、系统方案 本设计采用STC89C52作为主控制器,DS1302计时,液晶1602显示,按键设置时分秒,闹钟,实际时间走时达到闹钟时间,蜂鸣器报警提醒。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化: /*************定时器0初始化程序***************/ void init_time0() { EA = 1; //开总中断 TMOD = 0X12; //定时器0、工作方式1 TH1= 0X3C; TL1 = 0XB0; //50ms ET1 = 1; //开定时器0中断 TR1 = 1; //允许定时器0定时 TH0=0x00; //重载值 TL0=0x00; //初始化
[单片机]
基于<font color='red'>单片机</font>DS1302电子时钟闹钟控制系统
基于51单片机之74HC165实验例程
************************** Copyright(C)CaKe ***************************************** ================================================== ==============**文件名 : main.c ============== ==============**作者 : CaKen ============== ==============**版本号 : V1.0 ============== ==============**时间 : 2014.
[单片机]
单片机设计频率计
实验目标 频率计是我们经常会用到的实验仪器之一,本实验要使用单片机和计数电路及液晶器件来设计一个宽频的频率计。 期望达到10Hz-1.1G范围的频率精确测量。 实验电路图(初步方案) 1) 计数及显示电路: (点击图片放大) 2)前置放大及分频电路: 那位大侠有好的电路??? 设计思路 频率的测量实际上就是在1S时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。 由于单片机自带计数器输入时钟的频率通常只能是系统时钟频率
[单片机]
用<font color='red'>单片机</font>设计频率计
MCU应用系统与Internet连接的一种新技术
摘要:介绍一种新型的智能网络接口芯片PS2000及其应用。PS2000是Webchip网络接口系列中的重要成员,通过它可以实现智能装置与PC机平台的网关接口,使智能装置通过PS2000上网十分方便,设计者在设计这样的系统时无须熟知网络协议。 关键词:网络接口芯片 Internet Webchip PS2000 MCU Gateway 前言 今天为们生活在一个信息时代,Internet已经成为信息社会的重要组成部分,Internet技术将深入到日常生活和工作所用到的电子设备中。我们知道,Internet技术得以迅速发展的主要推动力之一是标准十分成熟的PC工业。无论是PC机的硬件平台,还是软件操作系统都高度标准化,上网的操作方
[应用]
PIC单片机人机接口模块独立式按键的元器件选型
独立式键盘就是一个按键对应着一个端口输入,每一个按键都有一个按键电路来区分其是否按下。下面将首先介绍按键的结构,然后再介绍按键的外扩电路,以便于读者对独立式键盘有一个清晰和完整的认识。   按键分为单路和多路,在实际的应用中,按键和开关的功能是基本相同的,现在将基本的按键及开关汇总,如图所示。   图 基本按键和开关   下面的按键及开关中不仅有单路的、双路的,还有多路的。有些开关是选择开关,一般选择开关只有两路,不是第一路就是第二路;另外,还有一选二的开关,即有两路开关,可以选择两路同时开或关。   这些例子基本上涵盖了实用的按键和开关,另外还需注意,尽管按键或者开关的电路相同,但是其形状和指标都不同。例如,平时
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved