
RTE层理解RTE 是 AUTOSAR 里把应用层和基础软件连接起来的“中间适配层下面是一段rte.c里面的代码可以看见所有的变量我们在做simulink程序时都会加载进去GeneralInputSignal()信号接收函数从总线读取外部输入信号存入全局变量gs_xxglobal signal input循环调用统一接口Com_ReceiveSignal(信号ID, 存储地址)入参 1宏定义COM_RXSIGXX对应 CAN 数据库里的接收信号唯一标识入参 2全局输入变量指针总线数据读取后直接写入该内存GeneralOutputSignal()信号发送函数先更新 RTE 层输出缓存再将内部控制变量gout_xxglobal output打包发送至 CAN 总执行顺序AutoSar 标准流程Rte_UpdateOutputSignals();RTERun-Time Environment层输出缓存刷新把应用层算法计算结果同步到 COM 通信层缓存是 AutoSar 分层架构强制步骤。批量调用Com_SendSignal(信号ID, 待发送变量地址)将内部控制量打包发送到 CAN 总线给下游控制器转向电机、驱动电机、制动系统 SEB 等COM层理解该文件禁止手动修改变更 CAN 信号、报文长度后需重新从 CAN 数据库生成这是COM 模块配置头文件由 CAN 数据库 / 配置工具自动生成定义了 CAN 接收信号的句柄 ID、报文缓存长度、信号总数量是Com_ReceiveSignal接口的底层宏定义来源和GeneralInputSignal函数一一对应/*the buffer size of Message received */ #define COM_RXIPDUY1_X2_BUFFER_SIZE 8u #define COM_RXIPDUE_F_G_H_BUFFER_SIZE 8u #define COM_RXIPDUA_B_C_D_BUFFER_SIZE 8u #define COM_RXIPDUCAN2_CONTROL_RX_BUFFER_SIZE 8u #define COM_RXIPDUCAN3_CONTROL_RX_BUFFER_SIZE 8u含义IPDU CAN 报文PDU所有接收报文数据缓存长度均为8 字节符合标准 CAN 2.0 报文最大 8 字节负载规范。分组逻辑Y1_X2存放 X2、Y1 信号的接收报文E_F_G_H存放 E/F/G/H 四路信号报文A_B_C_D存放 A/B/C/D 四路信号报文/* number of Rx object Signal */ #define COM_RXSIGNUM 12u接收信号句柄 ID核心映射对接上一段代码/* Handles of receive signals */ #define COM_RXSIGX2 0u #define COM_RXSIGY1 1u #define COM_RXSIGE 2u #define COM_RXSIGG 3u #define COM_RXSIGH 4u #define COM_RXSIGF 5u #define COM_RXSIGA 6u #define COM_RXSIGB 7u #define COM_RXSIGC 8u #define COM_RXSIGD 9u #define COM_RXSIGCAN2_SIGNAL_RX 10u #define COM_RXSIGCAN3_SIGNAL_RX 11u之前GeneralInputSignal里调用的Com_ReceiveSignal(COM_RXSIGX2, gs_X2)本质就是给 COM 模块传入信号 ID0指定读取 X2 信号到 gs_X2 内存。通讯站配置配置工具生成Com_Cfg.h给每个 CAN 接收信号分配唯一数字 ID业务层GeneralInputSignal使用宏名调用Com_ReceiveSignalCOM 底层根据传入 ID找到对应 IPDU 缓存解析报文数据写入传入的全局变量gs_xxCOM_RXSIGNUM12u约束总接收信号数量做循环遍历、数组映射时可直接用该宏自动适配数所有#define xxx 8u末尾带u代表无符号 8 位整数符合 AutoSar 代码规范