当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式实时操作系统Salvo的内核分析与配置

    摘要:简要介绍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提供OSCreateBinSem()、OS_WaitBinSem()、OSSignalBinSem()等函数用于二进制信号量的产生、等待和设置等功能。

图2

    事件标志(event flags)用于某任务与多个事件的同步。任务与多个事件的同步可以是独立同步(逻辑或关系),也可以是关联同步(逻辑与关系)。Salvo提供OSCreateEFlag()、OS_WaitEFlag、OSSignalEFlag()等函数用于事件标志的产生、等待和设置等功能。

信号量和事件标志只能用于传递事件的发生或对共享事件的访问,任务间其它信息的传递通过消息(messages)实现。消息可以传递各种信息,包括数值、字符、数组、函数、指针等。任务间传递的并非消息本身,而是指向消息的指针,消息内容的含义由发送和接收消息的任务约定。Salvo提供OSCreateMsg()、OS_WaitMsg()、OSSignalMsg()等函数用于消息的产生、等待和设置等功能。消息队列实际是消息阵列,用于任务或中断服务程序(ISR)向一个或多个任务发送消息,队列中的消息按先进选出(FIFO)原则被任务读取。Salvo提供OSCreateMsgQ()、OS_WaitMsg()、OSSignalMsgQ()等函数用于消息的产生、等待和设置等功能。

(3)任务调度和任务控制块

Salvo是基于优先级的嵌入式实时操作系统,Salvo总是运行就绪任务表中优先级最高的任务。(Salvo允许2个以上任务处于同一优先级,同一优先级任务按时间片轮转调度)Salvo由函数OSSched()实现任务调度。

在任务切换过程中,被剥夺CPU使用权的任务必须保存该任务的当前运行状态,如CPU内寄存器的值;而获得CPU使用权的任务必须恢复前一次被剥夺CPU使用权时的运行状态,继续运行。为完成这些功能,Salvo为每一个建立的任务建立一个任务控制埠(TCB)。任务控制埠是一个数据结构,当任务的CPU使用权被剥夺时,Salvo用它来保存该任务的运行状态;当任务重新获得CPU使用权时,任务控制块能确保任务从当时被中断处继续运行。

3 Salvo的配置

当了成功地编译Salvo应用程序,并使编译后的目标代码小,系统运行时占用RAM空间少,在编译Salvo应用程序时,需要对Salvo进行配置。

(1)目标代码建立方式

Salvo应用程序目标代码建立方式有两种:基于库的建立和基于源泉代码的建立。

在基于库的目标代码建立中,Salvo提供的用户函数包含在预编译的Salvo库文件中,Salvo应用程序从用户程序源代码(包括C语言和汇编语言)、Salvo库和Salvo的mem.c建立而成。由于Salvo库是预先编译的,应用程序编译时的配置文件对Salvo库,即用户函数无效。基于库的目标代码建立过程如图2所示。

在基于源代码的目标代码建立中,Salvo提供用户函数的源代码。Salvo应用程序从用户程序源代码、Salvo用户函数源代码(包括C语言和汇编语言)和Salvo的mem.c建立而成。由于Salvo用户函数是源代码形式,Salvo应用程序编译时的配置文件对Salvo的用户函数有效。基于源代码的目标代码建立过程如图3所示。

相对于基于库的建立方式,基于源代码的目标代码建立配置文件作用范围更大,生成的目标代码更贴近应用系统。即目标代码更小,运行时占用RAM更少。

图3

    (2)Salvo配置

Salvo的配置信息保存在应用程序同一目标的salvocfg.h文件中,文件以文本形式,每项配置操作通过C语言的#define语句实现。Salvo的配置主要有以下几类操作:

①任务和事件—配置任务数,开启/关闭信号量、消息和消息队列;

②大小指定—配置延时RAM、计数器、事件标志、标记的位数;

③定时和标记—开启/关闭定时器;

④优化操作—优化运行速度、消息队列、全局变量等;

⑤监视和调试—配置指针、延时、任务、事件的监视;

⑥错误检查—开启/关闭用户函数错误检查;

⑦存储器定位—配置Salvo对象在RAM中的位置。

典型的配置文件格式如下:

#define OSBYTES_OF_DELAYS 1

//设置延时RAM长度

#define OSENABLE_MESSAGES TRUE

//开启消息处理功能

#define OSEVENTS 1

//设置应用系统中事件数

#define OSTASKS 3

//设置应用程序系统中任务数

4 结论

以上分析可知,嵌入式实时操作系统Salvo以其功能强大、内核简洁高效、占用资源少、可配置性强等特点,非常适合于资源较少,特别是存储器资源少的单片机系统使用。在单片机系统中嵌入实时操作系统Salvo,可大大缩短产品开发周期,提高可靠性,增强产品市场竞争力。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭