DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 211|回复: 0
打印 上一主题 下一主题

时分多线程技术在单片机中的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:37:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  本文就时分多线程技术在单片机中的应用进行了介绍。该方法为构建低成本、高效、便于维护的单片机系统提供了良好的体系框架结构和设计思想。
  1 时分多线程结构应用
  通常,在单片机应用的各种控制系统中,都或多或少地存在着诸如现场数据采集、控制量输出、工作状态检测以及数据传输等各种同外设的交互过程;而各类外设与Mcu的响应速度不匹配,是制约系统整体性能的重要因素。面对这种交互瓶颈,运用时分多线程架构可获得良好的效果。
  特别是对于系统与外设频繁进行数据交互的场合,能显著提升系统的实时响应能力。这里采用的是以时分轮转调度算法实现在单片机系统中的多任务控制目标。
  1.1 时分轮转调度算法的多线程实现
  时分轮转调度算法是以多个线程轮流占用cPu的执行时间来实现的。在外设交互频繁的应用场合中,可有效地解决响应速度不匹配所造成的CPU等待外设响应的时间消耗问题,从而提高MCU运算部件的利用率。
  而在多线程的调度切换过程中,要对上一个线程的运行环境进行保护,并为下一个线程做好准备。就单片机系统而言,要严格实现真正意义上的实时多线程控制,会受到容量、中断源、指针等一系列系统资源的条件限制。
  本文是以C8051F005单片机构建的应用系统。它是以805l内核为基础的,没有太多空间用于存放或保护任务切换时的现场数据(如程序指针、程序状态字、累加器等),也难于应用抢占式实时任务切换的实现激励机制,同时MCU速率也有限。
  针对单片机存在的这些资源瓶颈,运用时分轮转算法作为多线程控制算法架构,以非抢占式异步处理方法,在合理分配、运用通用工作寄存器组的情况下,通过整合或细分功能模块结构,将控制程序划分为各线程任务,以缩短CPU的闲置时间;并将每个线程的执行时间控制在时间片内,以降低上下文切换的复杂度,从而降低开发风险。
  1.2 多线程的管理策略及应用
  (1)时间片长度
  通过对控制功能、时序的合理组合,以时间片长度划分的程序片段,应确保每个线程的执行代码段在“时间片”内完成,以此降低线程任务的控制复杂度和设计风险。具体实施原则详见第2节。
  (2)线程协调方式
  通过设置标识量,将各时间片内的线程任务协调起来。例如,在键盘输入中的消抖动延时和键值冗余读取、在A/D数据采集中的采样触发与数值读取,以及SPI的数据传输等功能块,都可进行任务线程的作业步骤细分。通过设置线程的阶段标识量,协调前后时间片的线程执行步调.
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-14 13:51 , 耗时 0.096073 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表