[Classic AUTOSAR学习] SWC设计与应用(五)-- Internal Behavior
发布网友
发布时间:2024-10-20 16:22
我来回答
共1个回答
热心网友
时间:2024-11-01 04:48
SwcInternalBehavior在AtomicSwComponentType中定义行为,包括允许执行的操作和方式。设计阶段,SwcInternalBehavior在VFB阶段不必引入,开发人员在应用层设计结束后为每个SWC创建。
可运行实体(RE)作为SWC的最小功能单元,代表特定功能,由OS调度执行。CompositionSwCType自身不能定义Internal Behavior。RE在设计上包含功能描述、事件触发、最小启动间隔、symbol名称唯一性、并发执行能力。
Events标识执行条件,Minimum Start Interval定义连续执行的最小间隔,RE的symbol在EcuInstance内保持唯一性。RE是否可并发执行由canBeInvokedConcurrently属性决定。当设置为False,RTE根据RTEEvent决定从suspended到to be started状态的转换,RE从to be started到running状态的时间取决于调度策略。
当RE返回,OS接管控制,RE状态从running迁移到suspended。Category 2 RE进入running状态后不再返回。RE被抢占时,进入preempted状态。当canBeInvokedConcurrently设置为False,RTE确保RE不会并发执行。RE在running状态时的并发执行请求需等待前一次执行完成或入队。
当canBeInvokedConcurrently设置为True,RE允许在不同OS任务中并发执行。SWC描述文件不定义并发*,只说明是否允许并发。AUTOSAR service RE典型应用中,不同SWC可同时使用同一服务,集成时RE直接运行在调用服务的SWC上下文中,简化了client/server调用过程。
RE可以分为Category 1和Category 2。Category 1 RE需在有限时间内执行,细分为只使用隐性API的1A类和可调用server及显性API的1B类。Category 2 RE至少包含一个wait point,通常存在循环,当wait point触发时执行一次。
RE激活由RTEEvent触发,RE中需记录激活事件的详细信息。一个RE可能被多个事件激活。RE配置参数用于提供RE需要的输入参数,例如DLT service实例。同步机制保证RE间数据交换安全。
RTE Event定义事件及其处理方式,RE设置Event时可选择多种类型。在一个SWC中,RE之间可通过通信完成数据交换,同步机制无需PortPrototype。同一SWC不同实例间通信需通过PortPrototype。
Port API Options用于RTE生成接口时添加额外参数,例如DLT功能的session id。ServiceNeeds用于连接SWC与底层AUTOSAR Service,仅AtomicSwComponentType和NvBlockSwComponentType可用。集成ECU时,需选择实际的ECU配置选项以利用ServiceNeeds。