Autosar模块介绍:AutosarOS(5)

news2025/7/18 5:58:34

上一篇 | 返回主目录 | 下一篇

AutosarOS:错误处理、跟踪与调试(5)

  • 1 钩子例程
  • 2 错误处理(ErrorHook)
  • 3 系统启动(StartupHook)
  • 4 系统关闭(ShutdownHook)
  • 5 系统保护(ProtectionHook)
  • 6 调试

1 钩子例程

钩子例程特点
1)、由操作系统调用,在特定的上下文中取决于操作系统的实现
2)、高于所有任务
3)、不被第二类中断程序打断。
4)、操作系统的一部分
5)、由用户使用用户定义的功能实现
6)、在接口上是标准化的,但在功能上不是标准化的(钩子例程本身的环境和行为),因此钩子例程通常是不可移植的
7)、只允许使用API函数的子集

钩子例程作用
1)、系统启动:在操作系统启动之后和调度程序运行之前调用相应的钩子例程(StartupHook)
2)、系统关闭:当应用程序或操作系统在出现严重错误时请求系统关闭时调用 (ShutdownHook)
3)、跟踪或依赖于应用程序的调试目的,以及用户定义的上下文切换扩展(PreTaskHook、Post Task Hook)
4)、错误处理(ErrorHook)

#OSEK的每个实现都必须遵循钩子例程的约定:
1)、如果应用程序在钩子例程中调用了一个不允许的API服务,则行为没有定义
2)、如果引发错误,则实现应该返回特定于实现的错误代码

2 错误处理(ErrorHook)

提供错误服务来处理OSEK操作系统中临时和永久发生的错误。它的基本框架是预先定义的,由用户自行完成。这使用户可以选择有效的集中或分散的错误处理。区分了两种不同的错误:
应用程序错误:操作系统无法正确执行请求的服务,但假定其内部数据是正确的。在这种情况下,将调用集中错误处理。此外,操作系统通过状态信息返回错误码对其进行分散的错误处理。由用户根据发生的错误类型来决定处理方式。
致命错误:操作系统不能再保证其内部数据的正确性。在这种情况下,操作系统调用集中式系统关闭。

#所有这些错误服务都有一个指定错误标识符(宏编号)

OSEK操作系统提供两个级别的错误检查,标准状态和扩展状态。如果一个任务在标准状态的版本中被激活,会返回“E_OK”或“Too many task activation”。在扩展状态的版本中,可以返回额外的返回值“Task is invalid”、“Task still occupy resources”等。这些扩展的返回值在执行时不再出现在目标应用程序中,也就是说,相应的错误不会在操作系统的运行时版本中被拦截。

OSEK api服务的返回值优先于输出参数。如果一个API服务返回错误,输出参数的值是未定义的。

错误钩子例程
如果系统服务返回的StatusType值不等于E_OK,则会调用错误钩子例程(ErrorHook)。如果从ErrorHook本身调用系统服务,则钩子例程ErrorHook不会被调用(也就是说,error钩子的递归调用不会发生)。从ErrorHook调用系统服务时可能发生的任何错误都只能通过计算返回值来检测。
如果在任务激活或事件设置期间检测到错误,例如在警报过期或消息到达时,也会调用ErrorHook。

错误管理
为了在ErrorHook中实现有效的错误管理,用户可以访问其他信息(如下图:处理的逻辑结构)。
在这里插入图片描述

3 系统启动(StartupHook)

系统启动过程(单核系统,参考图1)
1)、重置后,用户可以自由地执行(不可移植的)硬件特定代码。第2类中断在第5阶段之前不允许运行。不可移植部分以检测应用模式结束。
2)、使用应用程序模式作为参数调用StartOS。
3)、操作系统执行内部启动功能
4)、调用钩子例程StartupHook,用户可以在其中放置初始化过程。在这个钩子例程中,所有用户中断都被禁用。
5)、操作系统允许用户中断并启动调度活动。
在这里插入图片描述
在这里插入图片描述

4 系统关闭(ShutdownHook)

应用程序或操作系统可以由于致命错误而请求此服务(ShutdownOS)。当调用ShutdownOS时,操作系统将调用钩子例程ShutdownHook,然后关闭(如下图: 多核系统关闭过程)。用户通常可以在ShutdownHook中自由定义任何系统行为。
在这里插入图片描述

5 系统保护(ProtectionHook)

发生严重的执行时间错误以及违背存储保护时会进入此钩子例程。

可采用的处理方式:
1)、关闭造成问题的任务/二类中断
2)、强制关闭任务/二类中断属于的应用集(或者重启(Restart))
3)、关闭系统
4)、不做处理
在这里插入图片描述

6 调试

两个钩子例程(PreTaskHook和PostTaskHook)在任务上下文切换时被调用。这两个钩子例程可用于调试或时间测量(包括上下文切换时间)。每次在任务离开RUNNING状态之前,都会直接调用PostTaskHook;PreTaskHook每次在新任务进入RUNNING状态后直接调用。
在这里插入图片描述
上一篇 | 返回主目录 | 下一篇

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试题】margin负值问题

margin-top和margin-left负值&#xff0c;元素向上、向左移动&#xff1b;margin-right负值&#xff0c;右侧元素左移&#xff0c;自身不受影响&#xff1b;margin-bottom负值&#xff0c;下方元素上移&#xff0c;自身不受影响&#xff1b; 1. margin top left为负数 <st…

0095 贪心算法,普利姆算法

import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; /* * 贪心算法 * 1.指在对问题进行求解时&#xff0c;在 每一步 选择中都采取最好或最优的选择&#xff0c;希望能够导致结果是最好或最优的算法 * 2.所得到的结果不一定是最优结果&…

【SSH远程登录长时间连接后容易出现自动断开的解决方案】

SSH远程登录长时间连接后容易出现自动断开的解决方案0 问题描述1 方法一1.1 打开ssh_config文件1.2 在文件中添加以下内容1.3 重启ssh2 方法二2.1 打开sshd_config文件2.2 在文件中添加以下内容2.3 重启ssh0 问题描述 使用SSH连接远程服务器的时候 报出 client_loop send disc…

时序分析 48 -- 时序数据转为空间数据 (七) 马尔可夫转换场 python 实践(下)

时序分析 48 – 时序数据转为空间数据 (七) 马尔可夫转换场 python 实践&#xff08;下&#xff09; … 接上 从MTF到图模型 从MTF中我们可以生成图 &#x1d43a;(&#x1d449;,&#x1d438;)&#x1d43a;(&#x1d449;,&#x1d438;)G(V,E) &#xff0c;节点V和时间…

Redis从理论到实战:使用Redis实现商铺查询缓存(逐步分析缓存更新策略)

文章目录一、什么是缓存二、缓存的作用三、添加商户缓存四、分析缓存更新策略1、删除缓存还是更新缓存&#xff1f;2、如何保证缓存与数据库的操作同时成功或失败&#xff1f;3、先操作缓存还是先操作数据库&#xff1f;加油加油&#xff0c;不要过度焦虑(#^.^#) 一、什么是缓存…

ThreadLocal为什么会出现内存泄漏,你真的知道吗?

目录 1 前言 2 ThreadLocal进行线程隔离的小示例 3 原因 1 前言 大家想要搞清楚这个问题&#xff0c;就必须知道内存泄漏和内存溢出的区别 内存泄漏&#xff1a;不就被使用的对象或者变量无法被回收 内存溢出&#xff1a;没有剩余的空间来创建新的对象 2 ThreadLocal进行…

Java中的字符串

&#x1f649; 作者简介&#xff1a; 全栈领域新星创作者 &#xff1b;天天被业务折腾得死去活来的同时依然保有对各项技术热忱的追求&#xff0c;把分享变成一种习惯&#xff0c;再小的帆也能远航。 &#x1f3e1; 个人主页&#xff1a;xiezhr的个人主页 java中的字符串一、简…

C++:重定义:符号重定义:变量重定义

概述&#xff1a;在上一篇我们知道 通过 #ifndef....#defin....#endif &#xff0c; 这个解决头文件重复包含的问题 C&#xff1a;重定义&#xff1a;class类型重定义_hongwen_yul的博客-CSDN博客 避免头文件的重复包含可以有效的避免变量的重复定义&#xff0c;其实不光变量…

[附源码]java毕业设计基于web旅游网站的设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

使用Docker开发GO应用程序

根据Stack Overflow的2022开发者调查&#xff0c;Go&#xff08;或Golang&#xff09;是最受欢迎和最受欢迎的编程语言之一。由于与许多其他语言相比&#xff0c;Go的二进制大小更小&#xff0c;开发人员经常使用Go进行容器化应用程序开发。 Mohammad Quanit在他的社区全能课程…

小程序vant-tabbar使用示例,及报错处理

小程序vant-tabbar使用示例&#xff0c;及报错处理1. 配置信息2. 添加 tabBar 代码文件3. 编写 tabBar 代码custom-tab-bar/index.tscustom-tab-bar/index.jsoncustom-tab-bar/index.wxml使小程序使用vant-tabbar组件时&#xff0c;遇到以下报错&#xff1a;Couldn’t found th…

Java基于springboot+vue的儿童玩具销售购物网站 多商家

爱玩儿是所有孩子的天性。尤其是在婴幼儿阶段。选择一个好的玩具&#xff0c;不仅能够让孩子玩儿的开心&#xff0c;而且有助于孩子智力的开发。很多家长在选择玩具的时候&#xff0c;不知道选择什么样的玩具。且当前玩具市场的玩具鱼目混杂&#xff0c;种类繁多&#xff0c;而…

SAR信号处理基础1——线性调频信号

关键字&#xff1a;线性调频信号&#xff0c;LFM信号&#xff0c;chirp信号&#xff0c;驻定相位原理&#xff08;POSP&#xff09;&#xff0c;泰勒展开&#xff0c;Taylor展开&#xff0c;脉冲压缩&#xff0c;匹配滤波&#xff0c;sinc&#xff0c;分辨率&#xff0c;峰值旁…

QProgressDialog.close()失败,进度条关闭感觉失败了,无法彻底关闭

开发环境&#xff1a;我是在deepin&#xff08;深度&#xff09;系统下开发的&#xff0c;在我本机上&#xff0c;一点问题也没有&#xff0c;但是我移植到了ubantu的机子上&#xff0c;就偶尔出现出个问题&#xff0c;出现了一个模态框&#xff0c;需要重启软件才能关闭。 问题…

Vue的computed和watch的区别是什么?

一、computed介绍 computed 用来监控自己定义的变量&#xff0c;该变量在 data 内没有声明&#xff0c;直接在 computed 里面定义&#xff0c;页面上可直接使用。 //基础使用 {{msg}} <input v-model"name" /> //计算属性 computed:{msg:function(){return …

【MySQL】MySQL日志系统以及InnoDB背后的技术(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

Java基于springboot+vue的个人博客网站 前后端分离

随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多网站的之中&#xff0c;随之就产生了“博客网站”&#xff0c;这样就让博客网站更加方便简单。 对于本博客网站的设计来说&#xff0c;系统开发主要是采用java语言技…

2022国产8K摄像机介绍

摄像机是一种把光学图像信号转变为电信号&#xff0c;以便于存储或者传输的设备。当我们拍摄一个物体时&#xff0c;此物体上反射的光被摄像机镜头收集&#xff0c;使其聚焦在摄像器件的受光面&#xff08;例如摄像管的靶面&#xff09;上&#xff0c;再通过摄像器件把光转变为…

N-HiTS: Neural Hierarchical Interpolation for Time Series Forecasting

N-HiTS: Neural Hierarchical Interpolation for Time Series Forecasting 神经预测的最新进展加速了大规模预测系统性能的提高。然而,长期预测仍然是一项非常困难的任务。影响这项任务的两个常见挑战是预测的波动性和它们的计算复杂性。本文提出N-HiTS,一种通过结合新的分层…

不同字符编码对比

目录 1. ASCII码 2. Unicode 3. GBK编码 1. ASCII码 ASCII码使用一个字节编码&#xff0c;但只适用于英文&#xff1b; 2. Unicode Unicode定义了字符集&#xff0c;有 17 个 code plane&#xff0c;总共规划了 1,114,112 个 code point。而这些字符可以使用UTF-8、UTF-1…