AUTOSAR面试题集锦(1)基础知识

目录

最基础概念

什么是AUTOSAR?AUTOSAR到底做了什么?

AUTOSAR的结构是什么样的?分为哪几层?

MCAL开发

什么是MCAL?

使用过EB吗?怎样使用EB配置MCAL工程?

autosar4.3.1和4.4.0有什么区别?

什么是复杂驱动?

为什么使用多核?AUTOSAR提供了几种多核方案?具体是什么?


最基础概念

什么是AUTOSAR?AUTOSAR到底做了什么?

        AUTOSAR,即汽车开放系统架构,是一套专门用于汽车的开放性的框架和行业标准,旨在标准化汽车开发的流程。

AUTOSAR 通过标准化软件接口、交换格式和方法论等内容,主要实现以下几个目标:

1.  使软件和硬件彼此独立,让应用层开发人员不需要过多的关注硬件;

2.  制定软件接口规范,使得软件不会高度依赖硬件平台,提高代码的复用性;

3.  通过标准化的开发流程和方法,降低汽车软件开发的重复性工作,提高工作效率和软件质量。

通过上述几个目标,AUTOSAR 可以实现大幅缩短开发时间和成本。

AUTOSAR的结构是什么样的?分为哪几层?

        AUTOSAR 架构可以先被抽象成三个层次:应用层 ,RTE层 和 BSW层 ,这三层组成软件,架在微控制器上。

应用层:包含所有汽车电子系统的应用软件,封装了相关的控制算法,并由RTE事件触发。

RTE层:作为应用层与基础软件层交互的桥梁,封装了基础软件层的通信和服务,为应用层软件提供了标准化的基础软件和通信接口,实现了软硬件的分离。

BSW层:通过软件实现对硬件的控制,并提供一系列接口供商城调用。

        其中BSW层可以再被细分为 服务层 、ECU抽象层 、微控制器抽象层(MCAL) 和 复杂驱动(CDD)。

服务层:提供汽车嵌入式系统软件常用的一些服务,包括网络通信管理、存储管理、ECU模式管理和操作系统等服务。

ECU抽象层:将ECU结构进行抽象,ECU提供外围设备驱的程序

微控制器抽象层:与硬件相连接,映射出硬件的功能和接口,避免上层软件直接对微控制器的寄存器进行操作。

复杂驱动:有些比较复杂或对实时性要求比较高的设备或外设,AUTOSAR 并没有做出规范,这部分内容就是复杂驱动。

MCAL开发

什么是MCAL?

MCAL将底层硬件驱动抽象出来,对外设模块进行规范,基于Autosar规范进行驱动配置,提高了系统的可移植性、模块化和可重用性。
硬件抽象:
MCAL通过为硬件提供一个抽象层,使得上层的应用程序和操作系统无需直接与硬件交互,使得应用软件可以在不同的硬件平台之间更容易地迁移,无需对应用层进行大量修改。
硬件接口模块:
MCAL提供了一系列的驱动程序和服务模块,这些模块负责直接控制微控制器硬件,如GPIO(通用输入输出)、ADC(模数转换器)、PWM(脉冲宽度调制)、通信接口(如CAN、SPI、I2C)等。它通过标准化的接口使上层软件模块可以通过统一的API访问硬件资源。
硬件独立性:
通过MCAL,AUTOSAR系统能够提供硬件独立性,即上层应用程序和操作系统可以不依赖具体的硬件平台。这使得系统能够在不同的硬件平台上运行,降低了对特定硬件的依赖,提高了系统的可移植性。
驱动程序的实现:
MCAL包含了针对具体硬件的驱动程序,这些驱动程序负责与底层硬件进行交互,如配置硬件寄存器、处理中断、管理外设等。它们封装了硬件细节,提供了统一的接口供上层软件调用。

使用过EB吗?怎样使用EB配置MCAL工程?

1. 首先进入EB安装目录:EB\tresos\autosar下,根据使用的autosar规范的版本进入对应的文件夹下,将里面的arxml文件拆分,生成xdm文件。

2. 在EB安装目录下新建links文件夹,在里面添加 .link文件,内容为plugin路径,并将xdm文件放到该路径的config目录下。

3. 在EB配置完成后,选择生成,则会通过plugin找到对应模块的代码生成器,以代码生成器和配置为基础生成代码。

autosar4.3.1和4.4.0有什么区别?

主要区别在于4.4.0增加了对多核的规范内容。

什么是复杂驱动?

对于autosar没有做出规范的外设比如usart,芯片想要支持这个功能除了芯片有这个资源,就需要自行配置,这些需要自行配置的驱动模块叫做CDD,即复杂驱动。
所有autosar没有做具体配置的驱动全部都归类在这个模块下。
CDD模块基于需要基于autosar的共通部分规范(比如接口规范)来封装,可以调用mcal接口来实现其他的驱动功能,或者是单独的外设模块。
复杂驱动的代码只需要考虑autosar的标准规范(包含编码规范和基本要求),比如不能用标准库函数,根据autosar规范来定义宏来声明定义函数。
此外,对外暴露的接口要做参数检查。

为什么使用多核?AUTOSAR提供了几种多核方案?具体是什么?

有时候单核不能满足需求,所以会采用多核,不同的核实现不同的功能。具体怎么实现会通过软件来决定。如果不做约束,那么出现问题的时候就无法排查。此外,当大量资源都部署在一个核上,等待这一个核的资源,会导致效率低。
AUTOSAR 4.4 新增了对多核做了限制和需求。
AUTOSAR 对多核提供了四种方案:
Type 1
将一个外设的所有物理资源全部分配到一个核上。
Type 2
将不同的物理资源分配给不同的核。
比如eth有两路,分别分配给两个核,每个核只能访问自己的物理资源,不能访问另一路的。
核在调用外部接口时,会通过map表来检查该核控制的物理资源,与其做匹配。如果匹配,就能正常调用;不匹配则返回 error 。
Type 3
在 Type 2 的基础上,实现跨核调用。
需要解耦,比如两个核同时访问一个资源,以及两个核同时出发同一个资源相关的中断。
如果要实现就需要采用软件锁或硬件锁。硬件锁更高效,但会占用硬件资源。如果采用硬件锁,单mcal就会耗费大量硬件资源,但mcal正常在项目里占用资源是最少的,所以没有可实施性。
Type 4
所有资源都部署到一个核上,其他核只能间接访问。其他核想访问资源需要部署核提供核间通信机制,比如共享内存和向量。
共享内存,就是部署核提供的可供其他核调用的接口,其他核通过这个接口来间接控制该模块。
该方案需要MCAL层实现完整的核间通信机制,但一般这种机制都在rte层实现,而且 AUTOSAR 也没有对该方案的使用建议。
 

### AUTOSAR 面试题整理 #### 什么是 AUTOSARAUTOSAR 是一种开放的、标准化的汽车软件架构,旨在提高汽车电子控制单元(ECU)之间的互操作性和可扩展性。它通过定义一系列标准接口和服务来简化开发流程并降低复杂性[^3]。 #### AUTOSAR 的主要组成部分有哪些? AUTOSAR 软件架构由多个层次组成,主要包括以下几个部分: - **应用层(Application Layer)**:用于实现特定的功能逻辑,例如动力总成控制或车身控制系统。 - **运行时环境(RTE, Runtime Environment)**:作为中间层连接应用层和基础软件层,提供动态数据交换机制以及模块间的解耦功能[^2]。 - **基础软件层(BSW, Basic Software Layer)**:提供了硬件抽象和支持通用服务的能力,分为四个子层——服务层、ECU 抽象层、微控制器抽象层及复杂驱动[^4]。 #### RTE 的作用是什么? RTE 层的主要职责在于屏蔽底层细节给到上层应用程序调用者,使得开发者无需关心具体物理地址映射等问题;同时支持跨核通讯等功能,在分布式系统设计中有重要作用。 #### BSW 各个子层的具体职能描述如下: 1. **Service Layer (服务层)** 提供诸如诊断协议栈管理器(Dcm)、事件管理器(Evr)之类的全局可用的服务组件。 2. **ECU Abstraction Layer (ECU 抽象层)** 将 ECU 特定特性封装起来以便于移植至其他平台之上而不改变高层业务逻辑代码结构。 3. **Microcontroller Abstraction Layer (MCAL 微控制器抽象层)** 对 MCU 寄存器级访问进行了进一步包装形成统一 API 接口形式呈现出来供更高一层使用而不需要知道内部是如何工作的具体情况。 4. **Complex Driver (复杂驱动)** 处理那些无法简单地被划归为单一外设类别下的特殊需求情况下的设备交互过程处理工作流等事项[^4]。 --- ### 常见面试问题总结 以下是关于 AUTOSAR 方面的一些典型技术类提问方向: 1. **理论概念型** - 描述一下你理解中的 AUTOSAR 架构及其优势所在? 2. **实际应用场景分析** - 如果让你负责某款新车项目里采用 AUTOSAR 标准构建其整个电气化体系方案规划书撰写任务你会怎么开展这项活动呢? 3. **编码实践能力考察** ```c typedef struct { uint8_t id; char name[50]; } ExampleStruct; void exampleFunction(const ExampleStruct* input){ if(!input){return;} printf("ID:%d\nName:%s", (*input).id ,(*input).name); } ``` 上述 C 函数存在哪些潜在风险?如何改进使之更加健壮可靠?[提示:考虑边界条件] 4. **性能优化探讨** 当前团队正在评估是否应该优先追求算法执行效率还是内存占用量最小化,请谈谈个人观点及相关依据? 5. **故障排查经验分享** 曾经遇到过由于配置错误而导致 CAN 总线瘫痪的情况吗?如果有,请简述当时采取了怎样的措施快速定位原因并恢复正常运作状态? --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pQAQqa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值