新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种提高uc/os-ii操作系统安全性与稳定性的方法

一种提高uc/os-ii操作系统安全性与稳定性的方法

作者:时间:2013-11-04来源:网络收藏
引言

μC/OS-II是基于优先级的可剥夺型内核,实时性较强,但不区分用户空间和系统空间,使得系统的安全性变差。而μC/OS-II官网提供的基于内核移植的μC/OS-II操作系统,一直运行在特权级下,用户程序也可以访问操作系统的变量和常量,导致系统的安全性与稳定性变得更差。

1 开发坏境与内核简介

使用IAR 5.30开发环境,移植μC/OS-II 2.86到内核上,选用配置了MPU的处理器作为硬件实验平台。

Cortex-M3处理器支持:两种工作模式,线程模式和处理模式;两种访问等级,特权级和用户级;两个堆栈指针,主堆栈指针(MSP)和进程堆栈指针(PSP)。异常处理工作在“处理模式+特权级+MSP”下;线程模式下,访问等级与堆栈指针可以相互搭配使用;但是在用户级下,对特殊功能寄存器和系统控制空间(SCS)的大部分寄存器的访问是禁止的。

如果处理器(如LPC1700系列、LM3S系列等)配置有MPU,可通过设定内存的访问权限大幅度地提高系统的安全性。

2 μC/OS-II内核简介

μC/OS-II操作系统凭借其源代码公开、结构小巧、内核可剥夺、实时性高等诸多特性而得到广泛的应用,并且μC/OS-II绝大部分代码是用C语言编写的,便于移植到各种内核上。它提供了诸如任务调度、任务管理、时间管理、内存管理、中断管理,以及任务间的同步与通信等实时内核的基本功能,而没有提供输入输出管理、文件系统、图形用户接口及网络组件之类的额外服务。但由于μC/OS-II具有较好的可移植性和开源性,用户可以根据实际应用添加所需要的服务,而且系统移植只需修改文件OS_CPU_C.C、OS_CPU.H、OS_CPU_A.ASM。

3 μC/OS-II操作系统移植的改进

如果用户任务运行在“用户级+PSP”状态下,而调用操作系统函数时运行在“特权级+MSP”状态下,再配合MPU的使用,可以使系统的安全性与稳定性得到很大的提高。

3.1 设置系统寄存器

系统任务(统计任务、空闲任务等)只使用主堆栈指针MSP,并且一直运行在特权级下;而用户任务则使用PSP、MSP两个堆栈。在系统初始化时,设置MPU的相关寄存器,把内存分为特权级与用户级两个区,如图1所示。PSP分配在用户区,MSP、系统变量与常量分配在特权区,以提高系统的安全性。
一种提高uc/os-ii操作系统安全性与稳定性的方法

3.2 修改系统函数

为了任务首次运行时,可以进入相应的访问等级和使用相应的堆栈指针,在任务创建时,加入工作状态参数mode。在ucos_ii.h中定义访问等级与堆栈选择的常量:
一种提高uc/os-ii操作系统安全性与稳定性的方法

3.2.1 修改任务控制块OS_TCB

在任务控制块中加入MSP指针,形式如下:
一种提高uc/os-ii操作系统安全性与稳定性的方法


上一页 1 2 下一页

关键词: ucos-ii LPC1786 Cortex-M3

评论


相关推荐

技术专区

关闭