我正在探索 AUTOSAR 世界。
我的问题是关于代码:
我了解到,根据事件(初始化、计时、数据接收),使用 RTE API 从 RTE 调用 SW-C 可运行文件。是否可以从调度程序直接调用可运行对象(就像我们调用函数),例如在同步事件之后(例如在引擎的 TopDeadCenter 处)。我认为这将“覆盖” RTE,这样进行是否危险?
一般来说,如果你想规避 RTE 所做的事情,你可能没有按照 Autosar 的意图设计东西。
直接调用 SWC runnables 是对这个概念的极大违反。Runnables 是可调度的实体,旨在由操作系统通过 RTE 间接调度。RTE 应该激活一个 runnable 以响应一个 RTEEvent 或多个此类事件。
绕过 RTE 将违反 RTE 提供的并发性和可重入性保证,以及 RTE 提供的关于可运行对象读取/写入的任何数据的数据一致性保证。
如果你想调用一个runnable来响应一个事件,并且这个事件被其他一些SWC检测到,你应该使用客户端/服务器通信。您的 runnable 将成为服务器上的操作,并将通过调用点进行调用。在这种情况下,“客户端-服务器通信”是您应该在规范中查找以了解它的内容。
绕过 RTE 绝不是一个好主意,因为它不仅仅是调度呼叫。
看一下AUTOSAR Architecture的分层结构;您的 RunnableEntity(应用程序)和 BSW 调度程序(系统服务)在“两层外”。所以不要。:)