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

发布者:开国古泉最新更新时间:2007-11-12 来源: 单片机及嵌入式系统应用关键字:实时  响应  寄存  架构 手机看文章 扫描二维码
随时随地手机看文章
引 言

随着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业的硬件技术不断提升,探求高效软件方法同样是不容忽视的问题。虽然一些低效、存在速度瓶颈的程序问题.会随着时问推移因硬件技术的提升而化解,但编写高效软件是锻炼、提升编程人员技术水平的途径,有极强的技术性,需要有的放矢、长期的代码实践,才能磨砺出编写高效代码的技巧、方法和能力。在资源、设计成本、交货时间允许的日常设计中,应进行多重算法的优劣选择,而不要简单地使用头脑中首位闪现的方案。

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

上一篇:基于Nios II与FPS200的半导体指纹采集系统设计
下一篇:时分多线程在单片机系统中的应用研究

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

英特尔前总裁自立门户,推出ARM架构数据中心芯片
众所周知,服务器芯片一直被Intel垄断,不过近年来,AMD在这一领域开始崛起,逐渐蚕食Intel的市场,Intel对手可不止这一家,这不,Intel前总裁创立的公司也推出了服务器芯片,不过和Intel 至强处理器不同,该公司推出的是arm架构的数据中心芯片。不过,如果这家公司发展壮大,对Intel的影响还是不容忽视的。 据国外媒体报道,英特尔前总裁蕾妮·詹姆斯(Renee James)领导的初创公司Ampere Computing周二表示,该公司推出了其首批数据中心芯片,采用了ARM构架。 该公司表示,这些售价在550美元至850美元之间的新芯片,已经被联想集团和其他几家制造服务器的公司所选用。 英特尔在服务器芯片市场占据主导地
[嵌入式]
云计算催生创新终端:阿里云无影架构让AR终端更轻薄更强劲
云栖大会展出超算力超续航新品 个人计算终端呈现云端加速融合 11月2日云栖大会开放日上,一批搭载阿里云无影架构的新终端形态对外展出: 包括无影笔记本、Rokid Air+Station、谷东工业AR眼镜、MAXHUB智能显示器、5G本DEXBOOK等。个人计算终端呈现云端加速融合趋势。 无影笔记本是第一款云笔记本产品,呈现出计算力超出了硬件形态。这款笔记本 重量低于1.29千克,厚度低于13.9毫米 ,与苹果Macbook Air M1 相当。日前有评测达人透露,这款产品的工程样机在Cinebench上跑分达到12万以上,通过接入云上算力,被网友称为“全球第一”、“机皇”。 (图:无影笔记本及全家福产品特性)
[网络通信]
云计算催生创新终端:阿里云无影<font color='red'>架构</font>让AR终端更轻薄更强劲
实时单片机通讯网络中的内存管理
在AUTO 2000 DCS系统中,我们采用了单片机实时通讯网络.这是一种具有不确定控制站监控的主从式总线网络.大致的工作过程是:网络系统上电,各站点进行控制权争夺确立控制站和非控制站;控制站轮询各站点,被轮询的站点若有数据发送即成为主站,执行主机/从机的通讯;通讯结束后(无论成功与否)主站将控制权归还给控制站;控制站然后轮询下一个站点,周而复始。    为了提高通讯效率,采取了一系列相应的措施.例如,我们把站点集分为活动站点集和非活动站点集.这样,单片机网中如有某站点出现故障,该站点被控制站询问时响应将超时,则该站点将从活动站点集转到非活动站点集中.这样,系统在下一次轮询时就不再轮询该站点.故障站点恢复正常后或有新的站点开机上线
[单片机]
<font color='red'>实时</font>单片机通讯网络中的内存管理
小鹏汽车新一代感知架构XNet信息解读
在刚刚过去的CVPR会议上,作为国内唯一一家被邀请登台演讲的造车新势力,小鹏汽车向参会者介绍了小鹏汽车在国内量产辅助驾驶系统的经验。 作为小鹏汽车最新一代的感知架构,XNet在量产中发挥的作用不容小觑。 笔者有幸采访到小鹏汽车自动驾驶中心感知首席工程师 Patrick,更进一步得了解XNet的性能、架构,以及小鹏的自驾团队为搭建XNet所做的努力。 1. XNet实现的性能提升 XNet实现了感知结构的升级,拥有更好的性能,主要包括3个方面。 1.1超强环境感知能力,实时生成“高精地图” XNet可以根据周围环境实时构建“高精地图”。从上图我们可以看到,车辆正在经过一个环岛,图中显示的车道线不是来自于高精地
[汽车电子]
小鹏汽车新一代感知<font color='red'>架构</font>XNet信息解读
基于linux2.6.30.4的s3c2440寄存器的虚拟地址和物理地址的关系
1 想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。 刚开始学字符设备驱动,感觉最难的是驱动和底层硬件的连接。linux上的驱动程序,是基于操作系统之上的,他并不直接和底层的硬件打交道,但是我们写的驱动必须能使硬件“跑”起来,即与硬件紧密相连。 就拿最简单的LED驱动来说,我们的驱动程序是在虚拟的内存上面跑的,但是最终,LED的点亮还是必须靠GPIO管脚的高低电平来控制。那么,我们的虚拟的内存怎么才能和实际的硬件上面的寄存器对应起来呢? 这篇要写的就是ioremap这个映射函数,他可以将我们硬件上面的寄存器,映射为虚拟的内存,从而使驱动程序在我们的虚拟的内存中运行。 #incl
[单片机]
S3C2440裸机------异常与中断__CPU的工作模式和状态以及寄存
1.CPU工作模式(Mode) ARM CPU有七种模式,各种模式如下图所示。注意用户模式下不可进入其他模式,用户模式是在有操作系统的时候给应用程序使用的,写应用程序的人水平千差万别,不能保证写的程序是好是坏,所以让应用程序运行在用户模式,限制应用程序的权限,防止破坏整个系统, 2.状态(State) ARM架构的CPU有ARM state和Thumb state, ARM State:用的是ARM指令集,每个指令占据4 byte, Thumb State:用的是Thumb指令集,每个指令2 byte. 比如对于同样的一条指令,MOV R0,R1 对于ARM指令集就要占据四个字节,对于Thumb指令集占据两个字节
[单片机]
S3C2440裸机------异常与中断__CPU的工作模式和状态以及<font color='red'>寄存</font>器
特斯拉自研芯片架构带来的启示
如果我们说特斯拉只对机器学习感兴趣是轻描淡写的。事实上这家电动汽车制造商建造了一台名为 Dojo 的内部超级计算机,针对训练其机器学习模型进行了优化。 与许多其他超级计算机不同,Dojo 没有使用现成的 CPU 和 GPU,例如 AMD、Intel 或 Nvidia 的。特斯拉根据他们的需求设计了自己的微架构,让他们做出更通用架构无法做出的权衡。 在本文中,我们将根据特斯拉在 Hot Chips 上的演示来了解该架构。该架构没有单独的名称,因此为简单起见,每当我们在后面提到 Dojo 时,我们都是在谈论架构。 框图 从高层次上看,Dojo 是一个 8 宽内核,具有四路 SMT,运行在保
[汽车电子]
特斯拉自研芯片<font color='red'>架构</font>带来的启示
智能汽车通信架构概述
通信架构产业链 1. 通信架构产业链综述 早期汽车采用点对点的单一通信方式,相互之间少有联系。每一路信号传递都需要一根电缆连接交换数据,导致每一个ECU 都需要N 个接口,有些ECU 的接口数会是十几个甚至三十几个,形成庞大的布线系统。这引发了车辆空间占用、车重、成本、系统复杂度以及不稳定性等一系列问题。以CAN 为代表的现代总线出现以后,硬线连接大大减少,有效降低了系统、零部件设计的复杂度和开发成本,驱使整车企业与零部件供应商之间形成标准化协议。总线作为一种车辆网络拓扑结构,是车上所有电子和电气部件互联结构的线束表现,直接影响到控制器功能的分配、数据网络的规划,犹如汽车的神经。 目前汽车上普遍采用的汽车总线主要有控制
[汽车电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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