论文部分内容阅读
摘要:嵌入式实时操作系统是整个嵌入式实时系统的核心,采用嵌入式实时操作系统( RTOS)可以更合理、更有效地利用CPU资源,简化应用软件设计,缩短系统开发时间。该文基于Cortex-M3芯片内核,设计并实现了一种针对RTOS的任务核心机制,包括任务切换、任务时间片切换、任务延时接口实现、临界区保护、多优先级任务等功能,从而高效率实现了基于RTOS任务管理,提高了系统的实时性和可靠性。
关键词:Cortex-M3:RTOS;任务机制;切换;多优先级
中图分类号:TP316 文献标识码:A
文章编号:1009-3044(2020)33-0074-02
开放科学(资源服务)标识码(OSID):
1 背景
在后PC时代,嵌入式的发展逐渐取代PC成为时代主流,嵌入式实系统的应用日益广泛[1]。嵌入式实时操作系统( RTOS)是以应用为中心,以计算机技术[2]为基础,软硬可裁剪[3],适应应用系统对功能、可靠性[4]、成本、體积、功耗等严格要求,当外界事件或数据产生时,能够接受并以足够快的速度予以处理[5]。其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应[6],调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。
RTOS系统如果要有更好的事件实时处理机制,需要对任务机制进行设计,让其对任务进行较好的管理,设计任务的切换,任务时间片设计、任务延时接口处理、临界区及调度锁的保护、多优先级任务等。
2 Cortex-M3芯片内核
Cortex-M3是ARM公司开发的CPU内核。Cortex-M3是一个32位处理器内核,内部的数据路径是32位,寄存器是32位,存储器接口是32位。Cortex-M3采用哈佛架构,拥有独立的指令总线和数据总线,取指与数据访问可以同时进行。
Cortex-M3支持小端模式、大端模式。Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图1所示:
Cortex-M3预先定义了“粗线条的”存储器映射。通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作。各个分区存储器映射如图2所示:
3 任务核心机制的设计与实现
3.1任务切换
任务切换又叫上下文切换,当操作系统需要运行其他任务时,操作系统首先会保存和当前任务相关的寄存器的内容到当前任务的栈中,然后从将要加载的任务的栈中取出之前保存的全部寄存器的内容并加载到相关的寄存器中,从而继续运行被加载的任务[7]。
构建一个最小的两个任务切换运行的小系统,目的是理解RTOS任务切换的核心原理[8]。有两个任务,分别执行taskIEn-try和task2Entry。功能是分别对相应的变量进行周期性置0置1,每次完成从1-
关键词:Cortex-M3:RTOS;任务机制;切换;多优先级
中图分类号:TP316 文献标识码:A
文章编号:1009-3044(2020)33-0074-02
开放科学(资源服务)标识码(OSID):
1 背景
在后PC时代,嵌入式的发展逐渐取代PC成为时代主流,嵌入式实系统的应用日益广泛[1]。嵌入式实时操作系统( RTOS)是以应用为中心,以计算机技术[2]为基础,软硬可裁剪[3],适应应用系统对功能、可靠性[4]、成本、體积、功耗等严格要求,当外界事件或数据产生时,能够接受并以足够快的速度予以处理[5]。其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应[6],调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。
RTOS系统如果要有更好的事件实时处理机制,需要对任务机制进行设计,让其对任务进行较好的管理,设计任务的切换,任务时间片设计、任务延时接口处理、临界区及调度锁的保护、多优先级任务等。
2 Cortex-M3芯片内核
Cortex-M3是ARM公司开发的CPU内核。Cortex-M3是一个32位处理器内核,内部的数据路径是32位,寄存器是32位,存储器接口是32位。Cortex-M3采用哈佛架构,拥有独立的指令总线和数据总线,取指与数据访问可以同时进行。
Cortex-M3支持小端模式、大端模式。Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图1所示:
Cortex-M3预先定义了“粗线条的”存储器映射。通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作。各个分区存储器映射如图2所示:
3 任务核心机制的设计与实现
3.1任务切换
任务切换又叫上下文切换,当操作系统需要运行其他任务时,操作系统首先会保存和当前任务相关的寄存器的内容到当前任务的栈中,然后从将要加载的任务的栈中取出之前保存的全部寄存器的内容并加载到相关的寄存器中,从而继续运行被加载的任务[7]。
构建一个最小的两个任务切换运行的小系统,目的是理解RTOS任务切换的核心原理[8]。有两个任务,分别执行taskIEn-try和task2Entry。功能是分别对相应的变量进行周期性置0置1,每次完成从1-