logo好方法网

一种基于Cortex-M3核的单片机临界区访问方法


技术摘要:
一种基于Cortex‑M3核的单片机临界区访问方法,在任务访问临界区之前,通过设置标志位并利用标志位来判断临界区是否有任务在执行,以此标志位来标志该任务为挂起或调度,使临界区执行代码过程中总中断保持打开状态,并以此标志位来切换临界区的任务。通过设置标志位并  全部
背景技术:
随着智能手机、智能家居等智能终端设备的普及,人们日常的生活消费越来越离 不开嵌入式电子产品,在此背景下,带动了wifi、蓝牙、摄像头、刷卡等模块需求。由于传统 的嵌入式C语言程序单线程模式,对于类似功能单一的模块,已经很难满足需求。因此,简单 的单片机操作系统应运而生,如FreeRTOS、UCOS,对于这些单片系统,使用过程中发现,临界 区很不好用,这些单片机实时系统临界区实现顺序为: 1、关总中断,进入临界区; 2、执行临界区代码; 3、开总中断,退出临界区。 关闭总中断过程中,函数中断挂起等待,这个过程中,最多只能有一个中断挂起等 待,其余的丢了,等总中断开了才能把挂起等待的函数执行。临界区代码执行为了不受干 扰,在关闭总中断过程中执行。按照指示说明,关中断过程中,即执行临界区代码过程中,如 果有两个或两个以上中断来,都会丢失,在执行临界区代码的时候,不能进行任务切换。为 了尽量减少这些现象,系统要求临界区代码执行时间尽量短。
技术实现要素:
针对上述技术方案的不足,本发明提供一种基于Cortex-M3核的单片机临界区访 问方法,通过设置标志位并以此标志位来标志任务为挂起或调度,使临界区中能切换任务, 临界区可以长时间保持运行。 为实现上述目的,本发明是这样实现的: 一种基于Cortex-M3核的单片机临界区访问方法,其特征在于在任务访问临界区 之前,通过设置标志位并利用标志位来判断临界区是否有任务在执行,以此标志位来标志 该任务为挂起或调度,使临界区执行代码过程中总中断保持打开状态,并以此标志位来切 换临界区的任务。 进一步,该标志位包括临界区代码标志位和任务等待标志位,临界区代码标志位 用来表示这一块临界区代码有没有任务在执行;任务等待标志位,用来表示这个任务是不 是处于等待临界区代表状态。程序初始化的时候清除临界区代码标志位,任务创建的时候 清除任务等待标志位。 进一步,该临界区被访问的顺序包括以下步骤: S1、关闭总中断,防止关键标志位被其他并行执行的任务改变; S2、判断临界区标志位,为进入临界区作准备; S3、如果临界区标志位没有置位,则置位临界区标志位,跳转S5; 3 CN 111552552 A 说 明 书 2/3 页 S4、如果临界区标志位已经置位,则标记任务等待标志位,打开总中断,等待时间 片到,调度走本任务,在之后的任务调度中忽略此任务调度,不再执行下面的步骤; S5、为了响应中断和参与系统任务调度,打开总中断,执行临界区代码; S6、关闭总中断,防止关键标志位,被其他并行执行的任务打断,清除临界区标志 位,清除其他任务等待标志位,可以让其他任务进入临界区代码执行; S7、打开总中断,继续执行临界区以外的代码; 进一步,在步骤S7打开总中断之前,还包括以下步骤:S70、通过查找任务等待标志 位判断是否有等待临界区的任务;如果没有直接打开总中断退出;如果有,则清除此任务等 待标记,等待下一轮任务调度执行。 进一步,在步骤S2-S4中,进入临界区,先判断此临界区标志位,确定临界区是否被 其他任务运行,如果没有,则把临界区标志位置位,并进入临界区执行代码,如果有其他任 务运行,则把当前任务置为等待状态,任务时间片到再调度到其他任务;把任务置为等待状 态,下次系统按照时间片调度的时候,就不再调度此等待任务。 进一步,在步骤S2-S4、S6,这些步骤中,总中断是关闭的,关闭总中断的时间内,是 不能响应外部中断,不能进行系统调度的。但是在这一个时间内,十几条赋值指令和判断指 令,时间非常短暂(微秒级别),且如果这段时间来的中断,会先挂起,等总中断打开之后会 执行挂起的中断,因此,这些步骤对程序中断影响微乎其微。 进一步,在步骤S6中,退出临界区,把临界区标志位清除,然后把所有的任务中等 待标志清除,所有在等待临界区的任务可以在下一次系统调度任务的时候,按照步骤S2的 方式进入临界区代码执行。 进一步,所述任务的生命周期为: A、任务创建,初始化并保存任务相关信息,包括清除任务等待标志; B、任务调度,读取任务等待标志位,如果任务在等待临界区则忽略此任务去调度 下一个任务; C、任务完成,标记此任务,等待下一次调度此任务再删除此任务。 本申请的优势在于,通过设置标志位并以此标志位来标志任务为挂起或调度,使 临界区中能切换任务,临界区可以长时间保持运行,临界区运行过程中能够响应其他中断, 临界区运行过程中还能够参与系统调度其他任务。 附图说明 图1是一种基于Cortex-M3核的单片机临界区访问方法的流程示意图。
下载此资料需消耗2积分,
分享到:
收藏