• 88查看
  • 0回复

[底层软件] Rte中的接口类型介绍和使用

[复制链接]
  • TA的每日心情
    无聊
    1-7-2015 18:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 25-4-2024 20:17:29 | 显示全部楼层 |阅读模式

    汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


    1 Rte中的接口类型
    Rte常用的接口类型为:Sender-Receiver、Nv-Data、Calibration、Client-Server。它们各自在arxml中的声明元素(根节点)分别为:<SENDER-RECEIVER-INTERFACE>…</SENDER-RECEIVER-INTERFACE>、<NV-DATA-INTERFACE>…</NV-DATA-INTERFACE>、<CALPRM-INTERFACE>…</ CALPRM -INTERFACE>和<CLIENT-SERVER-INTERFACE>…</ CLIENT-SERVER -INTERFACE>。
    1.1 Sender-Receiver
    Sender-Receiver通信一般用作信号传输(signal passing),它包含信号的发送方(component)、一个或者多个接收方和传递的数据。组件中的RPort(接收方)可以从接口中读取数据,而PPort通过接口写入数据。在SWC的runnable中需要定义PPort和RPort。而SR通信又分为显示(Explicit,Autosar的arxml中使用DATA-SEND-POINT来定义这种Pport类型)和隐式(Implicit,Autosar的arxml中使用Data read/write access来定义这种类型),前者会生成一个函数调用,可以适用于队列传输,后者会直接生成宏定义,不能用于队列。隐式通信的API使用本地的备份变量来保证在runnable执行的过程中保证外部接收数据的一致性,如一个Can消息的多个signal。
    1.2 Client-Server
    Client-Server一般用作函数调用(function invocation),涉及到一个component触发客户端中的函数运行,这个函数可能也不会返回结果给用户端。
    1.3 Calibration
    Calibration接口用于标定组件。
    1.5 Nv-Data
    Nv-Data用于NVM存储。这些接口类型需要在component中创建接口(Port)来引用,而且接口需要包含在组件的运行实体中(runnable entity).
    2 runnable entity
    运行实体(runnable entity)是组件(component)中被RTE触发调用的一系列代码。一个软件组件(software component)至少包含一个运行实体,且所有的运行实体都需要在运行时能被RTE所触发。RTE通常通过以下事件来触发:时间事件、通信事件和模式转换事件。
    2.1 时间事件(Timing Event)
    代表周期调度的事件,即需要周期调度的运行实体可以通过这种方式来触发。
    2.2 通信事件
    提供了组件内部运行和组件外部的接口的连接。如使用一个runnable来执行客户端通过client-server接口的请求(Operation Invoked Event)或者使用一个runnble来执行每次接收到新的数据时需要执行的动作(Data ReceivedEvent)。
    2.3 模式转换事件(ModeSwitch Event)
    当模式发生变化时,RTE可以触发相应的runnble执行。
    3 实战

    3.1 SWC创建

    创建两个SWC:SWC_A和SWC_B。SWC_A作为RPort的SWC,它包含3个Rte Event触发的runnable:DataReceivedEvent触发的RE_DataRecv_Runnable、SwcModeSwitchEvent触发的RE_ModeSwitch_Runnable和TimingEvent触发的RE_Time10ms_Runnable。SWC_B作为PPort的SWC,包含两个RteEvent触发的runnable:OperationInvokedEvent触发的RE_CS_Runnable和TimingEvent触发的RE_Time10ms_Runnable.如下图所示
    Rte中的接口类型介绍和使用w1.jpg

    SWC的内部细节
    Rte中的接口类型介绍和使用w2.jpg

    copositionoverview
    3.2 生成代码

    Timing Event & ModeSwitchEvent生成代码如下。

    Rte中的接口类型介绍和使用w3.jpg

    DataReceivedEvent生成代码如下所示。调用Rte_Write写接口后会激活DataReceivedEvent对应的runnable。
    Rte中的接口类型介绍和使用w4.jpg

    由于采用的是隐式(Implicit)通信,因此先将接收到的数据拷贝到本地的缓存中,然后再执行runnable,这样就保证了在runnable执行过程调用Rte的读取接口可以保证使用的数据时间上的一致性。

    Rte中的接口类型介绍和使用w5.jpg

    隐式通信生成的可供runnable调用的Rte读取接口的伪代码接口如下所示: #define Rte_IRead_RE_DataRecv_XX() Rte_ImplicitBufs.isa_Core0_11.Rte_OsTask_SWCRecvd.rbuf0.value
    在SWC_A中调用CS的接口。

    Rte中的接口类型介绍和使用w6.jpg

    快速发帖

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

    GMT+8, 5-5-2024 16:00 , Processed in 0.263906 second(s), 30 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.