理解 AUTOSAR中 Exclusive Area(EA)

文章详细介绍了AUTOSAR框架下,如何通过ExclusiveArea机制处理软件组件和基础软件中的共享资源访问,防止中断或任务间的数据不一致。重点讨论了在WatchdogManager中的应用,以及在时间获取过程中的互斥问题。文中提到了中断管理、资源和自旋锁等互斥机制,并阐述了如何在实际开发中实现和配置互斥区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


        在电子控制单元(ECU)的开发中,访问共享资源(如外设和全局变量)时可能需要进行中断或任务间的互斥处理(锁)。 AUTOSAR有一个名为“Exclusive Area”的机制,简称EA,它在软件组件(SWCs)和基础软件(BSW)开发期间抽象出互斥处理,并在集成期间确定具体的互斥处理。🤔🤔🤔

1.AUTOSAR开发中的互斥处理


        在AUTOSAR中,SWC和BSW作为软件组件开发,在集成工作中使用所需的组件。因此,在开发SWC和BSW时无法确定哪些功能需要进行互斥处理。🙂🙂🙂

1.1 EA在WdgM中的应用   

        以监视SWC是否正确执行的BSW WdgM(*1)为例。

※1 Watchdog Manager: [AUTOSAR_SWS_WatchdogManager.pdf]       

        BSW周期性调用名为MainFunction的API来控制主要依赖于时间的处理。

在WdgM中,该API变为WdgM_MainFunction。通过定期调用WdgM_MainFunction,监视SWC是否按预期时间执行等情况。此外,通过调用名为WdgM_CheckpointReached的API,SWC通知WdgM已执行指定的监视对象处理。 WdgM_MainFunction确定是否正确执行了处理,根据SWC设置的监视条件和WdgM_CheckpointReached的调用状态。

        由于在WdgM_MainFunction和WdgM_CheckpointReached内部处理中操作每个SWC的监视状态管理数据,因此在WdgM_MainFunction更新数据时,如果中断进入并执行WdgM_CheckpointReached,则可能会发生数据不一致的情况。为了防止这种情况发生,WdgM_MainFunction和WdgM_CheckpointReached需要执行互斥处理。

        但是,如果调用WdgM_MainFunction的任务和调用WdgM_CheckpointReached的任务具有相同的优先级,会发生什么情况呢?由于同一优先级任务不会在任务执行期间被中断执行,因此不会发生WdgM_MainFunction在执行时执行WdgM_CheckpointReached的情况。在这种情况下,互斥处理是不必要的。也就是说,如果在WdgM_MainFunction和WdgM_CheckpointReached中固定实现互斥处理,它将成为ECU软件配置的无用EA处理。所以过度的使用EA,会导致资源浪费,影响响应的实时性。

        为了解决这种情况,使用一种称为Exclusive Area的机制来抽象化互斥处理。它可以完全理解为我们在其他操作系统中的操作共享资源时使用的锁。

1.2 EA在运行时时间获取的应用

        试想,如果由于中断的优先级问题,在两个同时需要获取时间的运行实体中(这里的运行实体指中断回调,task以及对应的runnable)。如果低优先级的先获取时间寄存器tick,而往往tick需要转换为可识别的时间单位,如纳秒,毫秒,秒等。但是如果在转换的过程中,高优先级的中断将其打断,而此时有又涉及到资源共享的问题的话,有可能时间获取会被打乱,高优先级可能获取了一个正常的时间,但是出栈后的低优先级中断,可能获取了一个异常事件。

        此时,OS resource(下面将会提到)可能就不再适用此类场景,OS resource只负责只能够保证数据前后的一致性,即前后数据可能不会被修改,不能够保证中途是否会被打断。所以此场景中使用中断禁用更为适合。

2.关于EA的机制 Exclusive Mechanism 


        在解释互斥区域之前,我们先来解释一下实现AUTOSAR中的互斥处理所采用的机制(互斥机制)。在AUTOSAR中,主要使用操作系统(※2)提供的中断管理、资源和自旋锁等功能来实现互斥处理。😝😝😝

※2 Operating System:   [AUTOSAR_SWS_OS.pdf]   

2.1中断管理

        OS管理的中断(ISR:Interrupt Service Routine)有两种类型:CAT1 ISR和CAT2 ISR。CAT1 ISR只能调用与禁止/允许中断相关的API,并且由于OS在中断发生后直到返回之前不会有任何干预,因此在需要快速中断响应性能的情况下使用。CAT2 ISR可使用许多OS的API。 OS提供用于执行用户定义中断处理的处理,如寄存器保存/恢复等。

        针对这些

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值