Autosar模块介绍:AutosarOS_5(错误处理、跟踪与调试)

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

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状态后直接调用。

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

  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
autosar_sws_cannetworkmanagement_4.3是使用CAN总线进行通信的汽车电子系统的管理和控制规范。CAN总线是汽车电子系统中最常用的通讯协议之一,它提供了一个可靠的、高效的和实时的通信方式。 autosar_sws_cannetworkmanagement_4.3规范包含了CAN网络管理的所有方面,包括物理和数据链路层的协议、网络配置、节点管理、通信控制、事件管理等等。这些方面都是为了确保CAN通信的可靠性和实时性,以及系统的稳定性和安全性。 autosar_sws_cannetworkmanagement_4.3规范也包含了一些重要的特性和功能。例如,它提供了节点诊断和监测功能,以及网络通信负载均衡和多路复用功能。此外,它还支持更高级别的通信协议,如信号协议(例如CANopen,J1939等)和诊断协议(例如UDS等)。 在实践中,autosar_sws_cannetworkmanagement_4.3规范对于开发CAN总线应用程序非常有用。它提供了标准化的API和接口,便于不同的开发人员协同合作,并能够减少开发时间和开发成本。同时,它也提供了可执行的示例代码和测试数据,方便开发人员进行测试和验证。 综上所述,autosar_sws_cannetworkmanagement_4.3规范是一份非常重要的文档,它为汽车电子系统中最常用的通信协议之一(CAN总线)提供了完整的管理和控制规范。它不仅包含了所有必要的功能和特性,而且还为开发人员提供了标准化的API和接口,方便开发和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值