关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > CortexM3内核的μC/OSII安全性与稳定性的研究

CortexM3内核的μC/OSII安全性与稳定性的研究

作者:时间:2010-12-21来源:网络收藏

摘要: 根据的特点,对μC/操作系统的和稳定性进行研究。利用上选配的MPU(Memory ProtectiON Unit,存储器保护单元),对μC/操作系统做适当的改进与优化。经测试,系统的与稳定性得到很大的提高。

引言

μC/是基于优先级的可剥夺型,系统中的所有任务都有一个唯一的优先级别,它适合应用在实时性要求较强的场合;但是它不区分用户空间和系统空间,使系统的变差。而移植到内核上的μC/OSII系统一般是运行在特权级下,以至于应用程序也可以访问操作系统的变量和常量,这样使得系统的安全性与稳定性变得更差。

1 开发坏境

采用IAR5.30作为开发环境,移植μC/OSII2.86到CortexM3内核,选用配置了MPU(Memory Protection Unit,存储器保护单元)的LPC1786处理器作为硬件实验平台,对操作系统的安全性和稳定性进行改进与优化。

2 CortexM3内核简介

在CortexM3内核*有两个堆栈指针:主堆栈指针(MSP),是系统上电后缺省的堆栈指针,它由OS内核、异常服务例程以及所有需要特权访问的应用程序代码来使用;进程堆栈指针(PSP),用于常规的应用程序代码(不处于异常服务例程中时)。

CortexM3处理器支持线程模式和处理模式两种工作模式,有特权级与用户级两个访问等级。异常处理总是工作在处理模式,只可使用主堆栈指针。处理模式总是在特权级下运行,而线程模式可在特权和用户级下运行。系统复位时总是处于线程模式的特权方式下,并且默认使用的堆栈指针是MSP。在用户级下,对特殊功能寄存器和系统控制空间(SCS)的大部分寄存器的访问是禁止的[2]。

经实验验证,在用户级下使用MSR、MRS指令访问特殊功能寄存器(CONTROL等),这些指令被当作NOP指令(空指令)执行,而对系统控制空间(SCS)寄存器访问会产生精确的总线访问异常。

另外,CortexM3内核还可以选配MPU(如LPC1700系列、LM3S系列处理器),用于对存储器进行保护。设定一块内存的访问权限,对系统的安全性有很好的帮助。

3 μC/OSII内核简介

μC/OSII是一个可移植、可固化、可裁剪的抢占式实时多任务内核。大部分用ANSI C语言编写,只有一小部分与硬件相关的代码用汇编语言编写。至今,μC/OSII已经在40多种不同架构的微内核处理器上移植成功[4]。μC/OSII 内核只提供了任务调度、任务管理、时间管理和任务间通信等基本功能,体系结构如图1所示。进行系统移植时,只需要修改OS_CPU_C.C、OS_CPU.H、OS_CPU_A.ASM这3个文件即可。

μC/OSII体系结构
μC/OSII体系结构
图1 μC/OSII体系结构

4 μC/OSII操作系统移植的改进

μC/OSII*****提供的基于CortexM3内核移植的μC/OSII系统一直工作在特权级下。这样做的好处是,系统不用频繁地切换访问等级,而且开关中断很快,利于实时性的实现;但是应用程序(用户任务)也可以访问特殊功能寄存器和系统控制空间(SCS)寄存器,修改操作系统的变量,这对系统的安全性是一种威胁,如果用户任务程序跑飞,那就有可能破坏系统寄存器和变量[5]。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭