Classic AUTOSAR专题 | I/O模块简介

news2024/11/16 21:57:23

书接上回,上期专题内容中小怿介绍了Classic AUTOSAR之存储模块,相信大家对存储以及NvM已经有了初步的认识了解。接下来我们将继续介绍Classic AUTOSAR专题之I/O模块,同时感兴趣的小伙伴还请持续关注后续内容~

01 AUTOSAR I/O功能概述

I/O(Input/OutPut)就是所说的输入输出功能,在Classic AUTOSAR平台架构中,与输入输出功能紧密配合的基础软件模块主要有:输入输出硬件抽象模块(I/O HW Abstraction)、输入输出驱动模块(I/O Drivers)、通信驱动模块(Communication Drivers),分别位于ECU抽象层(ECU Abstraction Layer)和硬件抽象层(MCAL,MicroController Abstraction Layer)。

实际上不管是传统燃油车或是现在智能化程度更高的新能源车,都不可避免地要读取车辆传感器采集的电压、电流信号。又因为应用软件无法直接读取并处理这些电信号,所以电信号需要经过提取转换后抽象成应用软件能理解的数字信号,再由应用层SWC(Software Component)调用使用。那么如何精准地分工协作完成电信号的转换和抽象,这就是I/O这些模块需要解决的事情。

I/O功能涉及的Model

为了方便理解输入输出功能对信号转换和传递过程,举例简单说明传感器采集的信号是如何提供给上层SWC使用。

如下图,压力传感器通过压敏电阻将压力转换成电压信号(电信号)传递给ADC(数模转换器),I/O Drivers模块中的ADC Driver驱动ADC Hardware将电压信号再一步转换成数字信号传递给IoHwAb(I/O Hardware Abstraction)模块,IoHwAb将接收到的数字信号(数值)进行过滤、去抖后抽象成ECU Signal(电压值),应用层SWC再经RTE(RunTime Environment)调取ECU Signal,SWC根据电压和压力的转换关系,将电压信号再计算出传感器采集到的压力值。

输入输出功能示意图

所以ADC在将压力信号转换成数字信号前,实际上都是硬件电路中的电信号,经过转换后的数值才能作为软件的变量进行调用计算。

读到这里,大家也能想到,其实输入输出相比其他功能,例如通信来说,涉及的模块相对较少。IoHwAb作为ECU抽象层的模块之一,可以直接通过RTE由SWC调用,也可调用下层MCAL层各类Drivers的标准API驱动硬件电路,从而实现软硬件的解耦。因此IoHwAb作为输入输出功能的核心模块之一,接下来我们一起进入IoHwAb内部再进行探究。

02 IoHwAb功能简介

IoHwAb作为BSW(Basic Software)的ECU抽象层模块之一,又是一组更小的模块的组合,其内部又包含了多个模块。IoHwAb在BSW中的任务或目的就是:向下层MCAL提供访问接口,并将抽象出的信号提供给上层软件调用。

AUTOSAR 软件分层架构图

2.1 IoHwAb模块组成

IoHwAb内部包含的软件模块一般是针对ECU特定设计的,不同ECU其IoHwAb包含的软件模块也并非相同,但一般情况下都会包含以下几个模块。

  • I/O Signal Interface

输入输出信号接口模块,可以对数据进行处理,如进行信号抽象、过滤、去抖动等,可以直接通过RTE由应用层SWC调用,也能直接调用MCAL drivers,如果是外部设备,也可以调用外部芯片驱动模块(Driver for ext. ASIC)。

  • Driver for ext. ADC ASIC

外置ADC驱动,用于驱动外部芯片,可以调用MCAL模块,RTE不能直接调用该模块,需要通过I/O Signal Interface。

  • Driver for ext. I/O ASIC

外置I/O驱动,类似Driver for ext. ADC ASIC。

IoHwAb构成

2.2 IoHwAb与MCAL、应用层接口

IoHwAb位于MCAL drivers上层,IoHwAb可以直接调用Drivers的标准API接口来管理驱动硬件设备,这也意味着IoHwAb也要为上层软件组件提供所有访问MCAL drivers的接口。

IoHwAb与其他模块接口

IoHwAb可调用接收MCAL drivers的接口汇总表如下所示,可以看到IoHwAb能调用所有I/O Driver的接口。(不能接收DIO driver和PORT driver的通知信息。)

——“X”表示存在调用关系

从上图中,可以注意到,IoHwAb与上层SWC交互的接口均是AUTOSAR接口而并非标准AUTOSAR接口,这是因为各种各样的信号类型难以甚至无法做到标准化,所以IoHwAb模块实际上与复杂驱动类似,需要定制化开发。实际中AUTOSAR的目的也不是为了IoHwAb模块能够实现标准化,而是为整个系统能实现输入输出功能提供了指导性参考。

2.3 ECU Signals及其属性介绍

上节说到IoHwAb向上层暴露的是AUTOSAR接口,这就需要IoHwAb将下层收到的各种各样的电信号再次统一封装成ECU Signals,因此一个ECU signal也就代表着一个电信号。

ECU Signals

为了描述电信号的更多特征,ECU Signal就需要定义一些除电信号数值以外的其他属性信息,例如过滤消抖(Filtering/Debouncing)、时效(Age)。

  • Filtering/Debouncing

所有ECU Signal都应该有Filtering/Debouncing属性,以便上层SWC获取真实的数值。该属性实际只对输入的信号有影响。

  • Age

Age属性用来描述ECU Signal的时效性,不管是IoHwAb向下层输出的信号还是从下层获取的信号,都应该有单独对应的Age属性。Age定义了一个最大有效时间,在时效时间内IoHwAb向上或向下层传递的信号都是有效的。特别的,如果Age设置为0,IoHwAb就要立即进行传输。

2.4 IoHwAb调度介绍

上文说到,IoHwAb可以将电信号封装成应用层SWC期望的ECU Signal供上层调用,那IoHwAb作为一个Basic Software,接下来我们从软件的角度看看IoHwAb如何具体实现输入输出的。

下图是应用层Sensor / Actuator Component请求获取新的“af_pressure”信号时序图。可以看到为了完成读取功能,各模块经历了以下步骤:

① EcuM调用Adc_Init()和IoHwAb_Init()分别完成ADC模块和IoHwAb模块的初始化。

② 应用层调用IoHwAb模块IoHwAb_GetVoltage()方法获取af_pressure信号。

③ IoHwAb接着调用ADC模块Adc_StartGroupConversion()开始进行信号转换。

④ ADC转换完成后会通知IoHwAb和应用层,接着应用层可同步调用IoHwAb_ReadVoltage()读取af_pressure值。

获取ADC转换信号时序图

接下来再从IoHwAb软件内部行为理解这个过程。

首先ECU state manager触发BswModuleEntry完成IoHwAb模块的初始化,这里IoHwAb可以有多个初始化函数,可以根据不同的初始化参数将不同的配置传递给MCAL drivers。虽然IoHwAb可以同时使用Runnable Scheduling和BSW Scheduling,但初始化过程只能由ECU State Manager决定,不是由应用层SWC初始化。

RTE通过IoHwAb的P-Port(Server port)口触发调用Runnable Entry R1(R1),R1会去调用ADC driver接口启动转换,等待转换完成后,ADC driver触发BswModuleEntry R2(R2)读取转换结果并由另一P-Port(Sender/Receiver port)通过RTEevent发送给SWC。

IoHwAb runnables

2.5 IoHwAb的API介绍

前文提到ADC在转换完成后会调用IoHwAb模块的IoHwAb_AdcNotification<#groupID>告知IoHwAb模块转换结果。这就需要IoHwAb预先实现该接口,待ADC driver调用。那其实对于IoHwAb本身来说,并没有要求必须实现的接口,IoHwAb模块要实现的接口完全取决于IoHwAb所需要实现的功能以及上层SWC的需要。

03 总结

以上主要介绍了Classic AUTOSAR中输入输出功能和IoHwAb模块构成、接口、调用等,解释了电信号与ECU Signal之间的相互转化,举例说明了信号的传输过程,相信读者也了解了IoHwAb的主要功能和信号抽象过程。后续还会推出AUTOSAR其他模块的介绍,期待您的关注。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/637161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年6月DAMA-CDGA/CDGP数据治理工程师认证这里报名

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)【下篇】

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

ZYNQ 7020 开发板开机检测

拿到开发板后检测开发板能否正常工作。 检测需要的工具&#xff1a;电脑、显示器(有HDMI接口)、HDMI线、鼠标、键盘、网线、USB转串口驱动软件。 在检测之前&#xff0c;先要在自己的电脑上安装好终端工具和USB转串口的驱动软件。 终端工具我安装的是 MobaXterm。 USB转串口的驱…

深入理解JavaScript模块化开发

前言&#xff1a; 随着JavaScript应用程序的复杂性不断增加&#xff0c;模块化开发成为了一种必备的技术。通过将代码划分为模块&#xff0c;我们可以提高代码的可维护性、可重用性和可扩展性。在本文中&#xff0c;我们将深入探讨JavaScript模块化开发的概念、优势和不同的模块…

热门自定义报表系统推荐,哪款自定义报表系统更功能更强大?

随着企业管理的日益复杂&#xff0c;越来越多的企业需要一款高效、灵活、易用的自定义报表系统来满足其各种报表制作和数据分析需求。然而&#xff0c;在众多自定义报表系统中&#xff0c;哪款更加强大&#xff1f;今天&#xff0c;我将向大家推荐5款热门自定义报表系统&#x…

设施设备管理系统

凡尔码搭建设施设备管理系统是一种为企业和机构提供维护和管理设备、设施、建筑物和环境等设施的系统。它通过自动化设施的巡检计划、保养计划、通知和维护任务&#xff0c;使设施维护管理的工作更高效率、更科学化&#xff0c;并提高了设施设备的可靠性和使用价值。该系统具有…

asp.net学生考勤管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net学生考勤管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net试卷自动生成系统VS开发sq…

谈谈 NLP中 大语言模型 LLM的In-Context Learning(ICL) 能力

In-Context Learning(ICL) 1.介绍 自GPT-3首次提出了In-Context Learning(ICL)的概念而来&#xff0c;ICL目前已经变成了一种经典的LLMs使用方法。 2.思路 ICL主要思路是&#xff0c;给出少量的标注样本&#xff0c;设计任务相关的指令形成提示模板&#xff0c;用于指导待测…

Can We Predict Australian Rainfall?建立LSTM模型预测澳大利亚平均降雨量

数据集&#xff1a;Rain in Australia | Kaggle 数据探索 首先df pd.read_csv(weatherAUS.csv)读入数据&#xff0c;df.shape查看形状为(145460, 23)。 通过df[RainTomorrow].value_counts(dropnaFalse)查看下雨与不下雨标签各自的数量&#xff0c;No为110316&#xff0c;Ye…

初识分类问题

分类问题 根据尺寸把图像分类为纵向图像和横向图像&#xff0c;是二分类问题。 将图像数据转换为坐标&#xff1a; 白色的点是纵向图像&#xff0c;黑色的点是横向图像 若增加更多的图像数据&#xff1a; 分类的目的就是找到这条线&#xff0c;用一条线将图中白色的点和黑色的…

windows 服务程序和桌面程序集成(五)集成为一个EXE

系列文章目录链接&#xff1a; windows 服务程序和桌面程序集成&#xff08;一&#xff09;概念介绍windows 服务程序和桌面程序集成&#xff08;二&#xff09;服务程序windows 服务程序和桌面程序集成&#xff08;三&#xff09;UDP监控工具windows 服务程序和桌面程序集成&…

《Python深度学习基于Pytorch》学习笔记

1.Numpy提供两种基本的对象&#xff1a;ndarray&#xff08;n维数组对象&#xff09;&#xff08;用于储存多维数据&#xff09;和ufunc&#xff08;通用函数对象&#xff0c;用于处理不同的数据&#xff09;。 2.numpy的主要优点&#xff1a;ndarray提供了很多数组化的运算&a…

springboot+vue大学生足球队管理系统 java

(1) 系统管理&#xff1a; 用户分为超级管理员、球队管理员、球队球员、游客&#xff0c;以区分不同用户的操作权限&#xff0c;用户的登录退出。 (2) 前台页面&#xff1a; 1.网站首页&#xff1a;展示系统简介&#xff0c;部分赛事信息&#xff0c;部分院系球队信息&#xff…

号称「碾压」LLaMA的Falcon实测得分仅49.08

作为开源模型界的扛把子&#xff0c;LLaMA 一直备受瞩目。 这是一组由 Meta 开源的大型语言模型&#xff0c;共有 7B、13B、33B、65B 四种版本。其中&#xff0c;LLaMA-13B 在大多数数据集上超过了 GPT-3&#xff08;175B&#xff09;&#xff0c;LLaMA-65B 达到了和 Chinchill…

服务器文件同步机制配置(rsync Sersync)

参考文章链接&#xff1a;http://static.kancloud.cn/curder/linux/78148 在上述参考文章中&#xff0c;对与主从同步部署过程做了详细的操作解释&#xff0c;但对于三台服务器如何互相同步&#xff08;即三个都是master&#xff09;&#xff0c;本文针对三台master相互同步进…

一文读懂redis持久化机制

持久化官网相关参考资料 https://redis.io/docs/manual/persistence/ 持久化就是把redis内存里面保存的数据保存磁盘中&#xff0c;在redis重启或者能够使得数据不会丢失。目前常用的持久化方式有&#xff1a;RDB方式、AOF方式以及RDB AOF两种方式 RDB持久化方式 所谓的RDB…

实现无间断的自动化:Jenkins与GitLab的定时任务工作流程

简介&#xff1a; Jenkins是一个流行的开源自动化服务器&#xff0c;而GitLab是一个强大的代码托管和协作平台。通过结合Jenkins和GitLab&#xff0c;我们可以建立一个强大的定时任务自动化工作流程&#xff0c;实现代码拉取、构建、测试和部署的自动化。本篇博客将介绍如何使…

大屏数据可视化开源项目

一、DataGear —— 数据可视化项目 官网&#xff1a;DataGear - 开源免费的数据可视化分析平台 DataGear 是一款开源免费的数据可视化分析平台&#xff0c;数据可视化看板。 功能特性&#xff1a; 1、多种数据源&#xff0c;支持运行时接入任意提供 JDBC 驱动的数据库&#…

Web网页端IM产品RainbowChat-Web的v5.0版已发布

一、关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统&#xff0c;是RainbowChat的姊妹系统&#xff08;RainbowChat是一套基于开源IM聊天框架 MobileIMSDK(Github地址) 的产品级移动端IM系统&#xff09;。 ► 详细介绍&#xff1a;http://www.52im.net/thread-248…

Python的pip install安装路径修改

背景 当我们在安装python的依赖包的时候&#xff0c;不知道默认安装在什么位置&#xff0c;或者不想安装在默认的位置&#xff0c;这时候我们可以手动修改pip install的安装位置。 1.打开cmd窗口, 执行python -m site 输入 python -m site 这个命令可以看到目前的USER_BASE和…