目录
3.1 前言
由于在网络上关于DaVinci Developer的文章内容实在很少,官方文档又生涩难懂,故而在此分享本人在日常学习Developer操作过程中的理解与总结,内容参考了AUTOSAR官方文档、Vector操作文档以及CSDN上已有的大佬的博客,望与诸君共同学习、共同交流、共同进步。
如有疑误,望诸君多多海涵,在评论区下留言共同讨论!
第3章内容主要介绍以Application Software Component为例的RunnableEntity中的专属区域ExclusiveArea,内容丰富全是干货,希望对大家有所帮助。
3.2 ExclusiveArea介绍
点击“New”定义专属区域,其作用是:在该专属区域内的代码段执行不会被中断,常用于保护多个RunnableEntity间的共享资源。ExclusiveArea仅对RTE的调度策略和配置进行约束:
如果两个或多个RunnableEntitys指向同一个ExclusiveArea,那么只有其中一个RunnableEntity被允许在该ExclusiveArea内执行。
换句话说:这些RunnableEntitys在ExlcusiveArea内执行时不能并发运行(相互抢占)。其配置界面如下图所示:
3.2.1 Runs In
若某RunnableEntity处于该访问模式下,则其总是在该ExclusiveArea中运行。可能会导致OS停摆的时间过长,由RTE帮忙完成ExlcusiveArea的进入和离开。
如果存在两个RunnableEntity:‘r1’和‘r2’都运行在ExclusiveArea ‘s1’中,RTE应确保‘r1’和‘r2’永远不会并发运行;调度器不应该抢占‘r1’来运行‘r2’。
3.2.2 Can Enter
Can Enter访问模式更为灵活,用户需要根据上下文的需求选择什么时候进入和离开Exclusive Area,RunnableEntity将显式地(Explicit,可理解为在代码段中能被用户看到)对其实现中的RTE进行API调用,这样OS停摆时间较短。