AUTOSAR BSWM接收ASWC模式切换请求流程及空运行体API咨询
AUTOSAR BSWM模式管理相关问题解答
1. BSWM接收ASWC模式切换请求的标准流程
AUTOSAR架构下BSWM作为模式管理器接收应用层SWC(ASWC)的模式切换请求,遵循以下流程:
- ASWC通过提前定义的*发送接收接口(Sender-Receiver Interface)*对应的发送端口,输出模式切换请求信号
- COM层完成信号路由后,将请求值更新到BSWM对应接收端口的缓存
- BSWM将接收到的请求同步到你配置的
BswMModeRequestPortset对应的请求队列中:- 若
BswMRequestProcessing参数配置为BSWM_IMMEDIATE,会在请求接收完成的上下文立刻触发模式仲裁 - 若配置为延迟处理模式,会在BSWM周期运行的主函数中统一处理仲裁
- 若
2. ModeArbitration可运行实体空函数问题
2.1 是否需要手动填充
正常情况下,符合AUTOSAR标准的配置工具(如EB Tresos)会根据你配置的仲裁规则、端口映射关系自动生成ModeArbitration可运行实体的完整代码,不需要手动填充。出现空函数大概率是配置遗漏,优先排查以下配置项:
- 已创建的
BswMModeRequestPortset是否和ASWC对应的请求信号完成了端口映射绑定 - 配置的仲裁规则是否关联了对应请求端口组的触发条件,规则的执行动作是否配置为向指定模式切换端口输出新模式
- 对应仲裁规则的使能开关是否打开
如果确认所有配置正确仍生成空代码,才需要手动补充仲裁逻辑。
2.2 手动实现需要调用的API
手动填充ModeArbitration逻辑时,需要调用BSWM标准API完成请求读取、模式下发操作:
- 读取指定请求端口的最新请求值:
BswM_ReadModeRequest(BswM_RequestPortType RequestPortId, BswM_ModeType *ModeValue) - 向指定模式切换端口的所有用户下发新模式:
BswM_NotifyModeChange(BswM_ModePortType ModePortId, BswM_ModeType NewMode) - 若使用通道式模式管理,可调用
BswM_SetChannelMode(BswM_ChannelType ChannelId, BswM_ModeType NewMode)完成指定通道的模式更新
内容的提问来源于stack exchange,提问作者Ehsan R
相关产品推荐
相关产品推荐

