OSEK的设计哲学与架构

 1 前言

        OSEK是为单核分布式嵌入式控制单元量身定制的实时系统,对事件驱动(event driven)的硬实时控制系统具有良好的适配性。OSEK没有强求不同软件模块间的完全兼容性,而是将重心放到了软件的可移植性上来。简单来说,与其花费大量精力去适配各种软硬件环境,不如成为规则的制定者,让它们来适配我,OSEK如是说。

2 系统设计哲学

2.1 静态配置

       OSEK舍弃了一切动态配置OS对象的操作,转而采用通过标准接口来静态配置的方式,甚至连动态错误查询的操作都被舍弃。静态配置意味着稳定可控可预测,另一方面也会规避动态操作对于系统运行速度的影响。

2.2 标准化OS接口

        标准化OS接口是OSEK的另一设计哲学,这使得应用程序与OS之间的接口通过系统服务的方式得以统一,OS成为硬件和应用程序之间天生的中间层,这进一步提高软件的可移植性。

        标准化接口,主要包括系统调用(service calls),类型定义及常量定义等,以支持OS源码级的可移植性。然而,OSEK并没有标准化与硬件直接相关的I/O接口(如图1所示),显然有点革命尚未成功的感觉。        

图1 软件接口示意图 

2.3 拓展性

       多样的标准化类型定义(conformance classes)、调度机制以及配置方式,使得OSEK的可拓展性也得到了很大的提高。微内核的设计思想,使得OS对于RAM,ROM和CPU的要求都相对较低,以至于其可以通过裁剪运行在8位控制器上。

2.4 错误检测(Error checking)

        OSEK的错误检测,包括开发阶段的拓展状态(extended status for development phase)和生产阶段的标准状态(standard status for production phase)两种类型。

        拓展状态允许通过调用系统服务进行加强型的错误检查,这必然带来更多的执行时间和内存空间等资源消耗。因此,拓展状态主要用于开发阶段,并建议通过宏定义隔离开,一旦开发测试完成后,则重新编译,去除这些运行时的错误检查,生成标准状态版本。

2.5 车规级优化

        OSEK本质上就是为汽车控制系统量身打造,在可靠性、实时性及成本方面都有着很多考虑:

        ① 包括任务、OS资源/服务在内的各类OS对象,都通过静态配置来生成,这保证了稳定性和可拓展性;

        ② 支持从ROM启动程序(executed from Read-Only-Memory);

        ③ 对于应用层程序来说,可移植性好;

        ④ 系统行为可预测性好,易于软件规划部署,满足车载实时性要求。

3 OSEK架构

        OSEK提供了不同服务和处理机制的集合,用户通过静态配置来选择所需要的系统服务和处理机制。同时,根据应用的实际需要,划分了四个一致类(conformance classes)以规范OS的行为,同一类的应用之间应是可移植的

        服务的分类是以功能需求为基础的,这就包括了以下几个方面:

        ① 任务管理(Task management)

        包括任务的激活和终止(Activation and termination of tasks),以及任务状态、任务切换等;

        ② 同步与互斥机制

        包括临界区保护、基于事件(event)的同步机制等;

        ③ 中断管理;

        ④错误处理。

3.1 处理等级

3.1.1 两个实体(entity)

        总的来说,OSEK管理着控制器的硬件资源,并向应用层以标准化的接口提供系统服务,而这些服务都是面向以下两个实体的:

        ① 由OS管理的中断向量;

        ② 任务,包括基础任务和拓展任务(basic tasks and extended tasks);

3.1.2 三个处理等级(processing levels)

        在此基础上,OSEK定义了三个处理等级:

        ① 中断级别;

        ② 调度器级(内核级,这是一个逻辑级别);

        ③ 任务级;

        同时,如图2所示,对于各级别的优先级有如下规定:

        ① 中断的优先级高于任务;

        ② 中断处理可以包含一个或多个优先级级别,即不同的中断的优先级可以不同;

        ③ 中断服务函数的优先级的实现依赖于具体的硬件环境;

        ④ 对于任务优先级和系统资源上限优先级来说,优先级的值越大,表示优先级越高

图2 OSEK的处理级别

3.2 一致类(Conformance classes,CC)

        为了针对不同的软硬件环境和产品应用需求做出更明确的规范,OSEK定义了四个一致类,且保证低级类可以向上升级至高级类。        

        一致类的定义主要从以下几个属性来划分的:

        ① 支持的任务激活次数;

        ② 支持的任务类型;

        ③ 支持的同优先级的任务个数;

图3 OSEK 一致类示意图

        具体来说,大概就是以上几个属性的排列组合:

        ① BCC1 (Basic Conformance class 1)

        只支持基础任务(basic tasks),且每个任务最多只能激活一次,每个优先级都只有一个任务,即不同任务的优先级不同;

        ② BCC2

        在BCC1基础上,支持基础任务的多次激活,同优先级可以有多个任务,仍只支持基础任务;

        ③ ECC1

        在BCC1的基础上支持了拓展型任务(extended tasks);

        ④ ECC2

        在ECC1的基础上,支持基础任务的多次激活,且同优先级可以有多个任务;

图4 不同CC的最低要求 

        其他信息,如图4所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/594127.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[报错解决]Communications link failure

报错 主机IDEA项目连接虚拟机的数据库报错。 主要报错信息有: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received a…

智慧旅游引领未来风尚,科技助力旅行更精彩:科技的力量推动旅游业创新发展,为旅行者带来更加便捷、高效和智能的旅行服务

目录 一、引言 二、智慧旅游的概念与特点 (一)智慧旅游的概念 (二)智慧旅游的特点 三、科技推动旅游业创新发展 (一)大数据技术的应用 (二)人工智能技术的应用 (…

Linux Ubuntu 开机自启动浏览器

终端输入命令:gnome-session-properties 打开启动设置 如果提示:Command ‘gnome-session-properties’ not found, but can be installed with: apt install gnome-startup-applications 则执行:apt install gnome-startup-applications安装…

一、写给Android开发者之harmony入门

一、创建新项目 对比 android-studio:ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务) 启动模式 1、 singleton启动模式:单例 2、 multiton启动模式&#xff1…

数据结构十:哈希表

本次将从概念上理解什么是哈希表,理论知识较多,满满干货,这也是面试笔试的一个重点区域。 目录 一、什么是哈希表 1.0 为什么会有哈希表? 1.1 哈希表的基本概念 1.2 基本思想 1.3 举例理解 1.4 存在的问题 1.5 总结 二、…

libcity笔记:参数设置与参数优先级

1 参数优先级 高优先级的参数会覆盖低优先级的同名参数 Libcity中的优先级顺序维: 命令行参数(命令行python run_model.py时导入的) > 用户定义配置文件(命令行python run_model.py时由config_file导入的) >…

javascript 练习 写一个简单 另类录入 电脑组装报价表 可打印

数据格式 &#xff08;1代表cpu、2代表主板、3代表内存、。。。&#xff09; 1i3 12100 630 2H610 480 3DDR4 3200 16G 220 4500G M.2 299 5300W电源 150 6小机箱 85 7GT 730G 4G 350 8WD 2T 399 9飞利浦 24Led 580 主代码 Html JS <!DOCTYPE html> <html lang&qu…

02_Java综述

目录 面向对象编程两种范式抽象OOP 三原则封装继承多态多态、封装与继承协同工作 面向对象编程 面向对象编程(Object-Oriented Programming&#xff0c;OOP)在Java中核心地位。几乎所有的Java程序至少在某种程度上都是面向对象的。OOP与java是密不可分的。下面说一下OOP的理论…

SSM+Vue酒店管理系统

SSMVue酒店管理系统&#xff0c;JavaWeb酒店管理系统&#xff0c;项目由maven工具管理依赖&#xff0c;数据库Mysql&#xff0c;一共19张表&#xff0c;前端用Vue写的管理端&#xff0c;功能丰富&#xff0c;需要可在最后位置联系我&#xff0c;可加购调试&#xff0c;讲解&…

自注意力架构大成者_Transformer(Pytorch 17)

1 模型简介 在上节比较了 卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;和 自注意力&#xff08;self‐attention&#xff09;。值得注意的是&#xff0c; 自注意力同时具有并行计算和最短的最大路径长度这两个优势。因此&#xff0c;使…

Llama3本地部署与高效微调入门

前言 为了保持公司在AI&#xff08;人工智能&#xff09;开源大模型领域的地位&#xff0c;社交巨头Meta推出了旗下最新开源模型。当地时间4月18日&#xff0c;Meta在官网上宣布公布了旗下最新大模型Llama 3。目前&#xff0c;Llama 3已经开放了80亿&#xff08;8B&#xff09…

8086 汇编学习 Part 9

端口的读写 CPU 的邻居 CPU 内部的寄存器内存单元端口&#xff08;各种接口卡、网卡&#xff0c;显卡&#xff0c;主板上的接口芯片等&#xff09; 各种芯片工作时&#xff0c;都有一些寄存器由 CPU 读写从 CPU 角度&#xff0c;将各寄存器当端口&#xff0c;并统一编制CPU …

开源im即时通讯app源码系统/php即时聊天im源码/php+uniapp框架【终身使用】

摘要 随着开源文化的蓬勃发展&#xff0c;即时通讯(IM)系统作为现代通信不可或缺的一部分&#xff0c;其开源实现正变得越来越普遍。本文将深入探讨基于PHP的全开源即时通讯源码系统&#xff0c;并结合UniApp开源框架&#xff0c;从理论基础到代码实现&#xff0c;再到实际应用…

探索设计模式的魅力:分布式模式让业务更高效、更安全、更稳定

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索分布式模式之旅✨ 在数字化时代&#xff0c;企业面临着前所未有的挑战和机遇。…

机器学习-K近邻算法(KNN)

目录 什么是KNN算法 图解KNN基本算法 &#xff08;1&#xff09;k近邻算法中k的选取 &#xff08;2&#xff09;距离函数 &#xff08;3&#xff09;归一化处理 &#xff08;4&#xff09;概率kNN KNN算法的优缺点 优势 缺点 KNN算法总结 什么是KNN算法 k近邻算法&…

vs 2022 Xamarin 生成 Android apk

再保存&#xff0c;如果没有生成apk就重启软件 再试一次

(论文阅读-优化器)Volcano-An Extensible and Parallel Query Evaluation System

目录 摘要 一、简介 三、火山模型系统设计 3.1 文件系统 3.2 查询处理 四、扩展性 五、动态查询评估计划 六、多处理器查询评估 6.1 垂直并行化 6.2 水平并行化Horizontal 6.3 exchange operator的变体 6.4 文件系统修改 七、总结 摘要 火山模型Volcano在数据库查…

详解LLMOps,将DevOps用于大语言模型开发

大家好&#xff0c;在机器学习领域&#xff0c;随着技术的不断发展&#xff0c;将大型语言模型&#xff08;LLMs&#xff09;集成到商业产品中已成为一种趋势&#xff0c;同时也带来了许多挑战。为了有效应对这些挑战&#xff0c;数据科学家们转向了一种新型的DevOps实践LLM-OP…

Maven 在项目的 pom.xml 文件中 指定 阿里云的景象仓库

配置 在 项目的 pom.xml 文件中添加如下配置即可 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

Android NDK开发——Android Studio 3.5.2安装与配置踩坑

Android NDK开发——Android Studio 3.5.2安装与配置踩坑 一、Android Studio下载二、配置踩坑报错1&#xff1a;Failed to install the following Android SDK packages as some licences have not been accepted报错2&#xff1a;No toolchains found in the NDK toolchains …
最新文章