嵌入式实时操作系统Salvo的内核分析与配置
发布时间:2008/5/27 0:00:00 访问次数:514
摘要:简要介绍salvo的基本特点;详细分析salvo的内核管理、运行机制;深入探讨salvo用户目标代码的生成与配置,并给出不同用户目标代码生成方式下的用户目标代码生成流程。
关键词:嵌入式操作系统 salvo 内核分析 任务控制块 配置
引言
目前电子产品开发广泛采用以微处理器为核心的电子系统。开发以微处理器为核心的电子系统(以下简称微处理器系统)采用传统的无限循环函数模式,产品的开发周期和稳定性都无法保障,因此,在微处理器系统开发中引入嵌入式实时操作系统rtos。rtos的引入消耗了部分系统资源。这部分系统资源对于高档微处理器系统影响不大;对于中小规模微处理器系统,特别是单片机系统,由于rtos资源的占用,使用户可用资源大大减少,严重影响系统的实时性,甚至系统功能无法完成。市场上虽然有一些专用于单片机的rtos,如应用于51系列单片机rtx51 tiny,但由于功能相对薄弱,无太大实用价值;另外也有一些功能较强的rtos可移植到单片机系统,但由于占用资源较多,需扩展大量的ram和rom,并且产时性差。本文介绍一种适用于小容量存储器单片机(如pic系列)系统且功能强大的rtos—salvo。
1 salvo特点
嵌入式实时操作系统salvo有两大特点:①占用系统资源少;②功能强大。
(1)salvo占用的系统资源
salvo最大的特点是占用系统资源少,特别是占用存储器资源极少。它不但适用于51系列单片机,也适用于存储器资源更少的pic系列单片机。salvo占用rom资源取决于用户调用的系统函数,占用ram取决于用户定义的变量、任务和事件的数量。以pic16系列单片机为例,每个全局变量占10b,任务点5b,事件占3b。
(2)salvo功能和性能
salvo是一个基于优先级任务切换,支持事件驱动的多任务嵌入式实时操作系统。salvo共支持16个任务优先级。且多个任务可以共用一个优先级,任务按优先级高低切换,对于多个同一优先级的任务,以时间片循环方式 (round-robin)切换。salvo支持任务和事件的数量不限,取决于ram的大小。(salvo默认支持255个任务、255个事件和255个消息队列)
图1
salvo内核主要提供以下几类函数供用户应用程序引用:
①任务管理—提供任务建立、任务撤消等功能;
②时间管理—提供任务延时函数等功能;
③信号管理—提供信号量建立、删除、等待、发出等功能;
④消息管理—提供消息建立、删除、等待、发出等功能。
2 salvo的内核分析
(1)任务状态及状态转移
salvo的用户任务具有以下几种状态:
①运行状态。任务占用系统资源正在运行中,任务一时刻只能有一个任务可以处于运行状态;
②就绪状态。由于任务的优先级不是最高优先级,任务正在等待运行;
③延时状态。任务先前已运行过,现在暂停运行等待延时时间到达,一旦延时时间到达,任务处于就绪状态;
④停止状态。任务先前已运行过,现在由于某种确定原因暂停运行,直到rtos再次启动该任务;
⑤等待状态。任务暂停运行,直到它的等待事件发生。
salvo的任务状态转移图如图1所示。
(2)任务同步和通信
为保证应用系统各任务的协调和信息传输,嵌入式操作系统需要同步和通信机制。一般采用信号量、事件标志、消息和消息队列实现任务间的同步和通信。
信号量(semaphores)分二进制信号量和计数式信号量,用于表示事件的发生或对共享资源的访问。信号量使用前应先采用oscreatesem()函数产生,信号量接收的任务在处理中用os_waitsem()函数等待事件发生而挂起。一旦信号量发送,任务根据事件的发送情况用ossignalsem()函数设置信号量,挂起的信号量接收任务继续运行。对于二
摘要:简要介绍salvo的基本特点;详细分析salvo的内核管理、运行机制;深入探讨salvo用户目标代码的生成与配置,并给出不同用户目标代码生成方式下的用户目标代码生成流程。
关键词:嵌入式操作系统 salvo 内核分析 任务控制块 配置
引言
目前电子产品开发广泛采用以微处理器为核心的电子系统。开发以微处理器为核心的电子系统(以下简称微处理器系统)采用传统的无限循环函数模式,产品的开发周期和稳定性都无法保障,因此,在微处理器系统开发中引入嵌入式实时操作系统rtos。rtos的引入消耗了部分系统资源。这部分系统资源对于高档微处理器系统影响不大;对于中小规模微处理器系统,特别是单片机系统,由于rtos资源的占用,使用户可用资源大大减少,严重影响系统的实时性,甚至系统功能无法完成。市场上虽然有一些专用于单片机的rtos,如应用于51系列单片机rtx51 tiny,但由于功能相对薄弱,无太大实用价值;另外也有一些功能较强的rtos可移植到单片机系统,但由于占用资源较多,需扩展大量的ram和rom,并且产时性差。本文介绍一种适用于小容量存储器单片机(如pic系列)系统且功能强大的rtos—salvo。
1 salvo特点
嵌入式实时操作系统salvo有两大特点:①占用系统资源少;②功能强大。
(1)salvo占用的系统资源
salvo最大的特点是占用系统资源少,特别是占用存储器资源极少。它不但适用于51系列单片机,也适用于存储器资源更少的pic系列单片机。salvo占用rom资源取决于用户调用的系统函数,占用ram取决于用户定义的变量、任务和事件的数量。以pic16系列单片机为例,每个全局变量占10b,任务点5b,事件占3b。
(2)salvo功能和性能
salvo是一个基于优先级任务切换,支持事件驱动的多任务嵌入式实时操作系统。salvo共支持16个任务优先级。且多个任务可以共用一个优先级,任务按优先级高低切换,对于多个同一优先级的任务,以时间片循环方式 (round-robin)切换。salvo支持任务和事件的数量不限,取决于ram的大小。(salvo默认支持255个任务、255个事件和255个消息队列)
图1
salvo内核主要提供以下几类函数供用户应用程序引用:
①任务管理—提供任务建立、任务撤消等功能;
②时间管理—提供任务延时函数等功能;
③信号管理—提供信号量建立、删除、等待、发出等功能;
④消息管理—提供消息建立、删除、等待、发出等功能。
2 salvo的内核分析
(1)任务状态及状态转移
salvo的用户任务具有以下几种状态:
①运行状态。任务占用系统资源正在运行中,任务一时刻只能有一个任务可以处于运行状态;
②就绪状态。由于任务的优先级不是最高优先级,任务正在等待运行;
③延时状态。任务先前已运行过,现在暂停运行等待延时时间到达,一旦延时时间到达,任务处于就绪状态;
④停止状态。任务先前已运行过,现在由于某种确定原因暂停运行,直到rtos再次启动该任务;
⑤等待状态。任务暂停运行,直到它的等待事件发生。
salvo的任务状态转移图如图1所示。
(2)任务同步和通信
为保证应用系统各任务的协调和信息传输,嵌入式操作系统需要同步和通信机制。一般采用信号量、事件标志、消息和消息队列实现任务间的同步和通信。
信号量(semaphores)分二进制信号量和计数式信号量,用于表示事件的发生或对共享资源的访问。信号量使用前应先采用oscreatesem()函数产生,信号量接收的任务在处理中用os_waitsem()函数等待事件发生而挂起。一旦信号量发送,任务根据事件的发送情况用ossignalsem()函数设置信号量,挂起的信号量接收任务继续运行。对于二