AUTOSAR开发

news/2024/12/2 20:58:14/
  1. 综述

本文档主要描述了VP项目MCU芯片TC297的AUTOSAR方案。MCU的基础软件由AUTOSAR软件实现,AUTOSAR可简易理解为如下层次。

  1. MCU芯片驱动层:MCU芯片的抽象层,目的是将各类MCU芯片进行抽象,向上统一接口,隔离其他层次软件,做到足够的解耦状态,以便更换芯片时其他软件无需变更只需更换这一层软件就可。MCU芯片的抽象层包含Port,CAN,SPI,ETH,MCU,WDG,GPT等。
  2. 控制器抽象层:控制器抽象层(包含I/O抽象驱动),作用是将控制器的外设进行抽象,向上统一接口。这一层的目的是可以控制器不同的外设需求进行抽象,做到上下隔离,解耦。重新设计控制器时,修改本层即可。包含:Fee,Mefif,Canif,Ethif等等。
  3. Service层:这一层是Autosar核心层,包含内存管理,网络管理,数据路由,UDS诊断管理,XCP标定等汽车领域通用化的软件服务都在这一层有所体现。关联了ISO14229,ASAP2,J1939等汽车标准,同时将成熟的MCU协议软件集成到这一层中;
  4. Autosar OS:OS实际上属于Service层的模块,但较为核心且独立,所以单独列出。AUTOSAR OS是基于OSEC OS进行开发的,区别于Linux,AUTOSAR OS功能相对简洁,不包含外设驱动,只关注任务调度。且所有任务都是静态分配,不支持动态任务分配。使用调度表进行任务调度,可对任务进行优先级,是否抢占,任务堆栈等进行设置,对二类中断进行统一管理。有专门配置选项进行管理。
  5. 复杂驱动:对不易被统一接口,未被AUTOSAR定义,但属于基础软件,各控制器自定义的软件可放在复杂驱动中。
  6. RTE:可理解为数据接口层。

  1. 系统硬件架构图

根据项目的功能需求,板子的硬件模块图如下:

图1 VP项目五仁板子的硬件模块图

  1. 设计方案

AUTOSAR软件整体分为三部分:应用层软件、BSW与CDD和MCAL。AUTOSAR软件整体框图如下图所示。

图1 AUTOSAR软件整体框图

 

  1. 应用层软件依据具体需求,由模型生成代码或者手写代码方式实现。应用层软件具体功能,本文档暂不涉及。
  2. BSW部分是AUTOSAR协议栈的主体,通过配置软件进行参数配置,由工具生成代码。CDD部分依据具体需求,由手写代码实现。
  3. MCAL部分是芯片外设的驱动,依据项目中使用到的外设和使用方式,通过配置软件进行参数配置,由工具生成代码。

下文介绍各个模块包含的功能。

    1. BSW模块

BSW模块是AUTOSAR的标准模块,主要包含(1)CAN、LIN、ETH等通信服务;(2)OS、ECUM等系统服务;(3)DEM、DCM等诊断服务;(4)FEE、NVM等存储服务。该部分可以在EB工程的基础上,依据VP具体需求进行更改。使用到的BSW模块如下图所示。

 

图2 BSW模块

    1. CDD模块

AUTOSAR没有覆盖到的一些特殊的功能,需要作为CDD进行开发。VP项目中CDD模块如下图所示。

 

图3 CDD模块

    1. MCAL

MCAL是MCU外设的底层驱动。该部分已经VP项目中具体使用到的外设和各外设的使用方式,通过配置软件进行参数配置,并且生成代码。VP项目中用到的外设和对应外设所驱动的外部设备,见下图所示。

图4 MCAL外设及外部设备


http://www.ppmy.cn/news/7019.html

相关文章

关于json.dumps中的参数详解

中文编码问题 这样一段代码: import json dict {id: 1, title: b\xe7\xac\xac\xe4\xb8\x80\xe7\xab\xa0 \xe7\xa7\xa6\xe7\xbe\xbd} dup json.dumps(dict ,ensure_asciiFalse) print(dup)Python2执行输出: {"id": 1, "title": …

【vue设计与实现】编译器 - 转换上下文与节点操作 进入与退出

context.nodeTransforn 数组,这里的 context 可以看作AST转换函数过程中的上下文数据。所有 AST转换函数都可以通过 context来共享数据。上下文对象中通常会推护程序的当前状态。上下文对象中包含的信息对于编写复杂的转换函数非常有用。接下来我们要做的就是构造转…

详解SpringBean的作用域(Scopes)

文章目录一、SpringBean作用域总览二、"singleton" Bean作用域三、"prototype" Bean作用域1、验证singleton、prototype类型的Bean2、总结四、"request" Bean作用域1、配置2、简介五、"session" Bean作用域1、配置2、简介3、总结sessi…

MyBatis 中的动态 sql

动态 sql 简单来讲就是我们能通过条件的设置生成不同的 sql,MyBatis 中常用的动态 sql 表达式主要是有五种: if choose (when, otherwise) trim, where, set foreach sql if 动态 sql 中最常见的场景是根据条件查询,比如要实现一个查询…

好书推荐《C++17 in Detail》

无意中发现作者的博客(https://www.cppstories.com/)和这本书。这本书算是对C17新增特性较为全面的介绍,而且从实战出发,不流于语法细枝末节,简洁清晰,可以作为Scott Meyers那本非著名的《Effective Modern…

青少年等级考试【Python通关干货】(二级)

青少年等级考试【Python通关干货】(二级)1.列表类型的概念 2.序列的通用操作 3.可变序列及列表的通用操作 4.列表的特有操作 5.元组类型的概念与操作

Hive+Spark离线数仓工业项目--数仓维度层DWS层构建(1)

维度建模回顾:建模流程 目标:掌握维度建模的建模流程 实施 step1-需求调研:业务调研和数据调研 - 了解整个业务实现的过程 - 收集所有数据使用人员对于数据的需求 - 整理所有数据来源 step2-划分主题域:面向业务将业务…

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型。 SFP、SFP+、SFP28、QSFP+和QSFP28这些光模块类型对专业人员来说并不陌生,这些热拔插模块都可用于连接网络交换机和其他网络设备(如服务器或收发器)进行数据传输。但你了解这些模块的具体区别吗?QSFP28…