项目起因
从事Android系统开发10余年,切换到自动驾驶领域后,发现汽车相关的代码、文档、工具链资料信息比较少,大多需要付费,而且价格不菲,和之前做的安卓有着天壤之别,这里不得不感叹谷歌商业化的强大,迅速吸引了大量的开发者涌入到android,这也是android成功的一部分吧,言归正传,汽车领域的知识非常多,并且比较零散,很多工具个人很难获取,所以,在我自己自学的同时也希望把自己的经验分享给大家,本项目从AUTOSAR的文档中文本地化开始,后续将补充学习导读、工具链、源码分析等等,自己刚刚开始学习,希望不要烂尾 😊
项目约定
本项目用于开展AUTOSAR文档的中文翻译工作,并确保项目的可持续性,特别做如下约定:
- 所有翻译工作转到 Github 来协同,可以通过 Github Pull Request 来完成评审。
- 所有翻译结果用 autosar.ltd 来展示,并方便导出
- 所有翻译后的文档格式统一为 MDBOOK支持的 Markdown 格式。
- 目录结构尽量遵循AUTOSAR组织原有发布的格式。
前言
为了顺利的从android消费类电子进入车载领域大门,先介绍一些基础知识方便后面的沟通中能够不蒙圈。
你认识几个车?
汽车电子相关知识:
1.开发常见黑话
- OEM:Original Equipment Manufacturer的缩写,通常指设备厂商/主机厂/整车厂。
- Tier 1:一级供应商,也就是跟OEM签订供应合同的供应商。一级供应商所供应的零部件,并不一定全部来自自身的产线生产制造,比如液晶仪表供应商的液晶屏幕就会采取外购的形式,液晶屏幕供应商,就是二级供应商。
- Tier 2:二级供应商,是跟一级供应商签订合同的供应商。在一般零部件制造中,一级供应商制造的零件中也会采用购买或外包的形式获取所需的零部件和服务。
- Tier0.5:源于主机厂全栈自研的诉求,通过与主机厂深度绑定,Tier0.5将从全流程介入主机厂研发、生产、制造,甚至后期的数据管理和运营。
- SOP: Start Of Production批量生产启动,不少网站写的是small-outline package,个人认为这个不适用在这里,一般这种指的是一种封装工艺,更多在芯片封装上。
- EOP: End of Prodcuction 量产结束
- A样件:prototype 零件设计初期,手工样件,关键尺寸要求,加工周期短,用于基本性能试验及mule car造车;
- B样件:soft tooling 手工样件,全尺寸要求,零件材料与结构都与量产件一致,但模具为软钢模,用于设计验证DV;
- C样件:hard tooling 批量样件,尺寸以及老化验证,量产用的模具,用于工艺和生产试验验证 PV。
2.MPU,CPU,MCU,ECU,SOC是什么?
-
CPU:Central Processing Unit。中央处理器,CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。
-
MPU:Micro Processor Unit,叫微处理器,有时记作µP(读micro processor unit),通常代表一个功能强大的CPU(暂且理解为增强版的CPU吧),但不是为任何已有的特定计算目的而设计的芯片。这种芯片往往是个人计算机和高端工作站的核心CPU。Intel X86,ARM的一些Cortex-A芯片如飞思卡尔i.MX6、全志A20、TI AM335X等都属于MPU。
-
MCU:Micro Control Unit,叫微控制器(不是微控制器),有时记作µC(读micro Control),是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,根据外界的信号,产生一些反应,做一点简单的人机界面,侧重点在于控制,而计算比较少。
-
ECU:ECU原指的是Engine Control Unit,即发动机控制单元,特指电喷发动机的电子控制系统。后来随着汽车电子的迅速发展,ECU的定义变成了Electronic Control Unit,即电子控制单元,泛指汽车上所有电子控制系统。而原来的发动机ECU有很多的公司称之为EMS: Engine Management System。
NOTE: In the AUTOSAR sense an ECU means one microcontroller plus peripherals and the according software/configuration. The mechanical design is not in the scope of AUTOSAR. This means that if more than one microcontroller in arranged in a housing, then each microcontroller requires its own description of an AUTOSAR-ECU instance.
注:就AUTOSAR意义上而言,ECU是指一个MCU微控制器加上外围设备软件/配置。机械设计不在AUTOSAR的范围内。这意味着如果超过一个微控制器布置在外壳中,那么每个微控制器都需要对AUTOSAR-ECU实例。
-
SoC:System-on-a-Chip ,中文的的意思就是“把系统都做在一个芯片上 ”,SoC上集成了很多关键的部件,比如CPU 、GPU 、内存 、也就说虽然它在主板上的存在是一个芯片,但是它里边可是由很多部件封装组成的。例如MTK6833,天玑9000,高通8155,麒麟970,三星的exynos 4412等 | | | :----------------------------------------------------------: | | 基于ARM架构的SOC |
-
NoC: (Network on Chip)中文称之为片上网络。随着 SoC 技术的发展,芯片内部的 IP 核越来越多,有可能在一颗芯片中集成了数以百记的处理器内核(包括同构处理器内核和异构处理器内核)、数以千计控制器 IP 核等等,那么这种情况下 IP 核之间的互联就成为 SoC 性能一个重要组成部分。
3.A 核、R核、M核具体是什么?
- ARM公司目前主流处理器以Cortex来命名,下面是ARM的产品图:
ARM公司发布的处理器型号
-
Cortex-A系列:Application Processors(应用处理器),基于虚拟内存的操作系统和用户应用,可以运行Linux,偏向消费产品,应用包括智能手机、智能本和上网本、电子阅读器、数字电视、家用网络、家用网关和其他各种产品。这类处理器运行在很高的时钟频率(超过1GHz),支持像Linux,Android, Windows和移动操作系统等完整操作系统
-
Cortex-R系列:Real-time Processors(实时处理器)–面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持MMU,不过通常具有MPU、Cache和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如200MHz 到 >1GHz ),响应延迟非常低。虽然实时处理器不能运行完整版本的Linux和Windows操作系统,但是支持大量的实时操作系统(RTOS)。
-
Cortex-M系列:Microcontroller Processors(微控制器处理器)–微控制器处理器通常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在200Mhz之上)。 并且,新的Cortex-M处理器家族设计的非常容易使用。因此,ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。
-
英飞凌的TC397 , 是自研的Tricore架构,不属于arm,也不是任何A,R,M系列
-
NXP的S32G 使用ARM Cortex M系列
-
4.车规级芯片和消费电子类芯片的区别
- 汽车行业和其他行业,特别是消费产品行业是有很大区别的,零部件的级别分军工级、车规级和消费级。很显然,汽车行业的技术要求比消费级的高。因为它涉及道路安全。
- 于是,软件上就有个叫AUTOSAR的东西,甚至还有个叫ASPICE的过程管理来管控整个产品的开发过程。
AutoSar是我们进入车圈避不开的一个东西,相关的从业人员不多,技术比较封锁(主要体现在和android差距比较大,不开源,找啥都没有,找啥都收费~!~),这东西也不似我们学习的C、Java语言一样,一书一电脑一个IDE足矣,基本上学习的头一个月是懵的,这也是接下来讲述的重点,可能要分好几部分
-
ASPICE: Automotive Software Process Improvement and Capability dEtermination汽车产业的软件流程改进和能力测定标准
-
CAN、LIN、FLEXRAY、ETH、MOST 汽车上使用的各类总线,CAN、ETH为主
-
ASIL: Automotive Safety Integrity Level 汽车安全完整等级
-
ISO: International Standardization Organization,ISO26262 道路车辆功能安全
-
MISRA: The Motor Industry Software Reliability Association,汽车工业软件可靠性联合会,以MISRA-C而闻名,同样为了安全。
-
CPU lockstep 为了满足汽车功能安全(如ISO26262),有许多有用的措施来规避E/E系统异常崩溃造成的不必要伤害,CPU-LockStep是实现高诊断覆盖度(检测错误发生的能力)的一种常见手段,大致方法:两个核运行同样的程序,将结果输入一个逻辑比较器中,周期性(一般会存在周期delay)比较两个核的输出结果是否相同。如果相同,则继续运行;否则,则需要采取一定的措施(例如中断上报)。如果一段时间后错误还是存在,可能重启或者重新检查。
-
汽车电子电气架构EEA
EEA(Electrical/Electronic Architecture)把汽车中的各类传感器、ECU(电子控制单元)、线束拓扑和电子电气分配系统整合在一起完成运算、动力和能量的分配,进而实现整车的各项功能。
汽车电气:涵盖汽车电器、汽车电子、汽车线束以及他们的连接关系;
- 汽车电器只是汽车上安装或使用的一个用电设施(或叫设备),包括蓄电池、发电机、起动机灯具、暖风机、汽车电子设备(如收放机、导航仪等)等等,也可以把汽车线束看成是汽车电器的一种(一个成员);
- 汽车线束是将汽车上蓄电池、发电机及所有用电设备,按照一定规则连接起来的导线的集合体,这些导线往往是捆扎成束,按需求分叉,分叉也捆扎成束。
- 汽车电子是指电子技术在汽车上的应用。包括:汽车上的电子设备(如收放机导航仪、电子点火器、电喷电控发动机用的ECU、ABS系统、安全气囊等等)、汽车上的网络通讯系统(比如CAN总线)、汽车防盗系统、定位系统等等
汽车电气电子结构
AUTOSAR的简介
AUTOSAR
是汽车和软件行业领先公司的全球合作联盟,为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。考虑到目前和未来市场中不同的汽车E/E架构(Electrical/Electronic Architecture),他们制定了一套专门用于汽车的开放性的框架和行业标准,它将用作管理将来的应用程序和标准软件模块中功能的基本基础结构。AUTOSAR的是AUTomotive Open System ARchitecture的缩写,是一种软件架构,因此AUTOSAR有两种含义:
-
代表AUTOSAR联盟
-
代表AUTOSAR软件架构。
一、AUTOSAR成员
AutoSAR官网的成员的介绍界面,目前有7类合作伙伴(最近新增了premium plus)
- 核心合作伙伴(创始成员9个无法申请),战略合作伙伴一个电装
- 高级合作伙伴 +
- 高级合作伙伴
- 开发合作伙伴
- 关联合作伙伴
- 参与者
- 订阅者
AUTOSAR会员类型
二、合作伙伴
目前已经有超过300+AUTOSAR合作伙伴。
AUTOSAR合作伙伴
三、成员发展
西门子VDO原本也是核心成员,被Continental 收购,因此西门子VDO不再是AUTOSAR的核心成员
合作伙伴发展历史
AUTOSAR合作伙伴的遍布全球
四、AUTOSAR的组织
- AUTOSAR标准主要是由AUTOSAR Working Group组织制作的
-
AUTOSAR还有一个用户组,用户组是变化的,当前主要有三个用户组:
-
UG-CN China,UG-CN的愿景是为中国市场启用AUTOSAR。
- 为了实现此目标,用户组在AUTOSAR演示程序项目上工作,以提供用户指南“如何从AUTOSAR开始”和演示程序的启动配置。
-
UG-NA North America,UG-NA的愿景是增强北美用户在AUTOSAR方面的技能,以充分利用AUTOSAR带来的汽车EE体系结构开发的优势。
- 为实现这一愿景,他们提供了一个协作环境,以促进AUTOSAR在北美地区的使用。
- 开发关键文档以帮助理解AUTOSAR标准,并提供示例和配置以解决特定的用例。
-
UG-IE Improved Exploitation,UG-IE代表了更好地利用AUTOSAR工业标准。
- 他们的任务是分享AUTOSAR的利用和开发经验。其他任务包括为战略方向准备提案,以提高AUTOSAR的可用性以及节省更多的精力。
- UG-IE的总结结果创建了演示文稿和技术论文,对AUTOSAR战略,技术工作组和用户产生了推动作用。
-
- AUTOSAR软件框架,AUTOSAR分为CP和AP和合作平台
指标 | CP | AP |
---|---|---|
开发工具 | C | C++ |
开源程度 | 非开源 | 开源 |
适用环境 | 传统ECU、MCU | 自动驾驶、V2X |
实时方式 | 硬实时 | 软实时 |
通信方式 | CAN、LIN | 以太网 |
操作系统 | OSEK-OS based | POSIX |
升级方式 | 固定,不可升级 | SOA |
功能安全等级 | ASIL D | ASIL B以上 |
AUTOSAR CP和AP对比
-
AUTOSAR交付内容
从“Foundation”出发的,扩展出Classic Platform(简称CP)和Adaptive Platform(简称AP)两大平台,继而定义各种接口和测试等。
- CP交付了规范文档
- AP提供示例代码和文档
- 白色部分属于还在扩展中的部分标准
-
Foundation(FO)主要作用是确保不同AUTOSAR标准的兼容性,因此包含了所有常见的Artifact和协议,例如
五、AUTOSAR带来了什么好处
- 对于OEM车厂
- 对于供应商
- 对于工具供应商
- 对于新入市场者
六、AUTOSAR开发流程
AUTOSAR的方法论从参与者角色分工来看,分别支撑不同的工作。
-
Software Component Description
- 该SWC用到或被用到的Operation和Data
- SWC对基础构架(network)和对硬件(latency times, timing, etc.)的要求
- SWC使用的资源 (memory, CPU time, etc.)
- 运行机制(repetition rate)
- SWC软件接口
-
ECU Resource Description
- Sensor, actuator 传感器,执行器
- Memory 存储器
- Processor 处理器
- Communications periphery 通信外部设备(如 收发器)
- Pin assignments 引脚分配
-
System Constraint Description 系统约束申明
- Information on network topologies 网络拓扑
- Limitations (“Constraints”) 限制
- Protocol 协议
- K-matrix 通信矩阵
- Baud rate, timing 波特率,定时
- ECU映射
前面提到了TOOL供应商,autosar的创始成员里面也有比如大陆集团的EB,博世旗下的ETAS,还有一些国产厂商也做的非常棒东软睿驰、经纬恒润,华为等。
不过市场占有率最高的还是Vector,工具链最全,市场占有率最高,同样价格也是非常美丽。
工具大致介绍
AUTOSAR的发展
首先思考一个问题,为什么需要AUTOSAR?
1、早期开发状态
裸写代码法,目前这种开发方式还是存在的,例如一些简单的ECU(锂电池管理单元BMS)在使用这种方式开发,缺点比较明显,软硬件耦合严重换颗芯片就要进行重新裸写。大致总结存在如下问题:
- 电子系统的复杂性不断增长,软件代码量急速上升
- 生命周期差别: 整车的生命周期往往长于ECU的生命周期
- 嵌入式系统不支持硬件抽象
- 有限的软件模块化
- 重用性差: 当硬件(处理器型号)更换后,软件往往要推倒重写
- 五花八门的硬件平台
2、基于封装思想的开发状态
裸写多了,程序员总会想着偷懒,通过有经验的架构师做出一套优化架构,并且结合一些操作系统(OS)对代码进行封装,这样一来便可以大大降低裸写代码法的很多弊端,极大的解决了软件的日益复杂化,可重用低的问题,不过缺点仍然有:
- 对于不同的客户,由于各家客户需求不同,重用性依然不好
- 软件耦合也会存在,同时该方法的优劣和架构师的能力直接挂钩,存在一定的安全隐患
如下图是Vector以前的解决方案:
Vector在AUTOSAR之前的解决方案
为了解决行业内嵌人式软件开发所面临的问题,提高软件的开发效率和可重用性,降低软件的开发成本,全球主流的汽车整车厂、零部件供应商以及软件、半导体和电子工业的企业于2003年联合成立了汽车开放系统架构AUTOSAR联盟旨在推动建立汽车电气/电子(E/E)架构的开放式标准,使其成为汽车嵌人式应用功能管理的基础架构,并规范汽车电子产品、软件和元器件的互通性,使用户避免因为采用私有的协议和解决方案而导致开发成本日益增长
3、使用AutoSAR作为解决办法
AUTOSAR定义了一套支持分布式的、功能驱动的汽车电子软件开发方法和电子控制单元上的软件架构标准化方案。从结构化概念设计阶段设计AUTOSAR软件组件及其在ECU间的分配,到定义通信和ECU间的配置,通过工具为软件开发流程提供通用的支持采用成熟的工具实现需求的结构化并进行相应的管理,同时建立相应的配置。
1、AUTOSAR的诞生
自从德国发明汽车后,在后来的岁月里,汽车不断地改进不断地演化,车内的系统和零部件越来越复杂和繁多。时至今日,汽车行业,变成了一个蓬勃发展的行业
作为汽车发源地的欧洲大地,准确地讲,德国,于2002年8月,有一群车企大佬(宝马、博世、大陆集团、戴姆勒克莱斯勒和大众汽车公司,后来西门子威迪欧也加入了)就共同的挑战和目标进行了讨论,成立一个联盟,制定标准,准备一统江湖。
很快,在2003年,他们就将AUTOSAR kickoff了,同时也制定了AUTOSAR Classic Platform的Draft版。
在后来几年,这个联盟吸引了无数车企和相关设备商加入,规模不断地发展壮大,所制定的标准框架也日益完善。
逐渐地,后来发现Classic Platform只覆盖了低端的设备,是基于微处理器之上的,上面更高端的系统或服务(有哪些?想想手机业务的发展情况),没有覆盖到。他们的野心是大大的,目标是宏伟的,到了2017年,一个Adaptive Platform就这样诞生了
2、AUTOSAR软硬件隔离
Android是一个非常优秀的架构设计,做到了分层软件,软硬件解耦、高度可重用
一、Android解决碎片化问题退出的Project Treble
大家经常能看到的下图能很形象的说明这一点,隔离后的好处就是不管你用NXP的还是英飞凌的亦或者是TI的;不管你的硬件是怎么设计的,我们都不用修改我们的代码,只需要配置一下AutoSAR,告诉它我换硬件了,然后AutoSAR帮你匹配硬件。当然,实际操作起来还是需要对AuoSAR配置的熟练掌握的,因为要改很多
二、AUTOSAR的作用
旧实现各家方案是各搞各的,并且自己内部也是各项目各搞个的,也就意味着APP无法内外部复用,需要消耗大量的适配成本。
3.Autosar的出现因素
- 汽车电子系统复杂度和代码量的不断提升,当前整车控制系统的代码量都已达到千万行代码的级别,其复杂度远比高端的航空航天要高,只是安全性比他们要低些。
- 软件的复习用性差,由于软件依赖于固定的硬件开发,当硬件发生变更时功能往往需要推倒重来,无疑增加重复开发的工作量和周期,这都是血琳琳的投入和成本。
汽车行业里有众多的整车厂(OEM)和供应商。一般来说,每一家OEM会生产不止一种车型,每一家OEM对不同子系统和零部件会选择不止一个供应商,每个供应商也会向不止一家OEM供货。减少开发成本最有效的办法就是,尽可能让产品可重复利用,用数量来分摊开发成本。OEM希望可以让同一套系统和部件用在不同的车型上;同一辆车上来自不同供应商的的各个系统和部件可以相互兼容;而供应商希望开发出来的部件和算法可以通过简单的软件调整就供给不同的OEM。
另一方面,各个供应商的开发进度往往是不同步的。人们希望可以在供应商开发的过程中就可以测试该部件能否与整车上的其它系统正确配合。因此需要一种统一的、标准化的系统描述方法。
这便是AUTOSAR的初衷,即通过提升OEM以及供应商之间软件模块的可复用性和可互换性来改进对复杂汽车电子电气架构的管理。
对于此,汽车圈,德国为主的几个大佬拉倒一起讨论了300来回,并成为最初的九大核心成员(博世、BMW、大陆、福特、戴姆勒、PSA、通用、丰田和大众)。
AUTOSAR架构
AUTOSAR总的思想是,Cooperate on standards – Compete on implementation
,标准上合作,实现上竞争。
意思就是汽车行业的整车厂和供应商共同合作开发一套汽车电子系统的软件开发标准,这样大家就可以专注于功能的开发,而无需顾虑目标硬件平台。
-
将汽车系统的基础软件标准化为一个跨OEM的 标准栈
-
集成不同供应商生产的功能模块
-
适用于不同的车辆及不同的车型
AUTOSAR的计划目标主要有三个:
- 规范分布式开发流程中的交换格式
- 为应用程序的开发提供方法论
- 制定各种应用接口规范
AUTOSAR的使用
AUTOSAR架构分层
AUTOSAR的应用范围:AUTOSAR专用于汽车ECU。此类ECU具有以下属性:
- 与硬件(传感器和执行器)强交互
- 与CAN、LIN、FlexRay或以太网等车辆网络的连接,
- 具有有限计算能力和内存资源的微控制器(通常为16或32位)(与企业解决方案相比)
- 实时系统和从内部或外部闪存执行程序。
分层架构是实现软硬件分离的关键,使汽车系统软件开发者摆脱了之前ECU软件开发与验证时对硬件系统的依赖,在AUTOSAR分层架构中,汽车嵌入式系统软件自上而下分别为:
- 基础软件层(Basic Software Layer, BSW)
- 应用软件层(Application Software ,ASW)
- 运行时环境 (Runtime Environment,RTE)
- 微控制器(Microcontroller)
AUTOSAR分层示意图
1、基础软件层(Base Software Layer)
- 进一步,BSW 基础软件层(Basic Software Layer,BSW)又可分为四层:
- 微控制器抽象层(Microcontroller Abstraction Layer,MCAL)
- ECU抽象层(ECU Abstraction Layer)
- 服务层(Services Layer)
- 复杂驱动 (Complex Device Drivers ,CDD)
基础软件层详细划分
- 基础软件层被进一步划分为功能组(functional groups)。服务层**(Services Layer)** 分为系统服务、内存服务和通信服务等。
基础软件功能分组
从上图可以看到,BSW这一层的划分有点乱,既有纵向的,也有横向的,CDD可以认为是纵向的独立的一个功能组,这些跨越多个层级的都是一些比较特殊的,比如左侧的系统服务跨越多个层级,并且包含了OS(AUTOSAR OS后面描述);然后还有一个I/O硬件抽象。每个功能组在纵向上都是一个分类,但这并不是说每个模块/功能组只能在自己所属纵向上使用。比如SPI底层驱动可能划分在Communication Drivers里面。但是该模块的调用路径很可能是通过RTE → I/O Hardware Abstraction → SPI。但是像CAN这种外设,它就是通过RTE → Communication Services → Communication Hardware Abstraction → Communication Drivers/CAN这条线来使用的。
1.1 微控制器抽象层(Microcontroller Abstraction Layer)
微控制器抽象层是基本软件中最低的软件层。它包含内部驱动程序,这是一种可以直接访问µC和内部外设的软件模块。
微控制器抽象层
任务:
让MCAL层的上层软件独立于/不依赖微控制器。
特性::
-
实现:依赖于µC的实现
-
接口:标准化和µC独立
举个例子:
例如我们现在有一个芯片A,基本开发完成了,但是为了cost down,,要求换个芯片吧(叫芯片B),芯片B不但便宜,还Pin2Pin兼容。这时候做应用及上面服务层的同事一片叫好(反正没他们啥事,吃瓜群众)。做MCAL的人就苦逼了,他们得重新针对新的芯片B重新弄一遍。这就是上面不依赖于芯片,有MCAL搞定。
微控制器抽象层包括:
微控制器抽象层驱动分组
微控制器层详细划分
如果更详细一点的划分如上图
-
微控制器驱动(Microcontroller Drivers)
- 内部外设的驱动程序(如看门狗、通用计时器)功能
- 具有直接访问µC的函数(如核心测试)
-
存储器驱动 (Memory Drivers)
- 芯片上存储设备(例如内部Flash、内部EEPROM)和内存映射的外部内存设备(例如外部闪存)的驱动程序
-
加密驱动
- 如SHE(Secure Hardware Extension)或HSM(Hardware Secure Module)等芯片上加密设备的驱动程序
-
无线通信(Wireless Communication Drivers)
- 无线网络系统的驱动(V2X、车内无线网络系统和非车载ECU通信系统)
-
通信驱动(Communication Drivers)
- 车载ECU(如SPI)和车辆通信(如CAN)
- OSI网络分层结构的数据链路层的一部分
- SPIHandlerDriver
- SPIHandlerDriver允许并行访问一个或多个SPI总线
- 为了抽象专用于芯片选择的SPI微控制器引脚的所有特征,这些特征应由SPIHandlerDriver直接处理。这意味着这些引脚在DIO Driver中不可用。
-
I/O驱动 (I/O Drivers)
-
模拟和数字I/O的驱动程序(如ADC、PWM、DIO)
1.2 ECU抽象层(ECU Abstraction Layer)
ECU抽象层与微控制器抽象层的驱动程序接口。它还包含外部设备的驱动程序。它提供了一个API 用于访问外围设备和设备,无论其位置(µC内部/外部)以及与µC的连接(端口引脚、接口类型)
任务:
使更高的软件层独立于ECU硬件布局
特性:
实现:µC独立,依赖于ECU硬件
上层接口:独立与µC和ECU硬件
ECU抽象层(ECU Abstraction Layer)包括
- 板载设备抽象 (Onboard Devices Abstraction)
- 存储器硬件抽象 (Memory Hardware Abstraction)
- 通信硬件抽象 (Communication Hardware Abstraction)
- I/O硬件抽象 (Input/Output Hardware Abstraction)。
ECU抽象层有点类似于Android平台的AOSP 标准化的HAL层,ECU抽象层是MCAL层的接口,这一层里面有很多名为Xxx_If的模块,与MCAL层相应模块对应。实际上这一层也包含驱动程序,但是是针对外部设备的驱动,而前面提到的MCAL是针对微控制器内部外设的。
举个例子:
由于MCU的资源有限,有些时候我们需要使用外扩Flash,通常这种外扩Flash是通过SPI这种端口连接的。我们知道芯片内部自带的Flash是由MCAL里面的Fls模块负责的,那现在这个外扩Flash就自能自己实现.
1.3 服务层(Services Layer)
服务层(Services Layer)可分为系统服务(System Services)、存储器服务 (Memory Services)以及通信服务(Communication Services)三大部分。提供包括网络通信管理、存储管理、ECU模式管理和实时操作系统 (Real Time Operating System,RTOS)等服务。除了操作系统外,服务层的软件模块都是与ECU平台无关的。
服务层是基础软件的最高层,它提供了:
- 操作系统功能
- 车辆网络通信管理服务
- 内存服务(NVRAM管理)
- 诊断服务(包括UDS通信,内存错误和故障处理)
- ECU状态管理,模式管理
- 逻辑和程序时序流监控(Wdg管理)
任务:
给应用层,RTE,BSW模块提供基础服务。
特性:
实现:除了OS部分功能外,不依赖于µC和ECU
接口:µC和ECU硬件独立
注意:
对I/O信号的访问是由ECU抽象层实现的。上面提到服务层应用层,RTE提供服务比较号理解。容易忽略的是也对BSW模块提供服务,其实也很好理解,比如其他BSW模块可能不可避免的需要使用OS服务。这又涉及到前面提到过的调用关系了。总的来说大的原则是从上至下调用。但横向互相调用也是可以的。只有下面调用/通知上面这种情况,AUTOSAR使用callback机制。
1.4 复杂驱动层(Complex Drivers Layer )
如图所示,复杂驱动层从硬件直接跨越到RTE层。CDD为集成特殊功能提供了可能性。
任务:
- 那些没有在AUTOSAR里面规定的外设驱动。
- 对时序约束很高的驱动。
- 或者用于迁移集成等。
特性:
实现:可能是依赖于应用程序、µC和ECU的硬件的
上层接口:可能是依赖于应用程序、µC和ECU的硬件的
注意:
CDD虽然名字叫驱动,但它其实也可以是应用程序。例如vector的实现就是将CDD归类为SWC 与ECU硬件及MCU相关。
2、运行时环境层(Runtime Environment Layer)
RTE是为应用软件提供通信服务的。这些AUTOSAR软件组件之间/软件组件与服务之间的通信都由RTE来实现。这里说的应用软件包含AUTOSAR软件组件/传感器/执行器组件等。在RTE以上的软件架构风格由下面这种“层”的概念变为“软件组件”的风格。
任务
针对ECU进行映射以达到AUTOSAR组件完全独立/不依赖于ECU。
属性
实现:ECU和特定应用(为每个ECU单独生成)
接口:完全独立于ECU
AppL的组成
AppL中最重要的就是SWC了,而SWC与其他SWC通信需要接口,每个SWC中又由runnable组成,所以AppL主要的组成就分下面三部分:
- 应用软件组件(SWC Software Component)
- AutoSAR接口(Ports)和连接器(Connector)
- 可运行实体(Runnable Entity)
一、举个例子
汽车顶灯的控制:
车内的顶灯一般有三种模式:
- 常闭的模式
- 常开的模式
- 随车开关而开关的模式
好了,那么我们来捋一捋。
- 首先肯定是需要传感器(包括图上的和车门上的)
- 处理单元
- 执行器(图上的车顶灯)。
假如就以下图为简单逻辑而言:有左右两个车门,左右两个车灯,一个开关传感器。这里我们分配了7个SWC,将传感器、处理单元和执行器都分的很细,且这里并非由一个ECU控制。
二、SWC的通信
我们将上图的SWC整理一下,做成大家容易理解的横向一排的样式,如下:
SWC之间的通信是通过独立的一个层级进行交互,我们称其为虚拟功能总线(VFB),也就是RTE的实现。该总线是意义上的片内外通信的结合体,取了个名字叫虚拟功能总线,其实际就是分两部分:
- 在片内就是通过RTE通信。一个SWC可以理解为一个.c文件,那么c文件间怎么通信呢——全局变量。所以大家可以把ECU内部SWC的通信暂时先想象成全局变量,具体怎么实现的,在后续RTE章节中将做详述
- 在片外就通过片外总线通信(一般汽车上都是CAN Bus)
上图中有几个特殊的符号是指的AutoSAR接口
而它们之间蓝色的连接线成为连接器(Connector,也即是刚刚说的全局变量)
三、应用软件组件(SWC Software Component)SWC类型
- 原子级的SWC(Atomic SWC)
不可再拆分的SWC,其实之前我们列举的都是Atomic SWC,默认情况下说的SWC也是指ASWC。一个SWC是对应一个.c文件,这个c文件就是我们的最小单元,不可再分。
那可运行实体(runnable)不就是组成SWC的更小单元吗?确实如此,但是我们将SWC看成原子,那runnable就是其中的电子、质子和中子,它们与原子密不可分。因此将SWC看成是最小单元,runnable是其中的函数。每个SWC的功能基本都是用来实现特定的算法。
- 集合级的SWC(Composition SWC)
有不可分割的SWC,就肯定有可分割的SWC。所以AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个一个更小的Atomic SWC。就好像是一个分子由很多原子组成的概念。分子是有实际意义的,很多原子就没有实际意义(但是有些也有,比如金、银和铜等)。
化学概念 | AutoSAR概念 | C语言概念 |
---|---|---|
分子 | Composition SWC | 包含xx.c文件的文件夹 |
原子 | Atomic SWC | xx.c文件 |
电子、中子、质子等 | runnable | 函数 |
还是那个例子,我们可以将功能相近或者需要整合到一处方便观看的SWC(以后Atomic SWC都简称为SWC)利用一个compositon SWC包含起来。这样,就可以方便SWC归类,这里Composition SWC有点从功能角度去看。
于是,我们的文件映射也发生了一定的变化:方便大家对比,应该能很快明白composition SWC是啥了:
注意: 在Vector的DaVinci中其实不会生成Composition的文件夹,其实Composition只是一个概念,是用来在配置工具上方便大家归类整理,看起来更加符合功能设定
- 特殊的SWC
前面描述BSW的时候提到IO硬件抽象层(IoHwAb,BSW章节中会讲到)和复杂驱动(Cdd),在DaVinci Developer中都是可以作为SWC进行配置和加runnable等操作的。因此,我们将其算成是特殊的SWC来看待
四、AutoSAR接口(Ports)和连接器(Connector)
Ports是SWC和SWC做接口(Interface)通信使用,或者SWC通过RTE和BSW做接口(Interface)通信使用。
-
Sender Ports发送端口:提供信息
-
Receiver Ports接收端口:接收信息
-
Sender/Receiver Ports发送/接收端口:可在一个Port端口内提供和接收信息
-
Server Ports服务端口:提供服务(operations)
-
Client Ports客户端端口:使用服务(operations)
Connector指的是SwComponentType的PortPrototypes来连接建立SwComponentPrototypes之间的实际连接的SwConnector
Ports主要分为5种类型,列在下面的图中:
其中又可分类为:R-Ports、P-Ports和PR-Ports。值得注意的是,这里的PR-Ports是在AUTOSAR4.0以后定义。
或者又可以分为:**Send/Receiver(S/R)接口和Client/Server(C/S)**接口。
需型端口可以和供型端口连接。软件组件SWC1有一个需型端口(R)和一个供型端口(P),其中需型端口与SWC2的供型端口相连,它们之间的交互关系通过连线箭头表示,由SWC2的供型端口指向SWC1的需型端口。SWC3具有一个供需端口,被认为自我相连。 由于端口仅仅定义了方向,所以AUTOSAR中用端口接口 (Port Interface)来表征端口的属性
软件组件SWC1具有两个端口,其中一个引用的端口接口类型为发送者-接收者(S/R)接口,另一个引用的端口接口类型为客户端-服务器(C/S)接口。从中也可以看出,对于引用发送者-接收者接口的一组端口而言,需型端口为接收者 (Receiver),供型端口为发送者(Sender)。对于引用客户端-服务器 接口的一组端口而言,需型端口为客户(Client),供型端口为服务器(Server)。
一、S/R接口
作用: 传输数据。通过RTE传输数据,并且通过RTE管理数据的传输,避免数据出问题(例如同时调用同一数据时可能出错)
发送者-接收者接口用于数据的传递关系,发送者发送数据到一个或多个接收者。该类型接口中定义了一系列的数据元素(Data Element,DE),这些数据元素之间是相互独立的。如下图所示,该发送者-接收者接口SR_Interface中定义了两个数据元素,名字分别为DE_1与DE_2,并且需要为每个数据元素赋予相应的数据类型
-
一个接口可以包含多个数据,类似于通过结构体传输
-
可以传输基础数据类型(int,float等)和复杂数据类型(record,array等)
-
通信方式: 1:n 或者 n:1
-
如果一个data element要通过总线传输, 那么它必须与一个signal对应起来
-
通信方式 - 不使用队列
-
直接访问
适用于实时性要求高的数据,直接访问
- RTE直接访问数据地址
- 初始值即为默认值
-
使用缓存
适用于有一致性要求的数据组
- 在进入runnable之前RTE为数据建立副本
- 在runnable运行结束之后RTE把副本数据拷贝到实际数据地址
- 在runnable运行过程中只操作副本,实际数据不会改变
-
-
通信方式-使用队列
“event” (isQueued=True),”event“ 查询接收或等待接收,RTE从队列中读取数据,等待接收有超时处理。
- “查询接收” 或 “等待接收”
- RTE从队列中读取数据
- “等待接收” 有超时处理
//Read表示是一个RPort、同样也会有一个PPort,Rte_Write_xxx_xxx() Rte_Read_<Port>_<Data>() //这里Data是指的传输的数据类型,比如DoorOpen就是: SWC_DoorOpen = Rte_Read_Door_DoorOpen();
-
对于S/R通信模式,分为显示(Explicit)和隐式(Implicit)两种模式。当多个运行实体需要读取相同的数据时,若能在运行实体运行之前先把数据读到缓存中,在运行实体运行结束后再把数据写出去,则可以改善运行效率,这就是隐式模式。
二、C/S接口
作用: 提供操作。就是Server提供函数供Client调用
客户端-服务器接口用于操作(Operation,OP),即函数调用关系,服务器是操作的提供者,多个客户端可以调用同一个操作,但同一个客户端不能调用多个操作。客户端-服务器接口定义了一系列操作 (Operation),即函数,它(们)由引用该接口的供型端口所在的软件组(服务器)件来实现,并提供给引用该接口的需型端口所在的软件组件调用。如下图所示,该客户端-服务器接口CS_Interface中定义了两个操作OP_1 与OP_2,对于每一个操作需要定义相关参数及其方向,即函数的形参,需要注意的是,每个端口只能引用一种接口类型,并且引用相同端口接口类型的端口才可以进行交互。
-
可以同步和异步。同步就是直接调用,相当于函数直接插入上下文运行;异步的话需要等待,相当于让函数在另一个线程中运行,运行完了再返回,原上下文依然运行
-
一个接口可以提供多个操作,就是一个接口可以包含很多函数
-
ECU内部和跨ECU都可以调用,跨ECU也是通过外部总线
-
通信方式: 1:1 或 n:1 (与S/R对应)
Rte_Call_<Port>_<Function>() //这里的Call是指的调用的函数,比如调用State()就是 Rte_Call_Door_State();
Runnable entities (简称Runnables)
Runnable就是SWC中的函数,而在AutoSAR架构在被DaVinci软件生成的时候,Runnable是空函数,需要手动添加代码来实现其实际的功能。 Runnable可以被触发,比如被定时器触发、被操作调用触发或者被接受数据触发等。
这里的函数就是我们前面提到的Send接口,发送的就是DoorOpen这个数据,由RTE进行管理。然而由于这里的这个SWCn.c文件中并未包含BSW中的.h文件,通过这个方式将AppL和BSW隔离开。
Runnable是需要OS中的Task做载体的。runnable是函数,但是c文件中光有一个函数那没用,必须要调用该函数才能起作用,就必须要有操作系统中的任务来执行这个函数。类比于Linux中的线程就是Task,这里的Runnable更多的像内核中的threadfn,或者说是Java中Runnable,需要载体,另外在AppL中没有Task这个概念。
举个例子:
从传感器到应用程序的过程:
代码什么样?
1.Runnable Entity(可运行实体 )
Runnable是主要用来封装SWC中的功能的。是由C语言函数实现的。一个SWC中需要至少要包含一个Runnable。简单举个例子:
CheckStatusRunnable()
{
/* 判断是否完成 */
if(!finished)
{
/* 如果未完成,就返回不OK */
return E_NOT_OK;
}
return E_OK; //如果完成,返回OK
}
Runnable 简单分为两类:
Category 1:No WaitPoint (在有限的时间内运行至结束,不能等待)。
Category 2:With a WaitPoint at least.(至少包含一个WaitPoint,运行过程中可以等待)
怎么在Runnable中设置WaitPoint?通过直接调用对应RTE API实现。
Rte_Receive() : 用于等待接收数据;
Rte_Feedback() : 用于等待数据发送完成;
- Rte_Invalidate_
_
(),表示sensor发送的数据无效,接收方feedback对无效值的处理
Rte_SwitchAck() : 用于等待模式切换操作;
Rte_Result() : 用于等待异步服务器调用的结果。
2. Task(任务)
是操作系统(OS)管理的最小可调度单元。操作系统决定何时在ECU的CPU上运行哪个任务。在OS启动后,所有的Task都处于默认状态:挂起状态(Suspended)。Task被激活(Activated)后进入准备状态(Ready)。Ready的task将会按照优先级(Priority)的高低依次运行(Running)。
在RTE的代码中:
TASK(TSK_Task1)
{
...
Runnable1();
Runnable2();
CheckStatusRunnable();
Runnable3();
...
}
}
TASK(TSK_Task2)
{
...
}
当TSK_Task1被激活并运行后,map到它的Runnable也会按map的顺序依次执行。
3.运行实体的RTE事件(RTE Event)
每个运行实体都会被赋予一个RTE事件(Trigger Event),即RTE 事件(RTE Event),这个事件可以引发这个运行实体的执行。对于 RTE事件可以细分为很多种类,较常用的RTE事件有以下几种:
- 周期性(Periodic)事件,即Timing Event;
- 数据接收事件(Data-received Event);
- 客户端调用服务器事件(Server-call Event)。
一、什么是RTE
RTE的作用有点像Binder的ServiceManger,或者说DNS(就是上个世界那种要先打电话到接线员那里,然后通过接线员转接电话线到目的地),其作用就是将一个SWC的信息通过RTE连接到其他SWC或者BSW上。且RTE具有管理这些信息的功能,比如接收的SWC正忙(您所拨打的用户正忙),那么RTE负责让发送信息的SWC等待,或者做其他处理;RTE还能触发SWC,就像是这时接收的SWC在睡觉,这时发送的SWC发信息来了,那么RTE就要把接收的SWC叫醒起床。一句话概括就是RTE提供了SWC的运行环境。
二、RTE的作用
- 提供 跨ECU / ECU内部 的通信管理,通过COM。
- 提供对runnable的管理功能(触发、唤醒等,简单说就是runnable需要映射到Task上运行嘛,而这个映射就是通过RTE具体实现的)
- 保证数据一致性(e.g. exclusive area)
- 支持简单数据及复杂数据(records)
- 在Vector的工具链中,RTE是自动生成的
下面这张图将其再做细化,就能很清楚的看出其关联关系了。这里的RTE就是统一的管理,具体那些连接时怎么连的,我们是不需要在RTE中关心的(因为AppL中配好,RTE就自动生成嘛)。
三、RTE主要功能点
- 通过RTE给runnable提供触发事件。 之前说过了runnable是可以被触发的,就是需要通过RTE来实现这个触发和调用runnable
- 通过RTE给runnable提供所需资源。 就是之前说的接口通信,将runnable需要的一些资源通过接口传输给它
- 将BSW和SWC做隔绝。 因此OS和runnables也被隔绝了,runnable的运行条件由RTE提供,不能由OS直接提供
FUNC(Std_ReturnType, RTE_CODE) Rte_Start(void)
{
... ...
/* activate the tasks */
(void)ActivateTask(App_Task);
(void)ActivateTask(Task10ms);
(void)ActivateTask(Task1ms);
(void)ActivateTask(Task20ms);
... ...
//设置定时alarm,1ms, 2ms, 10ms ... ...
(void)SetRelAlarm(Rte_Al_TE_Task1ms_0_1ms, RTE_MSEC_SystemTimer(0) + (TickType)1, RTE_MSEC_SystemTimer(1));
(void)SetRelAlarm(Rte_Al_TE_Task2ms_0_2ms, RTE_MSEC_SystemTimer(0) + (TickType)1, RTE_MSEC_SystemTimer(2));
(void)SetRelAlarm(Rte_Al_TE_App_AppRunnable, RTE_MSEC_SystemTimer(0) + (TickType)1, RTE_MSEC_SystemTimer(10));
... ...
}
//RTE controlled tasks
//App_Task
TASK(App_Task)
{
EventMaskType ev;
for(;;)
{
(void)WaitEvent(Rte_Ev_Run_DemoApp_DemoRunnable);
(void)GetEvent(App_Task, &ev);
(void)ClearEvent(ev & (Rte_Ev_Run_DemoApp_DemoRunnable));
if ((ev & Rte_Ev_Run_DemoApp_DemoRunnable) != (EventMaskType)0)
{
/* call runnable */
AppRunnable();
}
}
}
TASK(Task10ms)
{
EventMaskType ev;
for(;;)
{
(void)WaitEvent(Rte_Ev_Cyclic_Task10ms_0_10ms);
(void)GetEvent(Task10ms, &ev);
(void)ClearEvent(ev & (Rte_Ev_Cyclic_Task10ms_0_10ms));
if ((ev & Rte_Ev_Cyclic_Task10ms_0_10ms) != (EventMaskType)0)
{
//10ms swc runnable
AppSiganlRunnable();
AppConfigRunnable();
AppInputRunnable();
... ...
}
}
Runnables的触发条件
Abbreviation | Name | 触发条件 |
---|---|---|
T | TimingEvent | 定时器事件:给一个周期定时器,时间到了就触发 |
BG | BackgroundEvent | |
DR | DataReceivedEvent (S/R Communication only) | 接收数据事件(S/R):Receiver Port 一旦收到数据,就触发 |
DRE | DataReceiveErrorEvent (S/R Communication only) | 接收数据错误事件(S/R) |
DSC | DataSendCompletedEvent(explicit S/R Communication only) | 数据发送完成事件(S/R):Send Port 发送完成,就触发 |
DWC | DataWriteCompletedEvent (implicit S/R Communication only) | 数据写入完成事件(S/R):Send Port 发送完成,就触发 |
OI | OperationInvokedEvent (C/S Communication only) | 操作调用事件(C/S):当调用到了该函数的时候 |
ASCR | AsynchronousServerCallReturnsEvent(C/S communication only) | 异步服务返回事件(C/S):之前说过C/S可以在异步下运行,就是说当我调用一个Server函数,但是我是异步调用的。那么该被掉函数作为一个线程和当前的运行程序并行运行,当被调函数运行结束返回(Return)的时候,这时触发异步服务返回事件 |
MS | SwcModeSwitchEvent | 模式切换事件 |
MSA | ModeSwitchedAckEvent | 模式切换事件 |
MME | SwcModeManagerErrorEvent | |
ETO | ExternalTriggerOccurredEvent | |
ITO | InternalTriggerOccurredEvent | |
I | InitEvent | 初始化事件:初始化自动触发 |
THE | TransformerHardErrorEvent |
ECU之间通信:
跨ECU的数据传输,在runnable中使用Rte_Write__()这样的函数后,会需要走runnable (ECU1) ->RTE (ECU1) ->BSW (ECU1) ->外部总线->BSW (ECU2) ->RTE (ECU2) ->runnable (ECU2) COM传输的接口函数:
保证数据一致性
同一个SWC内的、运行在不同Task上的runnable之间的通信.
不同SWC之间的通信,无论是ECU内部还是ECU之间,都不会遇到这个问题,因为RTE会负责保证数据一致性.
- 顺序调度策略
- 中断屏蔽策略
- 资源锁等
- 数据备份
假如有两个任务,分别为Task A和Task B,其中Task A的优先级高于Task B。Task A每次访问均使X加2,Task B每次访问均使X加1。因此这两个任务中都要执行(step1)、修改(step2)、写(step3)三步操作。如果没有原子操作,则可能会发现以下情况,如图所示:
- 假定X=5;
- Task B执行读取(step1) X=5,并临时存储(堆栈或MCU寄存器中);
- Task A 优先级高于Task B, Task B被打断;
- Task A执行读,修改,写操作,将X=7写回内存中;
- Task A结束,继续执行Task B;
- Task B将之前临时存储的X(操作2)取出,并加1,将X=6写回内存。
显然,开发人员期待的 结果是X = 8,但是最终的确实X = 6,Task A的运算失效。
解决办法:
-
专用区域(Exclusive Areas )
-
Entire block or RTE protected
-
Rte_Enter_
() -
Rte_Exit_
() Rte_Enter_<name>(); //需要保护的代码 .... Rte_Exit_<name>();
-
-
内部变量(Inter-runnable variables)
- 运行实体间变量(Inter Runnable Variable,IRV)即两个运行实体之间交互的变量。
- Rte_IrvWrite_
_
AUTOSAR的接口
AUTOSAR中定义了三种接口,AUTOSAR Interface
, Standardized Interface
以及 Standardized AUTOSAR Inerface
. 要了解这三种接口,需要首先了解什么是"Standardized"的Interface,以及什么是"AUTOSAR"的Interface.
Standardaized 表示的是,这个接口是被事先标准化定义好的, 需要注意的是这里的"标准化定义",指得就是被AUTOSAR这个标准所定义。用户在使用这个接口的时候,不可以改变接口的内容。所谓"接口",其实就是一个API函数. AUTOSAR标准中的软件模块被事先定义好,需要向其它模块提供哪些API函数, 这些API函数的输入输出变量的个数,类型以及返回值的类型都会被事先定义好,不能改变。在开发时需要做的,就是开发API中的内容。
AUTOSAR 的接口指的RTE提供的接口。RTE向所有的SWC,以及IoHwAb和Complex Drivers模块,提供AUTOSAR 接口,也就是说,这些模块都会连接在RTE上面。当某两个这类模块之间互相收发数据或者调用内部函数时,RTE会帮助它们来做这些。
理解了Standardized Interface 和 AUTOSAR Interface, 那么 Standardized AUTOSAR Interface 就容易理解了。指的是,被AUTOSAR标准提前定义好的,并且是由RTE提供的接口。
下面这个表格是关于这三个接口的总结:
是否被AUTOSAR标准提前定义好? | 是否属于RTE提供的接口? | 模块是否连接在RTE上? |
---|---|---|
Standardized Interface | 是 | 否,模块之间的API调用不需要通过RTE的帮助 |
AUTOSAR Interface | 否,可以任意改变 | 是 |
Standardized AUTOSAR Interface | 是 | 是 |
OS和COM是唯一的两个标准接口允许直接和RTE相连的。因为RTE的很多功能是需要基于这两个模块来实现的。
还是回到之前的案例,如下图
上图将所有的接口以及其分布的位置都详细的标识了出来,还是用的原来的那张ECU的图添加,结合上面的描述和上图:
AutoSAR接口
- 一句话概括: 之前说的S/R和C/S接口就是AutoSAR接口
- 特征: 接口函数名可变,例如之前说过的
Std_ReturnType Rte_Read_<port>_<data> (<DataType> *data)
这中形式的S/R函数,其中的<port> <data>
就是用户自己配置的名字,因此,这些接口的函数名都是可以改变的,但大体的形式是不变的。 - 位置: SWC<>RTE、RTE<>CDD、RTE<>ECU AB(这里提一句,ECU AB之前没有讲到,其实很多的传感器、执行器都放在这里,是ECU的抽象,也是可以看作是SWC的,IoHwAb就在这里面)。说明白一点,就是只要能看成是SWC处理的,就是AutoSAR接口
标准接口
- 一句话概括: 就是AutoSAR规定的C语言API
- 特征: 接口函数名是固定不变的,是AutoSAR规定好的。比如:
Com_SendSignal() WaitEvent()
这类都是API函数名,可以有上层调用,但是一般是使用工具配置生成的,做上层应用的一般是不用关心其具体实现的 - 位置: 第一张图中棕色的就是标准接口,说白了就是对函数API的调用。
需要特殊说明一点的是:下图中两个红圈中的箭头,OS和COM是唯一的两个标准接口允许直接和RTE相连的。因为RTE的很多功能是需要基于这两个模块来实现的
标准AutoSAR接口
- 一句话概括: 就是AutoSAR接口,不过名称是由AutoSAR官方规定不能修改
- 特征: 就是标准接口和AutoSAR接口的特征它都有一部分。首先是和AutoSAR接口一样,提供的是C/S、S/R接口;然后又和标准接口一样,函数名是不可变的。说白了就是官方规定好的C/S、S/R接口,咱们就当成是AutoSAR接口就行了,函数名字什么不用管它
- 位置: RTE<>Services,就这么一个地方
AUTOSAR方法论 (methodology)
一、ECUEX简介
什么是ECUEX文件呢?开始提到ECU提取文件(全称是ECU Extract of System Description),简单说就是OEM和TIER1交接的文件。该文件由OEM设计整车时生成,并根据不同的ECU提取出对应的ECUEX文件交接给TIER1,TIER1拿到文件后便可以根据上面的信息来设计和开发ECU。ECUEX文件是arxml文件,但是如果只做通信矩阵这些内容,DBC(Database Can)这类文件也可以胜任(不过随着时代的进步,以后还是arxml)。
要可以包含以下内容(也可以只包含其中一部分):
- 通信矩阵: 比如CAN总线包含的信息,像CAN ID号、signals、扩展帧还是普通帧和波特率之类的信息
- SWCs、Ports等: SWC以及内部的runnable都可以在ECUEX文件中给出;还包含其Ports;还有SWC之间的连接关系(Connecters)
- 数据映射(Data Mapping): 将总线的信号(Network Signals)映射到SWCs中
ECUEX文件可以很简单(简单到只有通信矩阵),也可以很复杂(复杂到连一部分代码都要自己写)。
某些OEM和TIER1的分工,不绝对,未来OEM会负责更多的事务:
| 名称 | 解释 | OEM | TIER1 | | ------------------ | -------------------------------------------------------- | ------ | ------ | | Service Components | 为SWCs提供实际使用的BSW服务的接口(需要在BSW中配置过了) | 不负责 | 负责 | | Service Mapping | 连接SWCs和Service Components | 不负责 | 负责 | | Atomics | 功能的具体实现 | 不负责 | 负责 | | Compositions | 每个SWC上需要哪些Port、连接器之类的 | 不负责 | 负责 | | Data Mapping | 连接Network Signals到SWCs中 | 不负责 | 负责 | | ECU Composition | 就是需要哪些SWC | 不负责 | 负责 | | Communication | 就是上面说的通信矩阵 | 负责 | 不负责 |
二、AutoSAR开发流程
AUTOSAR文档如何阅读
1、文档查询
从autosar.org 官网可以下载和查询文档:
AUTOSAR官网
选中classic可以看到有的版本,通过search按钮可以查询对应的文档。
基本上一年一个版本,目前已经release了R22版本,22年11月份。
由于官网的维护和改版,和之前的版本有了较大的变化,没有办法按照功能组去下载对应的文档了。
2、文档类型
文档目前官网处于R22发布重新维护中,当前文档服务无法提供,文档也无法下载,需要下载的我这边可以提供。
AUTOSAR文档目录
可以看到从文件命名的格式来看,都是AUTOSAR开头,以AUTOSAR_XXX_YYY 等结尾,XXX主要分为如下几个大类:
简写 | 详细含义 | 解释 |
---|---|---|
EXP | Explaination | 解释说明性的文档,优先阅读 |
EXP_FCDesign | FUNCTIONAL CLUSTER DESIGN | 示例代码的设计文档,帮助更好地理解 FC 模块 |
RS | Requirement Specification | 详细描述需求规范 |
SRS | Softeware Requirement Specification | 所有软件模块需求规范 |
SWS | Softeware Specification | 软件模块设计和实现的规范 |
TPS | Template Specification | 模板详细介绍 |
TR | Technical Report | 技术规范详细介绍 |
MOD | Model | 建模 |
MMOD | Meta Model | 元模型 |
文档下载列表中带有
GENERAL
的为 High-level 的一般性文档,应该优先阅读。
下面详细解释一下各项简写的意思:
-
**MMOD:**Meta Model,介绍AUTOSAR的元模型
元模型的本质是沟通工具,是模型的模型
举个例子:一个具体的流程图,比如应用启动流程、消息发送流程等都是模型,而让不同的人看到模型都能理解其中的含义就是元模型的功劳了,具体来说就是方框代表什么、菱形代表什么,更直白点就是你画图的时候工具栏上的工具条。
没错,我们常说的UML,就是统一建模语言,AUTOSAR元模型是UML2.0模型(2.0基于1.x,对结构类、精确的接口和端口、拓展性、交互片断和操作符以及基于时间建模能力做了增强)。
使用UML定义的AUTOSAR Meta-model没有太大必要单独去看,因为所有相关信息和图表都会在AUTOSAR Template Specification里有。下图是基于EA打开的
AUTOSAR_MMOD_MetaModel.zip
,可以看到各种UML图AUTOSAR_MMOD_MetaModel
-
**MOD:**model,介绍基于元模型建模的原理,一般指的是如下的arxml,该标准介绍了如何将AUTOSAR模型序列化为AUTOSAR XML描述的规则,为AUTOSAR工具之间的互操作性提供支持。
- AUTOSAR_MOD_GeneralDefinitions.zip
- AUTOSAR_MOD_MiscSupport.zip
- AUTOSAR_MOD_GeneralBlueprints.zip
- AUTOSAR_MOD_BSWUMLModel.zip
- AUTOSAR_MOD_ECUConfigurationParameters.zip
- AUTOSAR_MOD_AdaptivePlatformGeneralBlueprints.zip
例如所有安全事件定义集中在AUTOSAR_MOD_GeneralDefinition_SecurityEvents.arxml文件中
AUTOSAR_MOD_GeneralDefinitions.zip
-
**RS:**Requirement Specification,需求规范,层次比SRS要高,比如AUTOSAR_RS_Main.pdf中对架构、基础软件、方法论等进行了明确的规范(如下图所示)。
文档需求规范 需求规范示例 -
**TR:**Technical Report,技术报告,比如AUTOSAR_TR_PredefinedNames.pdf用于对不同的缩写进行了说明。
-
**TPS:**Template Specification,模板规范,用于介绍模块的处理架构、层次关系等,比如下图对诊断事件的层次结构进行的规范(如下图所示)。
-
**EXP:**Explaination,说明文档,对其他文档中提到的内容进行解释说明。
- 例如AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf,这是非常非常重要的一部分,大多的基础概念来自于这个文档。
-
**SRS:**Software Requirement Specification,软件需求规范,用于对各个软件模块功能需求进行说明。例如AUTOSAR_SRS_OS,定义了OS的各类需求,包括需求来源
图示:AUTOSAR_SRS_OS.pdf SRS需求定义
-
SWS:Software Specification,软件规范,详细介绍模块设计和实现原理,包括模块功能的详细介绍,API接口介绍,数据类型介绍,软件的流程图(如下图所示),一般软件开发,重点我们看这个文档
图示:AUTOSAR_SWS_OS.pdf 软件设计定义
如何阅读?
对于大部分基于工具的AutoSAR工作者来说,只需要看SWS即可;一般来说,对于工具开发商而言,其也会提供一套参考文档(比如Vector公司提供的文档位于TechnicalReferences下)。对于AutoSAR工具的开发者而言,或者一些需要手写AutoSAR代码的,就需要按需求深入理解文档了。
为什么不建议通读?
闲来无聊,统计了一下文档的页数:
# !/usr/bin/env python3
import argparse
from glob import glob
from os.path import exists, join
from PyPDF2 import PdfFileReader
def get_total_pages(folder):
if not exists(folder):
return "文件目录: {} 不存在".format(folder)
pdf_list = glob(join(folder, "*.pdf"))
pages = []
for pdf in pdf_list:
reader = PdfFileReader(pdf)
num_page = reader.getNumPages()
pages.append(num_page)
return [sum(pages), len(pdf_list)]
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('folder', type=str, help='输入文件路径')
args = parser.parse_args()
[total_pages, files] = get_total_pages(args.folder)
print("'%s'\n 文件数: %d 总页数:%d " % (args.folder, files, total_pages))
类型 | 版本 | 文件数 | 总页数 |
---|---|---|---|
classic经典平台 | 22-11 | 210 | 21913 |
foundation基础 | 22-11 | 49 | 2876 |
adaptive自适应平台 | 22-11 | 39 | 2511 |
298 | 27300 |
按照A4纸每页0.104mm的厚度计算,27300页单面打印出来2.8米高,
三、AUTOSAR文档阅读建议
CP文档的阅读:
一般性文档
-
AUTOSAR_EXP_VFB 虚拟总线,建议从这个了解SWC开发
-
AUTOSAR_EXP_LayeredSoftwareArchitecture 整体 Overview,建议从这份文档开始学习
详细了解文档:
- AUTOSAR_SWS_OS autosar OS的描述
- AUTOSAR_SWS_RTE 运行时环境
- AUTOSAR_SWS_COM 通讯模块
- AUTOSAR_SWS_BSWGeneral BSW模块的规范
- AUTOSAR_TR_Methodology CP 方法论
AP 部分
一般性文档
- AUTOSAR_EXP_PlatformDesign:整体 Overview,建议从这份文档开始学习
- AUTOSAR_EXP_SWArchitecture:软件架构
- AUTOSAR_EXP_AdaptivePlatformInterfacesGuidelines:接口使用指引
- AUTOSAR_EXP_ARAComAPI:通信管理API
有些 High-level 文档可以先快速浏览,用到的时候再细看:
- AUTOSAR_TR_FunctionalClusterShortnames:各个 FC 的缩写
- AUTOSAR_RS_General:编码风格指南
- AUTOSAR_RS_CPP14Guidelines:MISRA C++ 编码规范,已废弃,之后交给 MISRA 维护,不再由 AUTOSAR 维护
- AUTOSAR_TPS_ManifestSpecification:Manifest 规范
- AUTOSAR_TR_AdaptiveMethodology:AP方法论
- AUTOSAR_RS_OperatingSystemInterface:操作系统接口
- AUTOSAR_SWS_AdaptiveCore
如果你不知道从哪份文档开始阅读,我建议可以从这份开始 AUTOSAR_EXP_PlatformDesign.pdf
AUTOSAR的Hello World
Comming soon.....~~
AUTOSAR的Hello World
Comming soon.....~~
1、概述 DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
Abbreviation/缩写 | Description/说明 | 翻译 |
---|---|---|
BRS | bit rate switch | 比特率开关 |
BS | BlockSize | 块大小 |
CAN | controller area network | 控制器局域网 |
CAN FD | controller area network with flexible data rate and larger payload as defined in ISO 11898-1 | ISO 11898-1中定义的具有灵活数据速率和更大有效负载的控制器局域网 |
CLASSICAL CAN | controller area network with static data rate and up to 8 data bytes as defined in ISO 11898-1 | ISO 11898-1中定义的具有静态数据速率和最多8个数据字节的控制器局域网 |
CF | ConsecutiveFrame | 连续帧 |
CTS | continue to send | 继续发送 |
DA | destination address | 目的地址 |
DLC | CAN frame data link layer data length code | CAN帧数据链路层数据长度码 |
DoCAN | diagnostic communication over controller area network | 控制器区域网上的诊断通信 |
ECM | Engine Control Module | 发动机控制模块 |
ECU | Electronic Control Unit | 电子控制单元 |
FC | FlowControl | 流控制 |
FF | FirstFrame | 首帧 |
FF_DL | FirstFrame data length in bytes | 首帧数据长度(以字节为单位) |
FMI | failure mode indicator | 故障模式指示灯 |
FS | FlowStatus | 流状态 |
ID | identifier | 标识符 |
Mtype | message type | 消息类型 |
N/A | not applicable | 不适用 |
NA | network address | 网络地址 |
N_AE | network address extension | 网络地址扩展 |
N_AI | network address information | 网络地址信息 |
N_Ar | network layer timing parameter Ar | 网络层定时参数Ar |
N_As | network layer timing parameter As | 网络层定时参数As |
N_Br | network layer timing parameter Br | 网络层定时参数Br |
N_Bs | network layer timing parameter Bs | 网络层定时参数Bs |
N_ChangeParameter | network layer service name | 网络层服务名称 |
N_Cr | network layer timing parameter Cr | 网络层定时参数Cr |
N_Cs | network layer timing parameter Cs | 网络层定时参数Cs |
N_Data | network data | 网络数据 |
N_PCI | network protocol control information | 网络协议控制信息 |
N_PCItype | network protocol control information type | 网络协议控制信息类型 |
N_PDU | network protocol data unit | 网络协议数据单元 |
N_SA | network source address | 网络源地址 |
N_SDU | network service data unit | 网络服务数据单元 |
N_TA | network target address | 网络目标地址 |
SOM | start of message | 消息开始 |
SP | nominal sample point | 标称采样点 |
SPN | suspect parameter number | 可疑参数编号 |
STmin | Separation Time minimum | 最小分段时间 |
STRT | serviceToRespondTo | 服务回应 |
TA | target address | 目标地址 |
TCM | transmission control module | 变速箱控制模块 |
UDS | unified diagnostic services | 统一诊断服务 |
USDT | unacknowledged segmented data transfer | 未经确认的分段数据传输 |
UUDT | unacknowledged unsegmented data transfer | 未经确认的未分段数据传输 |
WWH-OBD | world-wide harmonized on-board diagnostics | 全球统一的车载诊断 |
:
1、概述 DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
1、概述 DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
1、概述 DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
1、概述 DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
MISRA C
一、简介
MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性。针对C++语言也有对应的标准MISRA C++。本文主要关注C语言部分。MISRA C一开始主要是针对汽车产业,不过其他产业也逐渐开始使用MISRA C:包括航天、电信、国防、医疗设备、铁路等领域中都已有厂商使用MISRA C。
MISRA C的第一版《Guidelines for the use of the C language in vehicle based software》是在1998年发行,一般称为MISRA-C:1998.。MISRA-C:1998有127项规则,规则从1号编号到127号,其中有93项是必需要求,其余的34项是推荐使用的规则。
在2004年时发行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》(或称作MISRA-C:2004),其中有许多重要建议事项的变更,其规则也重新编号。MISRA-C:2004有141项规则,其中121项是必需要求,其余的20项是推荐使用的规则。规则分为21类,从“开发环境”到“运行期错误”。
2012年发布第三版,为当前最新有效的C语言规范版本,称为MISRAC:2012。
Misra C不能100%保证程序不出问题,但是能尽可能的预防,总结一下,基本上使用Misra C具有以下五个维度的优势:
- 提升可靠性
- 提升可读性
- 提升可移植性
- 提升可维护性
- 提升安全性
二、具体规则(翻译)
2.1 一个标准C环境
- 必需。程序应不包含违反标准C语法和限制的内容,也不应超出执行的翻译限制。
- 建议。不应使用语言扩展。
- 必需。不应该出现未定义或是临界的未指定行为。
2.2 不使用的代码
- 必需。不应包含未执行的代码。
- 必需。不应该有死代码。
- 建议。不应包含被声明但未使用的类型。
- 建议。不应包含未使用的标签声明。
- 建议。不应包含未使用的宏定义。
- 建议。函数中不应包含未使用的标记。
- 建议。不应有未使用的函数参数。
2.3 注释
- 必需。不允许嵌套注释。
- 必需。不允许在//注释中进行行拼接。
2.4 字符集
- 必需。八进制和十六进制转义字符序列应被终止。
- 建议。三字母词不应使用。
2.5 标识符
- 必需。外部标识符应区分开。
- 必需。标识符声明在同一作用域且位域应被区分。
- 必需。声明于内部作用域的标识符不应隐藏外部作用域的标识符。
- 必需。宏标识符应被区分。
- 必需。标识符要区别于宏名。
- 必需。Typedef名应是独一无二的标识符。
- 必需。标签应是独一无二的标识符。
- 必需。定义有外部链接的对象或函数的标识符应是独一无二的。
- 建议。定义有内部链接的对象或函数的标识符应是独一无二的。
2.6 类型
-
必需。位域只能被定义为一个合适的类型。
C90:无符号整型和有符号整型。C99:除上述两个以外还有布尔类型。
-
必需。单比特命名的位域不应是有符号类型。
2.7 常量
- 必需。不要使用八进制常量和八进制的转义字符串;
- 必需。所有以无符号类型表示的整型常量都应加上u或U后缀。
- 必需。小写字母l不应用于文字后缀。
- 必需。除非对象类型是指向字符常量的指针,否则字符串不应赋给对象。
2.8声明与定义
- 必需。类型应被显式声明。
- 必需。函数应以原型形式命名参数。
- 必需。所有对象和函数的声明需要使用完全相同的名字和参数。
- 必需。当定义有外部链接的对象或函数时,兼容声明是可见的。
- 必需。外部变量或函数应被在仅一个文件内被声明过。
- 必需。有外部链接的标识符应有一个确切的外部定义。
- 建议。若函数和对象仅被一个单元引用,最好不定义外部链接。
- 必需。静态存储类说明符应在所有具有内部链接的对象和函数的声明中使用。
- 建议。如果一个对象的标识符仅在一个函数内出现,该对象应被定义在一个块域中。
- 必需。内联函数定义时应有静态存储类。
- 建议。当有外部链接的数组被定义,它的大小应明确表示。
- 必需。枚举列表内的枚举值应独一无二。
- 建议。可能的话指针最好指向一个const类型的变量。
- 必需。restrict限定词不应使用。
2.9 初始化
1、强制。自动变量在使用前应该被赋值。
2、必需。结构和和联合体的初始化应在大括号内完成。
3、必需。数组不应被部分初始化。
4、必需。一个对象的元素不应被多次初始化。
5、必需。若一个数组对象被指定初始化,那么数组大小应明确表示。
2.10 基本数据类型
- 必需。操作数不应是不合适的数据类型。
- 必需。表达式字符之间不应使用加减法。
- 必需。不应将表达式的值赋给不同类型或更窄的类型。
- 必需。一个运算符的两个操作数应是相同类型。
- 建议。表达式的值不应被转换成一个不合适的类型。
- 必需。复合表达式的值不应赋给一个有更宽类型的对象。
- 必需。若复合表达式参与数学运算,那么另一个操作数不应是更宽的基本类型。
- 必需。复合表达式的值不应被转换为不同的基本类型分类或更宽的基本类型。
2.11指针类型转换
- 必需。不应在函数指针和其他类型间进行转换。例外:空指针可被转换为函数指针。函数指针可被转换为void类型。函数可以被隐式转换为该函数类型的指针。
- 必需。指向不完全类型的指针与其他类型间的转换不应出现。
- 必需。不同类型指针间不应转换。
- 建议。不应将指针转换为整形变量。
- 建议。不应直接将void类型指针转换为指向对象的指针。
- 必需。算数类型和void类型指针不应转换。
- 必需。指向对象的指针和一个非整型算数类型不应转换。
- 必需。指针指向的const和volatile修饰的变量不应被删除。
2.12 表达式
- 建议。表达式中的运算符优先级应明确。
- 必需。移位运算符的右手操作数应该小于左手操作数的基本类型的位宽。
- 建议。不应使用逗号运算符。
- 建议。常量表达式的计算不应导致无符号整数的回绕。
2.13 副作用
- 必需。初始化列表不应包含持续副作用。
- 必需。表达式的值和他的持续副作用应在允许的计算顺序下保持相同。
- 建议。包含自增或自减的完整表达式应无其他除自增自减外的潜在副作用。
- 建议。不应使用赋值运算的结果。
- 必需。逻辑与和逻辑或的右手操作数不应包含持续副作用。
- 强制。sizeof运算符的操作数不应包含任何有潜在副作用的表达式。
2.14 控制语句表达式
- 必需。循环计数器不应有浮点型数据。
- 必需。for循环应完整。
- 必需。控制语句不应一成不变。
- 必需。if语句和迭代表达式应有布尔类型。
2.15 控制流
- 建议。不应该使用goto语句。
- 必需。goto语句应跳跃至同一函数后定义的语句处。
- 必需。被goto语句引用的任何标志都应在同一块内定义或任何包含goto语句的块。
- 建议。不应有多个break或goto语句来结束迭代语句。
- 建议。一个函数在其结尾应该有单一的退出点,即一个函数最多有一个return语句。
- 必需。迭代语句和选择语句的主体应是复合语句。
- 必需。if elseif语句应由一个else语句结束。
2.16 Switch语句
- 必需。所有switch语句都要是完整的。
- 必需。switch标签应仅用于最紧密封闭的复合语句作为switch语句的主体时。
- 必需。每个switch分支都要有一个break语句。
- 必需。每个switch语句都要有一个default标签。
- 必需。default标签应出现在switch语句的第一个或最后一个标签处。
- 必需。每个switch语句都要至少包含两个分支。
- 必需。switch表达式不应有布尔类型。
2.17 函数
- 必需。头文件<stdarg.h>内的功能不可使用。
- 必需。函数不能调用自身,不管是直接或者间接的,即不允许递归调用;
- 必需。函数应被明确定义。
- 必需。所有函数退出位置都应有相应的返回语句,除了返回值为void类型的函数。
- 建议。函数参数中若有数组,在调用函数的时候数组大小应与定义时的数组大小相同。
- 强制。定义数组时不应在[]中包含static修饰的变量。
- 必需。非空返回值的函数的返回值应被使用。
- 建议。函数参数不应被修改。
2.18 指针和数组
- 必需。数组的索引应该是指针数学运算中唯一可允许的方式。
- 必需。只有基类型相同的指针间才可以相减。
- 必需。除非指针指向同一个对象,否则不应使用关系运算符进行比较。
- 建议。不要使用+、+=和-=操作符来应用于指针类型表达式。
- 建议。不要定义两级以上的指针。
- 必需。具有自动存储功能的对象的地址不得复制到第一个对象停止存在后仍然存在的另一个对象。
- 必需。数组定义时必需指定大小。
- 必需。变长数组不应使用。
2.19 重叠存储
- 强制。一个对象不得分配或复制到一个重叠的对象。
- 建议。union关键字不应被使用。
2.20 预处理指令
- 建议。#include指令前应只存在预处理器指令或注释。
- 必需。头文件名中不应包含‘,’和注释字符。
- 必需。#include后应跟随
或“filename”。 - 必需。宏名不应与关键字冲突。
- 建议。不要使用#undef。
- 必需。宏的参数中不应出现类似预处理指令的符号。
- 必需。由宏参数扩展产生的表达式应用括号括起来。
- 必需。#if或#elif预处理指令的控制表达式应赋值为0或1.
- 必需。#if或#elif中控制表达式使用的标识符在赋值前应被#define。
- 建议。#和##预处理器操作符不应使用。
- 必需。宏参数在紧随#后后续不得有##紧跟该参数。
- 必需。宏参数用作#或##操作符的操作数,这本身就是收到进一步的宏替换,应仅被用作这些操作符的操作数。
- 必需。以#开头的一行应是有效的预处理指令。
- 必需。所有的#else、#elif和#endif预处理指令应该同与他们相关的#if或者#ifdef指令放在相同的文件中。
2.21 标准库
- 必需。#define和#undef不得用于保留标识符或保留宏的名字。
- 必需。不应定义保留的标识符或宏名。
- 必需。<stdlib.h>的allocation和deallocation函数不应使用。
- 必需。不应使用标准头文件<setjmp.h>。
- 必需。不应使用标准头文件<signal.h>。
- 必需。标准库中的输入输出函数不应使用。
- 必需。不应使用<stdlib.h>的atof,atoi,atoll函数。
- 必需。不应使用<stdlib.h>的abort,exit,getenv和system函数。
- 必需。不应使用<stdlib.h>的bsearch函数。
- 必需。不应使用标准库中的时间和日期函数。
- 必需。不应使用标准头文件<tgmath.h>。
- 建议。不应使用<fenv.h>中的异常处理功能。
2.22 资源
- 必需。用标准库函数动态获得的资源应显式释放。
- 强制。仅用标准库函数分配的内存需要被释放。
- 必需。同一文件不应在同一时间在不同流中读写。
- 强制。不应尝试在以只读形式打开的流中写入数据。
- 强制。指向文件对象的指针不应被引用。
- 强制。在相关流关闭后文件指针的值不应使用。
Continuous Integration
下面所有的缩写词汇均来自autosar官方资料,主要来源于AUTOSAR_TR_GLOSSARY.pdf,还有一些其他文档中的术语添加,方便后续查找.
Abbreviation/缩写 | Description/说明 | 翻译 |
---|---|---|
AA | Adaptive Application | 自适应应用程序 |
ABC | Abstract Base Class | |
ABI | Application Binary Interface | 应用程序接口 |
ADC | Analog Digital Converter | 模数转换器 |
AES | Advanced Encryption Standard | |
AMM | Application Mode Management | |
AP | AUTOSAR Adaptive Platform | AUTOSAR自适应平台 |
API | Application Programming Interface | 应用程序接口 |
ARA | AUTOSAR Runtime for Adaptive Applications | 自适应应用程序运行时 |
ARP | Address Resolution Protocol | 地址解析协议 |
ARTI | AUTOSAR Run-Time Interface | AUTOSAR运行时接口 |
ARXML | AUTOSARXML | |
ASAM | Association for Standardization of Automation and Measuring systems | 自动化及测量系统标准协会 |
ASD | Abstract System Description | |
ASIL | Automotive Safety Integrity Levels | 汽车安全完整性等级 |
ASW | Application SoftWare | 应用软件 |
ATP | AUTOSAR Template Profile | |
ATS | Acceptance Test Suite | |
AUTOSAR | AUTomotive Open System Architecture | 汽车开放系统架构 |
BFx | Bitfield functions for fixed point | |
BSW | Basic Software | 基础软件 |
BSWM | Basic SoftWare Mode manager | 基础软件模式管理器 |
BSWMD | Basic SoftWare Module Description | 基础软件模块说明 |
CAN | Controller Area Network | 控制器域网 |
CCF | Common Cause Failure | |
CDD | Complex Driver | 复杂驱动 |
CP | AUTOSAR Classic Platform | AUTOSAR经典平台 |
COM | COmmunication Management | 通信管理 |
CPU | Central Processing Unit | 中央处理器 |
CRC | Cyclic Redundancy Check | 循环冗余校验码 |
DAC | Digital to Analog Converter | 数模转换器 |
DCM | Diagnostic Communication Management | 诊断通信管理 |
DDS | Data Distribution Service | 数据分发服务 |
DEM | Diagnostic Event Manager | 诊断事件管理 |
DES | Data Encryption Standard | 数据加密标准 |
DET | Development(Default) Error Tracer | 默认或开发错误追踪器 |
DEXT | Diagnostic EXTract | 诊断提取模板 |
DHCP | Dynamic Host Configuration Protocol | |
DIO | Digital Input/Output | |
DLC | Data Length Code | |
DM | Diagnostic Manager | 诊断管理 |
DoIP | Diagnostics over Internet Protocol | |
DTC | Diagnostic Trouble Code | |
DTD | Document Type Definition | |
E2E | End to End | 端到端 |
ECU | Electronic Control Unit | 电子控制单元 |
ECB | Electronic Code Book | |
ECC | Elliptic Curve Cryptography | |
ECDSA | Elliptic Curve Digital Signature Algorithm | |
ECIES | Elliptic Curve Integrated Encryption Scheme | |
EDDSA | Edwards-Curve Digital Signature Algorithm | |
EEC | Executable Entity Cluster | |
EEPROM | Electrically Erasable Programmable Read-Only Memory | 电可擦可编程序只读存储器 |
EOC | Execution Order Constraint | |
EOCEERG | Execution Order Constraint Executable Entity Reference Group | |
FC | Functional Cluster | |
FID | Function Identifier | 功能标识符 |
FIM | Function Inhibition Manager | 功能禁止管理器 |
FIFO | First In First Out | 先进先出 |
FIBEX | Field Bus Exchange Format | |
FO | (AUTOSAR) FOundation | 基础(CP和AP通用部分) |
FOTA | Firmware Over The Air | 固件空中下载 |
FPU | Floating Point Unit | |
FQDN | Fully-Qualified Domain Name | |
FW | Fire Wire | 火线 |
GCM | Galios/Counter Mode | |
GENIVI | GENeva In-Vehicle Infotainment | |
GPT | General Purpose Timer | 通用定时器 |
GSM | Global System for Mobile Communication | |
HMAC | Hash-based Message Authentication Code | 基于散列的消息认证码 |
HTTP | Hypertext Transport Protocol | 超文本传输协议 |
HW | Hardware | 硬件 |
I-PDU | Interaction Layer Protocol Data Unit | |
ICC | Implementation Conformance Class | |
ICMP | Internet Control Message Protocol | |
ICOM | Intelligent COMmunication controller | |
ICU | Input Capture Unit | |
ID | IDentifier | |
IDL | Interface Description Language | |
IEC | International Electrotechnical Commission | |
IFI | Interpolation Floating point | |
IFx | Interpolation Fixed point | |
IO | Input/ Output | |
IP | Internet Protocol | |
ISO | International Standardization Organization | |
ISR | Interrupt Service Routine | |
JSON | JavaScript Object Notation | |
LAN | Local Area Network | |
L-PDU | Protocol Data Unit of the data Link layer | |
L-SDU | SDU of the data Link layer | |
LET | Logical Execution Time | 逻辑执行时间 |
LIFO | Last In First Out | 后进先出 |
LIN | Local Interconnected Network | |
LT | Log and Trace | |
LSB | Least Significant Bit | 最低有效位 |
MAC | Media Access Control | |
MAC | Message Authentication Code | |
mC( μC) | MicroController | 微控制器 |
MCAL | Microcontroller Abstraction Layer | 微控制器抽象层 |
MCU | Micro Controller Unit | |
MD | Message Digest | |
ME | Mappable Element | |
MFI | Mathematical Floating point | |
MFx | Math - Fixed Point | |
MIPS | Million Instructions Per Second | 每秒百万条指令 |
MMU | Memory Management Unit | 内存管理单元 |
MMI | Man Machine Interface | 人机接口 |
MOST | Media Oriented Systems Transport | MOST总线 |
mP | MicroProcessor | |
MPU | Memory Protection Unit | |
MSB | Most Significant Bit | 最高有效位 |
MTU | Maximum Transmission Unit | 最大传输单元 |
NM | Network Management | 网络管理 |
N-PDU | Protocol Data Unit of the Network layer (transport protocols) | |
N-SDU | SDU of the Network layer (transport protocols) | |
NVRAM | Non-Volatile Random Access Memory | 非易失性存储器 |
OBD | On-Board Diagnostic | 车载诊断系统 |
OEM | Original Equipment Manufacturer | 原始设备制造商 |
OIL | ISO 17356-6 (OSEK/VDX Implementation Language) | vehicle distributed executive汽车分布式执行标准,OSEK实现语言 |
ODX | Open Diagnostic Data Exchange | 开放标准诊断格式数据 |
OS | Operating System | 操作系统 |
OSEK | Open Systems and the Corresponding Interfaces for Automotive Electronics | 汽车电子的开放式系统及接口 |
PCI | Protocol Control Information | 协议控制信息 |
PDEP | Profile of Data Exchange Point | |
PDU | Protocol Data Unit | 协议数据单元 |
PHM | Platform Health Management | 平台健康管理 |
PKCS | Public Key Cryptography Standards | 公钥加密标准 |
POSIX | Portable Operating System Interface | 可移植操作系统接口 |
PS | Product Supplier | |
PSK | Pre-Shared Key | 预共享秘钥 |
PWM | Pulse Width Modulation | |
RAM | Random Access Memory | 随机存储器 |
RDG | Runnable Dependency Graph | |
REST | Representational State Transfer | |
RfC | Request for Change | |
ROM | Read-Only Memory | 只读存储器 |
RP | Rapid Prototyping | |
RPC | Remote Procedure Call | |
RSA | Cryptographic approach according to Rivest, Shamir, and Adleman | |
RTE | Runtime Environment | 运行环境 |
SAE | Society of Automotive Engineers | |
SD | Service Discovery | |
SDG | Special Data Group | |
SDU | Service Data Unit | |
SHA | Secure Hash Algorithm | |
SHM | System Health Monitoring | |
SIL | Safety Integrity Level | |
SOA | Service Oriented Architecture | |
SOME/IP | Scalable service-Oriented MiddlewarE over IP | |
SP | Synchronization Point | |
SPEM | Software & Systems Process Engineering Meta-model | |
SPI | Serial Peripheral Interface | 串行外设接口 |
SST | Signal-Service Translation | |
SW | Software | 软件 |
SW-C | Software Component | 软件组件 |
SWCT/SWC-T | Software Component Template | |
SWS | Software Specification | 软件规范 |
SYST/SYS-T | System Template | |
TC | Timed Communication | |
TC | Test Case | |
TCP | Transmission Control Protocol | |
TIMEX | TIMing EXTensions | |
TLS | Transport Layer Security | |
TLV | Tag Length Value | |
TP | Transport Protocol | 传输协议 |
TTCAN | Time Triggered CAN | |
TTL | Time To Live | |
TTP | Time Triggered Protocol | |
UDP | User (Universal) Datagram Protocol | |
UDS | Unified Diagnostic Services | 统一诊断服务 |
UDPNM | UDP Network Management | |
UML | Unified Modeling Language | |
URI | Uniform Resource Identifier | |
URL | Uniform Resource Locator | |
USB | Universal Serial Bus | 通用串行总线 |
UTF | Universal coded character set Transformation Format | |
UUID | Universally Unique Identifier | |
VFB | Virtual Functional Bus | 虚拟功能总线 |
V2X | Vehicle-To-Everything | |
VLAN | Virtual Local Area Network | |
VSA | Variable Size Array | |
VSM | Vehicle State Manager | |
VISS | Vehicle Information Service Specification | |
VMM | Vehicle Mode Management | |
WCET | Worst Case Execution Time | |
WCRT | Worst Case Response time | |
WP | Autosar Work Package | Autosar工作包 |
W3C | World Wide Web Consortium | |
XCP | Universal Calibration Protocol | 通用标定服务 |
XML | Extensible Markup Language | |
XP | Abstract Platform | |
XSD | XML Schema Definition | |
..To be updated |
英文缩写 | 英文全称 | 中文含义 |
---|---|---|
100% Cal | 100% Calibration | 100%标定 |
100% IVER | 100% Integration Vehicle Engineering Release | 100%集成车工程发布 |
100% PPAP | All parts at full PPAP for Vehicle program | 为了整车项目,所有零件须完全通过PPAP |
100% SVER | 100% Structure Vehicle Engineering Release | 100%结构车工程发布 |
65% Cal | 65% Calibration | 65%的动力总成标定 |
80% Cal | 80% Calibration | 80%的动力总成标定 |
8D | 8 Disciplines | 问题解决8步法 |
A | Alpha | Alpha阶段(动力总成产品开发的一个阶段) |
A MRD | Alpha Material Required Date | Alpha样件需求日期 |
A/T | Automatic Transmission | 自动变速器 |
A/T | Automatic Transmission | 自动变速器 |
AA | Architecture Approval | 架构批准 |
AAM | Alliance of Automobile Manufactures | 汽车制造商联盟 |
ABS | Anti-lock Brake System or Anti-Block Steering | 防抱死制动系统 |
AC | Architecture Confirmation | 架构确认 |
ACE | Assistant Chief Engineer | 总工助理 |
ACT | Activity | 工艺路线 |
ACT BOM | Assembly Component Tree BOM | 总成件树形BOM |
AD | Alternatives Development | 主题开发 |
ADV | Analysis / Development / Validation | 分析/开发/验证 |
ADV | Analysis, Development and Validation | 分析,开发和认证 |
AE | Application Engineer | 应用工程师 |
AE | Application Engineer | 应用工程师 |
AEM | Assimilability evaluation method | 可装配性评估方法 |
AFI | Architecture Framing Initiation | 架构框架启动 |
AIAC | Automotive Industry Action Group | 美国汽车工业行动集团 |
ALY | Alloy | 铝合金 |
AMT | Automatic Machincal Transmission | 机械式自动变速器 |
ANSI | American National Standards Institute | 美国国家标准协会 |
AP | Advanced Purchasing | 提前采购 |
AP | Assembly Plant | 总装厂 |
APB | Automotive Product Board | 汽车产品委员会 |
APD | Approved Product Description | 批准的产品描述 |
APE | Annual Program Execution | 年度项目执行 |
APEC | Asia Pacific Economic Cooperation | 亚太经济联盟 |
APQP/CP | Advanced Product Quality Planning and Control Plan | 先期产品质量规划和控制计划 |
APSB | Asia Pacific Strategy Board | 亚太战略委员会(通用汽车的高层管理组织) |
AR | Appropriation Request | 项目预算 |
ARC | Architecture Refinement Complete | 架构优化完成 |
ASB | Automotive Strategy Board | 汽车战略委员会(通用汽车的高层管理组织) |
ASC | 经销商售后管理系统 | |
ASE | Automotive Safety Engineering | 汽车安全工程 |
ASE | Aftersales Engineering | 售后工程 |
ASN | Advanced shipping notice | 发货通知单 |
ASSI | Architecture Statement of Strategic Intent | 战略意向的架构陈述 |
Assy Check-in | Assembly Line Check-in | 装配线进场 |
启动现场安调 | ||
Assy PPAP | Assembly Line PPAP | 装配线 |
通过PPAP | ||
Assy PPAP | Assembly Line PPAP | 装配线通过PPAP |
Assy PPV | Assembly Line Products and Process Validation | 装配线交付后的产品工艺验证 |
Assy PPV | Assembly Line Production and Process Validation | 装配线交付后产品工艺验证 |
Assy Run-Off | Assembly Line Run-Off | 装配线试装 |
交样日期 | ||
Assy Run-off | Assembly Line RUN-Off | 装配线整线打通,启动试装,允许手工装配 |
Assy Run-off MRD | Assembly Line RUN-Off Material Requied Date | 装配线 |
ATC | Auto Temperature Controller | 自动空调控制器 |
ATF | Automatic Transmission Fluid | 自动变速箱油 |
ATT | Attachment | 附件 |
ATT | Actual takt time | 实际单件工时 |
AVD | Advanced Vehicle Development | 先期车辆开发 |
AVDC | Advance Vehicle Development Center | 先期车辆开发中心 |
AVD-LT | Advanced Vehicle Development-Leadership Team | 前期整车开发-领导小组 |
AVDP | Advanced Vehicle Development Process (Time between DSI and VPI) | 先期车辆开发流程(在DSI与VPI之间) |
AVPM | Advanced Vehicle Planning Manager | 先期车辆计划经理 |
B | Beta | Beta阶段(动力总成产品开发的一个阶段) |
B | Build | 制造 |
B MRD | Beta Material Required Date | Beta样件需求日期 |
B+U | Building and Utility | 土建公用 |
BAD | Build Authorization Document | 试制授权文档 |
BC | Business Case | 业务计划 |
BCM | Body Control Module | 车身控制器 |
BDC | Body Distributon Central | 车辆调配中心 |
BESC | Base Engine Steering Committee | 发动机总成战略转向委员会 |
BIQ | Building in Quality | 制造质量 |
BIR | Prototype Build Issue Report | 试制问题报告 |
BIR | Build Issues Resolution | 试制问题 |
BIR | Build Incident Report | 装车问题报告 |
BIR | Bulding issue report | 造车问题报告 |
BIW | Body-In-White | 白车身 |
BIW | Body in White | 白车身 |
BOD | Bill of Design | 设计清单 |
BOE | Bill of Equipment | 设备清单 |
BOM | Bill of Material | 物料清单 |
BOM | Bill of Material | 物料清单 |
BOM | Bill of Material | 物料清单 |
BOM | Bill Of Material | 物料清单 |
BOM | Bill Of Material | 物料清单 |
BOM | Bill of Material | 物料清单 |
BOP | Bill of Process | 工艺清单 |
BOP | Bill Of Process | 工艺清单 |
BP | Break Point | 断点 |
BPD | Business Plant Deployment | 业务计划实施 |
BPP | Best people practices | 最佳人员准则 |
BPR | Business plan recompose | 业务流程重组 |
BS | Body Shop | 车身车间 |
BSD | Build Site Direction | 试制现场指导书 |
BUFFER | Buffer | 线边缓存区 |
C/CAP | Construction/Conversion and Acceleration Plan | 土建/改造和生产提速计划 |
CAB | Change Approval Board | 更改审批会 |
CAC | 服务热线专员 | |
CAFE | Corporate Average Fuel Economy | 公司平均油耗 |
Cal | Calibration | 动力总成标定 |
CARE | Customer acceptance review evaluation | 整车报交检查 |
CARE | Customer Acceptance & Review Evaluation | 用户接受度和审查评估 |
CC | Concept Confirmation | 验证概念 |
CC | Consolidation Center | 集散中心 |
CC | Confirmation Clinic | 确认临床 |
Cert LSO | Certification Lift Stop Order | 通过排放认证通知 |
CET | Cold Environment Test | 寒区试验 |
CH | Chassis Department | 底盘部 |
CI | Concept Initiation | 提出项目概念 |
CIM | Customer Interface Manager | 客户服务经理 |
CIP | Continue Improve Process | 持续改进 |
CIP | Continue Improve Process | 持续改进 |
CIT | Continuous Improvement Team | 不断改进小组 |
CIT | Compartment Integration Team | 车厢集成小组 |
CMC | Container Management Center | 空箱管理中心 |
CME | Change Management Engineer | 更改管理工程师 |
Cmk | N/A | 临界机器能力指数 |
Cmk | Capability Machine Index | 机器设备能力 |
CMM | 三坐标测量 | |
C-NCAP | China New CAR Assessment Process | 中国标准新车评估体系 |
COC | Centre of Competence | 能力中心 |
COE | Center of Expertise | 经验总结中心 |
CP | Control Plan | 控制计划 |
CPIT | Current Product Improvement Team | 现有产品改进小组 |
Cpk | Complex Process Capability | 过程能力指数 |
Cpk | Process Capability Index | 稳定过程的能力指数 |
CPQE | Current Product Quality Engineer | 现有产品质量工程师 |
CPV | Cost per Vehicle | 单车成本 |
CR/DN | Change Request / Decision Notice | 更改决议 |
CR/DN | Change Request/Decision Notice | 变更申请/决议通知 |
CRB | Change Review Board | 更改评审小组 |
CS | Contract Signing | 动力总成签署项目合同 |
CS | Contract Signing | 合同签订 |
CS1 | Controled Shipping 1 | 一级受控发运 |
CS2 | Controled Shipping 2 | 二级受控发运 |
CSC | Controls Steering Committee | 控制模块战略转向委员会 |
CSI | Customer Satisfaction Index | 用户满意度指标 |
CSI | Customer Satisfaction Index | 售后满意度 |
CSN | Current Sequence Number | 流水号 |
CSO | Contract Sign-Off | 合同签署 |
CSO | Contract Sign-Off (VDP) | 整车签署项目合同(VDP术语) |
CSO HC | Contract Sign-Off Health Check | 合同签署健康检查 |
CSO HC | Contract Sign-Off Health Check | 合同签署健康检查 |
CT | Cycle Time | 制程周期 |
CT | Cycle time | 周期时间 |
CT | Creativity Teams | 创造性工作小组 |
CT | Critical Test | 关键试验 |
CTS | Component Technical Specification | 零部件技术标准 |
CTT | Common Timing Template | 标准2级进度模板 |
CVER | Concept Vehicle Engineering Release | 概念车工程发布 |
CVER LL | Concept Vehicle Engineering Release Long Lead | 概念车工程发布--长周期 |
CVIS | Completed Vehicle Inspection Standards | 整车检验标准 |
CVQC | Completed vehicle quality ceter | 整车质量中心 |
CVQCB | Completed vehicle quality ceter board | 整车质量目视板 |
CVT | Continuously Variable Transmission | 无级变速器 |
D.Q.R | 合格率概况 | |
DAS | Design & Analysis Section | 设计分析科 |
DC | Deliver Charter | 递交项目章程 |
DCN | Design Change Notice | 设计更改通知 |
DCN | Design Change Notice | 设计更改通知 |
DCP | Dimension Control Plan | 尺寸控制计划 |
DCS | Design Concept Sheet | 概念设计表 |
DCT | Double Clutch Transmission | 双离合器变速箱 |
DD | Direct Delivery | 直接投线 |
DDSP | Driver Door Switch Pack | 驾驶席门控开关 |
DEI | Die Engineering Integration | 模具工程集成 |
DFA | Design for Assembly | 装配工艺性设计 |
DFM | Design for Manufacturability | 制造工艺性设计 |
DFMEA | Design failure mode and effects analysis | 设计失效模式和效果分析 |
DFMEA | Design FMEA | 设计失效模式分析 |
DIFF | Differential | 差速器 |
DL 3b | Design Level 3b | 设计阶段3b |
DMS | Dealer Manage System | 经销商管理系统 |
DOL | Dealer On Line | 经销商在线系统 |
DP | Demand Plan | 需求计划 |
DPV | Defects per vehicle | 单车缺陷数 |
DPV | Defect per Vehicle | 单车缺陷数 |
DQ&V | Design Quality & Validation | 设计质量和验证 |
DR | Direct run | 直接通过率 |
DRC | Design Review Committee | 设计评审委员会 |
DRE | Design Responsible Engineer | 设计和发布工程师 |
DRE | Design Release Engineer | 设计发布工程师 |
DRE | Design release engineer | 设计发布工程师 |
DRL | Direct run loss | 直接通过损失率 |
Drop Off | Drop Off | 停产 |
DS44 | HIGH SPEED DURABILITY TEST | 高速耐久试验(MGRES 标准) |
DSG | Direct shift gearbox | 双离合器变速箱 |
DSI | Document of Strategic Intent | 战略意向书 |
DSM | Driver Seat Module | 驾驶席座椅控制模块 |
DSO | Design Sign Off | 设计签署 |
DTA | Design Theme Alternatives | 设计主题选项 |
DTC | Diagnostic Trouble Code | 诊断故障码 |
DV | Design Validation | 设计验证 |
DV | Design Validation | 产品设计验证 |
DVP | Design Validation Plan | 设计验证计划 |
DVT | Dynamic vehicle test | 整车综合动态测试 |
E/T/C | Engine/Transmission/Controller | 发动机/变速器/控制模块 |
EBA | Emergency Brake Assistant | 紧急制动辅助系统 |
EBD | Electronical Brake Distribute | 电子制动力分配系统 |
EBOM | Engineering BOM | 工程BOM |
EC | Embedded Controller | 控制模块 |
ECC | ERP Central Component | ERP核心组建 |
ECR | Engineering Change Request | 工程更改请求 |
ECR | Engineering Change Request | 工程更改请求 |
ECR | Engineering Change Request | 工程更改申请 |
ECR | Engineering Change Request | 工程项目变更申请 |
ECS | Engineering Change Summary | 工程变更摘要 |
ECT | Emission Control System | 电子控制自动变速器 |
EDS | Electronic Data Systems | 电子数据系统 |
EEVC | European Enhanced Vehicle-Safety Committee | 欧洲提高车辆安全性委员会 |
EFEO | Emissions & Fuel Economy | 排放和燃料经济 |
EGM | Engineering Group Manager | 产品工程小组经理 |
EI&S | Electronics Integration & Software | 电器零件集成和软件 |
ELV | End of life vehicle | 整车寿命结束 |
EMlS | Emission | 排放 |
EMS | Engine Management System | 发动机管理系统 |
ENB | Build-Test Section | 试制试验科 |
E-NCAP | Euro New Car Assessment Process | 欧洲标准新车评估体系 |
ENG | Engineer | 工程师 |
EOA | End of Acceleration | 生产提速的完成 |
EOLT | End of Line Test | 生产线试验结束 |
EP | Engineering Prototype | 工程样车(件) |
EPA | Environmental Protection Agency | 环境保护厅 |
EPC | Engineering Program Committee | 工程项目委员会 |
EPN | Engineering Project Number | 工程项目数目 |
ERD | Early Requirement Document | 早期的要求文件 |
ESB | European Strategy Board | 欧洲战略委员会(通用汽车的高层管理组织) |
ESO | Engineering Sign Off | 发动机整机 |
工程签署 | ||
ESO | Engineering Sign Off | 工程签署 |
ESO | Engineering Sign-off | 工程签署 |
ET | Engineering Technology | 工程技术 |
EV | Engineering Vehicle | 工程样车 |
EWO | Engineering Work Order | 工程工作指令 |
EWO | Engineering Work Order | 工程更改号 |
EWO | Engineering workorder | 工程更改流程 |
Exp Cal | Experimental Calibration | 尝试性标定 |
FA | Final Approval | 批准正式生产 |
FAC | 集团销售经理 | |
FATG | Final Approval to Grain | 生产最终批准 |
FBIW | First Body in White Complete | 第一轮白车身完成 |
FE | Functional Evaluation | 功能评估 |
FE LSO | Fuel Economy Label Lift Stop Order | 通过油耗认证的通知 |
FIVC | First Integration Vehicle Complete | 第1辆集成车制造完毕 |
FIVC | First Integration Vehicle Complete | 第一轮集成车完成 |
FLO | Factory Layout | 工厂布局 |
FM | 功能尺寸 | |
FM | Finance Manager | 财务经理 |
FMC | First Mule Complete | 第一轮骡子车完成 |
FMC | 区域售后支持 | |
FMEA | Failure model effectiveness analysis | 失效模式分析 |
FMEA | Failure model effectiveness analysis | 失效模式分析 |
FMEA | Failure Mode and Effects Analysis | 潜在失效模式及后果分析 |
FMEA | Failure mode and effects analysis | 失效模式和后果分析 |
FMEA | Failure Mode and Effect Analysis | 失效模式和影响分析 |
FMS | Flexible manufacturing systems | 柔性制造系统 |
FMVSS | Federal Motor Vehicle Safety Standards | 联邦汽车安全标准 |
FPPV BIW | First Product/Process Body in White Complete | 第一轮产品/工艺白车身完成 |
FPPVC | First Product/Process Validation Vehicle Complete | 第一轮产品/工艺验证车辆完成 |
FPS | Fixed Point Stop | 固定停止位置 |
FTC | First Time Capability | 首次能力 |
FTP/FTQ | First time pass/quality | 一次通过合格率 |
FTQ | First time quality | 下线合格率 |
FWD | Four Wheel Drive | 四轮驱动 |
G | Gamma | Gamma阶段(动力总成产品开发的一个阶段) |
G MRD | Gamma Material Required Date | Gamma样件需求日期 |
G/L | Group leader | 工段长 |
GA | General Assembly | 总装 |
GA | General Assembly | 总装 |
GADT | Global Architecture Development Team | 全球架构开发小组 |
GBOM | Global Bill of Material | 全球物料清单 |
GMNA | General Motors North America | 通用汽车北美分部 |
GMPT | General Motors Powertrain | 通用汽车动力总成分部 |
GPDC | Global Product Development Council | 全球产品开发理事会 |
GPDP | Global Powertrain Development Process | 全球动力总成开发流程 |
GPDS | Global Product Description System | 全球产品管理系统 |
GSD | Global Segment Director | 全球细分主管 |
GSS | Global Sales and Service | 全球销售和服务 |
GVDP | Global Vehicle Development Process | 全球整车开发流程 |
GVDP | Global Vehicle Development Process | 整车开发流程 |
GVDP | Global Vehicle Development Process | 整车开发流程 |
GVDP | Global Vehicle Development Process | 全球汽车开发流程 |
GVDP | Global Vehicle Development Process | 全球整车开发流程 |
GVDP | Global Vehicle Development Process | 整车开发流程 |
GVLE | Global Vehicle Line Executive | 整车平台执行 |
GVW | Gross Vehicle Weight | 车辆总重 |
GW | Gateway | 网关 |
HET | Hot Environment Test | 热带试验 |
HRC | Hardware Release Center | 硬件发布中心 |
ICD | Interface Control Document | 接口控制文件 |
IDR | Initial Data Release | 初始数据发布 |
IDSR | Integration Driven Subsystem Requirement | 集成驱动子系统要求 |
ILP | Inbound Logistic Planning | 入厂物流规划 |
IMES | Integration Manufacturing Executive System | 生产执行系统 |
Initial Cal | Initial Calibration | 初始标定 |
IOM | Inspection operator method | 检验操作方法 |
IOS | Inspection operator summary | 检验操作概要 |
IPPE | integrated Product and Process Engineering | 集成产品与工艺工程 |
IPTV | Incident per Thousand Vehicles | 每千辆车的故障率 |
IPTV | Incidents Per Thousand Vehicles | 每一千台车事故率 |
IPTV | Incidents Per Thousand Vehicles | 每千辆车的故障率 |
IPTV | Incidents Per Thousand Vehicles | 千辆车故障率 |
IR | Incident Report | 事故报告 |
IRP | Issue Resolution Process | 问题解决流程 |
IRR | Internal Rate of Return | 内含报酬率 |
ISO | International Standard Organization | 国际标准化组织 |
IV | Integration Vehicle | 集成车 |
IV MRD | Integration Vehicle Material Required Date | 集成车的物料需求日期 |
IVBR | Integration Vehicle Build Readiness Review | 集成车制造准备评审 |
IVER | Integration Vehicle Engineering Release | 集成车工程发布 |
JIS | Just In Sequence | 排序供货 |
JIS | Just In Sort | 供应商排序供货方式 |
JIS | Job Instruction Sheet | 岗位指导书 |
JIT | Just In Time | 及时供货 |
JIT | Just In Time | 供应商及时供货方式 |
JPH | Job per Hour | 生产节拍 |
JRS | Joint Ride Session | 联合评审 |
JSC | 生产采购委员会 | |
JSC-GP | Joint Sourcing Committee - General purchase | 联合采购委员会-一般采购 |
Kcc | Key Control Characteristic | 关键过程控制特性 |
KCC | Key Control Character | 关键控制特性 |
KCDS | Key Characteristic Designation System | 产品关键特性定义系统 |
KO | Kick-Off | 启动 |
Kpc | Key Product Characteristic | 关键产品特性 |
KPC | Key Product Characteristic | 关键产品特性 |
KPC | Key product characteristic | 主要产品特性 |
KPC | Key product characteristic | 主要产品特性 |
KPC | Key process control | 关键过程控制 |
KPC | Key process control | 关键过程控制 |
LAAMSB | Latin America, Africa, Middle East Strategy Board | 通用的拉美,非洲,中东战略委员会 |
LCL | Lower Control Limit | 管制下限 |
LCS | Logistic Confirmation Sheet | 物流确认单 |
LL | Learning Loop | 学习周期 |
LL | Long Lead | 长周期 |
LLPR | Long Lead Production Release | 长周期的产品发布 |
LM | Launch Manager | 启动经理 |
LOU | Line of Usage BOM | 整车BOM行 |
LSL | Lower Specification Limit | 规格下限 |
LSP | Lean sales and marketing prograne | 精宜营销 |
LTR | Launch Team Release | 启动小组释放 |
LWO | Logistic Work Order | 物流属性更改号 |
M+E | Machine & Equipment | 机器设备 |
MAC | 区域经理 | |
MBOM | Manufacturing BOM | 制造BOM |
MDS | Materiel Data Sheet | 物料数据单 |
ME | Manufacture Engineer | 样车试制工程师或生产线制造工程师 |
ME | Machine and Electronic | 电器设备 |
ME | Manufacturing Engineering | 制造工程 |
ME | Manufacturing Engineering | 制造工程 |
MEC | 区域市场支持 | |
MEIS | Manufacturing Engineering Info System | 制造工程信息系统 |
MES | Manufacturing Execution System | 制造执行系统 |
MES | Manufacturing Execution System | 制造执行系统 |
MFG Site Dec | Manufacturing Site Decision | 确定生产厂址 |
MIC | Marketing Information Center | 市场信息中心 |
MILKRUN | Milkrun | 循环取货 |
MKT | Marketing | 营销 |
MMR | Manufacturable Math Release | 制造数模发布 |
MO | Manufacturing Operations | 生产管理部门 |
MP OTS 100% | 100% Made Parts in OTS | 100%自制件达到OTS状态 |
MP OTS 100% | 100% Made Parts in OTS | 100%自制件达到OTS状态 |
MP PPAP | Made Parts PPAP | 自制件 |
通过PPAP | ||
MP PPAP | Made Parts PPAP | 自制件通过PPAP |
MP PPV | Made Parts Production and Process Validation | 自制件生产线交付后的产品工艺验证 |
MP PPV | Made Parts Production and Process Validation | 自制件生产线交付后的产品工艺验证 |
MPS | Master Planning System | 主计划系统 |
MPV | Multi-Purpose Vehicle | 多用途轿车 |
MR | Manufacturing Requirements | 制造要求 |
MRD | Material Required Date | 交样日期 |
MRD | Material Requirement Date | 物料需求日期 |
MRD | Material Required Date (for physical builds) | 物料需求日期(用于制造样机) |
MRD | Math Required Date (for virtual builds) | 数模需求日期(用于虚拟制造) |
MRE | Manufacturing Responsible Engineer | 制造工程师 |
MS | Manufacturing Studies | 制造车间 |
MSA | Measurement System Analysis | 测量系统分析手册 |
MSA | Measurement System Analysis | 测量系统分析 |
MSA | Measure System Analyse | 测量系统分析 |
MSA | Measurement system analysis | 测量系统分析 |
MSS | Market Segment Specification | 市场细分规范 |
MSS | 区域销售支持 | |
MSS | Market Segment Specification | 市场分割规范 |
MT | Manual Transmission | 手动变速箱 |
MT&E | Machines, Tools and Equipment | 机床,工装和设备 |
MTS | Manufacturing Technical Specification | 制造技术标准 |
MVB | Manufacturing Validation Build | 用于认证制造工艺的整车制造 |
MVB | Manufacturing Validation Build | 制造验证造车 |
MVB (ns) | Manufacturing Validation Build (non saleable) | 用于认证制造工艺的整车制造(不可销售的) |
MVB (s) | Manufacturing Validation Build (saleable) | 用于认证制造工艺的整车制造(可销售的) |
MVBns | Manufacturing Validation Build Non-Salable | 非销售制造验证造车 |
MVBs | Manufacturing Validation Build Salable | 销售制造验证造车 |
MVSS | Motor Vehicle Safety Standards | 汽车安全标准 |
MWO | Manufacture Work Order | 制造属性更改号 |
MY | Model Year | 年度款 |
MYM | Model Year Manager | 车型年经理 |
NAO | North American Operations | 通用的北美分部 |
NEO | New Employee Orientation | 新员工培训 |
NOA | Notice of Authorization | 授权书 |
NOD | Notice of Decision | 决议 |
NOD | Notice of Decision | 决议通知 |
NPV | Net Present Value | 净现值 |
NRD | Normal Road | 一般公路 |
NSB | North American Strategy Board | 通用的北美传略委员会(通用的高层管理组织) |
OBD | On Board Diagnostics | 车载诊断系统 |
OEM | Original Equipment manufacturers | 原始设备制造商(主机厂) |
OEM Run-Off | Original Equipment Manufacturer Run-Off | 零件供应商 |
工装设备具备试生产条件 | ||
OEM Run-off | Original Equipment Manufacturer Run-off | 零件供应商工装设备具备试生产条件 |
OJT | On Job Training | 在岗培训 |
OPO | Office of Product Operations | 产品高层管理组织 |
ORS | Occupant Restraint System | 乘员约束系统 |
OT | Overtime | 加班 |
OTD | Order to Delivery | 订单到货时间 |
OTP | On Time Performance | 及时性能 |
OTS | 装车评审 | |
OTS | Off-tool Sample | 工装样件 |
OTS | Off-tool Sample | 工装样件 |
OTS | Off-tool Sample | 工装样件 |
OTS | OFF-TOOL-SAMPLE | 工装样件 |
OTS QV | OTS Quality Valve | OTS质量阀 |
OTS交付状态满足质保的开阀要求 | ||
OTS QV | OTS Quality Valve | OTS质量阀,OTS交付状态满足质保的开阀要求 |
OTS TG2 | Off Tooling Samples Tooling Go Level 2 | OTS设计达到TG2阶段,发布图纸用于供应商启动工装和设备投入 |
OTS TGL2 | Off Tooling Samples Tooling Go Level 2 | OTS设计达到TG2阶段 |
P | Pilot | 批量试生产 |
P | Pilot | 小批量生产 |
PA | Production Approval | 批准正式生产 |
PA | Program Administrator | 项目管理专员 |
PaC | Physical Alpha for Customer | 提交客户的Alpha样机 |
PACK | Packaging | 包装规划 |
PAD | Product Assembly Documentation | 产品装配文件 |
PAM | Product Assemble Manual | 样车装配指南 |
PAM | Product Assemble Manual | 产品装配手册 |
PAPIR | Product and Process Integration Review | 产品和工艺集成会议 |
PAS | Packaging Approval Sheet | 包装确认单 |
PAS | Parking Aid System | 泊车辅助系统 |
PAS | Parking Aid System | 泊车辅助系统 |
PbC | Physical Beta for Customer | 提交客户的Beta样机 |
PBS | Painted Body Store | 油漆车身存储区 |
PC | Deliver Pilot to Customer | 向客户提交Pilot产品 |
PC | Pullcord | 拉环 |
PC | Problem Communication | 问题信息 |
PC&L | Production Control and Logistics | PC&L部门(GM的一个部门) |
PCL | Production Control Manager | 生产控制与支持 |
PCM | Powertrain Control Module | 动力总成控制模块 |
PCM | Process Control Manager | 工艺控制负责人 |
PCN | Project Cost Change Notice | 项目更改通知单 |
PCN | Project Costbook Change Notice | 项目Costbook更改通知单 |
PCR | Problem communication report | 问题交流报告 |
PCR | Problem communication report | 问题交流报告 |
PCR | Problem Communication Report | 问题交流报告 |
PCR | Problem Communication Report | 问题交流报告 |
PDC | Parking Distance Control | 泊车距离控制 |
PDC | Parking Distance Control | 泊车距离控制 |
PDCA | Plan、Do、Check、Action | 计划、实施、检查、行动 |
PDCA | Plan-Do-Check-Action | 计划,实施,检查,行动 |
PDI | Product delivery inspection | 产品交付检查 |
PDI | Preliminary Data Indicator | 初步数据指示器 |
PDI | Pre-delivery Inspection | 车辆行运“零公里”检查报告 |
PDS | Product Data Structure | 产品数据结构,在SCM中用到的数据对象,集成了BOM、工艺和工厂布局信息 |
PDT | Product Development Team | 产品开发组 |
PDT | Product Development Team | 产品开发小组 |
PDT | Product Development Team | 产品开发小组 |
PDT | Product Development Team | 产品开发小组 |
PDT | Product Development Team | 产品开发小组 |
PE | Product Engineering | 产品工程 |
PET | Program Executive Team | 项目执行小组 |
PET | Program Execution Team | 项目组 |
PET | Program Execution Team | 项目执行小组 |
PFI | Program Framing Initiated | 项目框架启动 |
PFMEA | Process failure mode and effectsanalysis | 过程失效模式和后果分析 |
PFMEA | Process FMEA | 工艺失效模式分析 |
PFMEA | Process failure mode & effects analysis | 过程失效模式分析 |
PFSE | Product Focus Systems Engineer | 产品系统工程师 |
PG3 | Powertrain Gateway | 关键里程碑节点 |
PgC | Physical Gamma for Customer | 向客户发运Gamma样机 |
PGM | Program Management / Project Management | 项目管理 |
PGM | Program Management | 项目管理 |
PGM | Program Management | 项目管理 |
Pilot | Pilot | 试生产 |
Pilot | Pilot | 试生产 |
Pilot QV | Pilot Quality Valve | 试生产质量阀满足启动试生产的开阀要球 |
Pilot MRD | Pilot Material Requied Date | Pilot交样日期 |
Pilot MRD | Pilot Material Required Date | Pilot的物料需求日期 |
Pilot QV | Pilot Quality Valve | 试生产质量阀 |
满足启动试生产的开阀要求 | ||
PIM | Powertrain Interface Manager | 动力总成接口经理 |
PLM | Production Launch Manager | 生产启动经理 |
PLP | 单车利润表 | |
PM | Programme Manager | 项目工程经理 |
PM | Program Manager | 项目经理 |
PM | Program Manager | 项目经理 |
PM | Plan maintain | 计划维护 |
PM | Prevention Maintenance | 预防性维护 |
PM | Program Manager | 项目经理 |
PMO | Program Management Office | 项目管理办公室(通用的一个部门) |
PMP | 常规尺寸 | |
PMT | Product Management Team | 产品管理小组 |
PN | Part NO. | 零件号 |
PP | Pre-pilot | 前期试生产 |
PP | Pre-Pilot | 预试生产 |
PP | Pre-pilot | 试生产 |
P-P | Pre-Pilot | 试生产 |
PP PPAP | Purchased Parts Production Parts Approval Process | 外购件完成生产件批准程序 |
PP Appr. | Purchased Parts Approved | 外购件批准 |
SQE开具入库许可单 | ||
PP ESO | Purchased Parts Engineering Sign Off | 外购件工程签署,完成OTS认可/阶段认可 |
PP OTS 100% | 100% Purchased Parts in OTS | 外购件的OTS交样率达到100% |
PP OTS 80% | 80% Purchased Parts in OTS | 外购件的OTS交样率达到80% |
PP OTS 80% | 80% Purchased Parts in OTS | 外购件的OTS交样率达到80% |
PP PPAP | Purchased Parts PPAP | 外购件完成PPAP |
PPA | Product Planning Approval | 产品规划批准 |
PPAP | Production Parts Approval Process | 生产件批准程序 |
PPAP | Production Part Approval Process | 生产零部件批准程序 |
PPAP | Production Part Approval Process | 生产件批准程序 |
PPAP | Production Part Approval Process | 生产件批准程序 |
PPAP | Production Parts Approval Process | 生产件批准程序 |
PPAP | Production Part Approval Process | 生产件批准流程PPAP |
PPAP | Production Part Approval Process | 产品零部件批准流程 |
PPAP | Production Part Approval Process | 生产零部件批准程序 |
PPC | Deliver Pre-Pilot to Customer | 向客户发运Pre-pilot动力总成 |
PPC | Product Program Content | 项目任务书 |
#各位贡献者名单