AUTOSAR-ExclusiveArea

 ExclusiveArea即常说的独占区,在独占区内的代码段执行不会被打断,常用于保护对全局符号的读写访问或者对共享设备的操作等。ExclusiveArea需要在软件组件的内部行为(InternalBehavior)中定义 ,是不能跨SWC边界进行使用的(BSW模块也与此类似)。ExclusiveArea的使用有两种方式,一种是RunInsideExclusiveArea另一种是CanEnterExclusiveArea.

RunInsideExclusiveArea

     ExclusiveArea需要现在SWC内的InternalBehavior内定义好,然后在可运行实体就能够引用,如果可运行实体在整个执行过程中,都需要处在独占区中,那么可以选择RunInsideExclusiveArea。这种方式略显粗暴,可能会导致操作系统停摆的时间过长,但是独占区的管理(进入和离开)就完全不需要用户关心,RTE帮忙完成这个过程。

CanEnterExclusiveArea

      CanEnterExclusiveArea是一种更为灵活的方式,在可运行实体内部用户需要根据上下文的需求选择什么时候进入和离开独占区,这样操作系统停摆的时间较短。

ExclusiveArea 实现

        ExclusiveArea的实现AUTOSAR并没有明确规定,各个工具链提供商可以根据芯片和OS的特性进行实现,例如利用互斥的信号量,操作系统的Resource和开关中断的接口等。如下图所示,关于RunInsideExclusiveArea的实现采用的是开关OS的中断实现,而CanEnterExclusiveArea可以使用OS的Resource实现(Get/Release_Resource())。考虑到多核的场景的话,实现会更为复杂。

Example

AUTOSAR-ExclusiveArea

 

上一篇:@Resource与@Autowired的区别


下一篇:NSLocalizedDescription=The resource could not be loaded because the App Transpor