钢琴上的汽车软件
汽车电子软件开发高级工程师,负责过多个主机厂和零部件厂的项目开发,在自动驾驶、车联网领域有近7年的经验,目前专注于AUTOSAR系统开发和应用。微信公众号《汽车电子软件开发》作者。
展开
-
Classic AUTOSAR精讲专栏目录
欢迎大家来到钢琴上的汽车软件创建的《Classic AUTOSAR精讲系列专栏》,期待在这里能够与大家一起进步,分享成功,分享喜悦!下面蓝色的文章标题都是传送门,点击直接跳转到对应文章。原创 2023-03-04 15:10:31 · 2272 阅读 · 4 评论
-
【实践】CAN DBC的大小端与信号读写算法
在进行CAN DBC文件通信开发时,我们经常会遇到两种不同的字节序:Intel和Motorola。这两种字节序在业界都非常普遍,但在一个系统中通常只采用其中一种。本文将探讨CAN DBC文件中Intel和Motorola格式的差异,并指导如何编写代码以从原始CAN数据中读写信号,旨在帮助开发者在软件开发中快速构建CAN信号交互层。在深入了解字节顺序之前,我们需要先理解 LSB 和 MSB 的概念。原创 2024-12-19 06:00:00 · 97 阅读 · 0 评论 -
AUTOSAR中不同Port Interface介绍
本篇文章为大家介绍AUTOSAR中不同类型的端口接口(Port Interface),帮助大家理解不同Port Interface的作用,在设计时进行合理的选择。AUTOSAR支持六种类型的应用端口接口。分别如下:• 发送者接收者(Sender-Receiver)端口接口(ASWC)• 客户端服务器(Client-Server)端口接口• 校准(Calibration)端口接口• 模式端口接口• 非易失性数据端口接口• 触发接口。原创 2024-11-29 10:37:50 · 137 阅读 · 0 评论 -
AUTOSAR中不同的SWC介绍
ECU抽象软件组件提供访问ECU指定IO的能力。这些服务通常通过客户端-服务器PPorts(通信端口)提供,并由传感器-执行器软件组件使用。原创 2024-11-29 10:12:07 · 214 阅读 · 0 评论 -
RTE接收信号的几点特性
本文介绍了Never received status,enable Update,Alive Timeout三个信号接收的特性功能,在实际工作中这三个特性可以结合使用,来实现一些特定需求的开发。原创 2024-11-21 15:47:41 · 157 阅读 · 0 评论 -
【实践】VECTOR AUTOSAR创建SWC读写CAN信号
在AUTOSAR开发中最必要的功能就是读写CAN信号,本文通过一步步说明,介绍如何开发SWC来读写CAN信号,可以说在AUTOSAR中实现读写CAN信号的实践过程,是一个非常基础且典型的练习。在本篇文章阅读之前,推荐阅读AUTOSAR RTE介绍,本篇文章介绍了RTE的比较全面的介绍了AUTOSAR RTE。理解了RTE之后,才能对SWC的设计更加清楚。话不多说,接着上一篇内容VECTOR DaVinci从0到1搭建工程,此篇文章我们介绍如何在DaVinci Developer中开发SWC访问CAN信号。为原创 2024-11-20 09:53:23 · 268 阅读 · 0 评论 -
AUTOSAR COM修改PDU发送周期不生效
首先当前是其他PDU都是能正常发送的,且发送的周期都符合通信矩阵DBC中的定义。经过分析是COM模块使能了MDT的周期发送功能,且该I-PDU配置了MDT(即下图中的Minimum Delay Time),MDT是100ms。如果I-PDU的最小延迟计时器因为传输截止监视器超时而重置,并且存在对此I-PDU的推迟请求,AUTOSAR COM模块应立即传输此I-PDU。配置大于0,在成功传输确认时,AUTOSAR COM模块应重新加载尚未过期的I-PDU的已运行的最小延迟时间计数器。设置为TRUE,则仅在。原创 2024-11-15 16:57:06 · 81 阅读 · 0 评论 -
VECTOR DaVinci从0到1搭建工程
基于VECTOR DaVinci创建AUTOSAR工程前,我们一般要准备好通信数据库(dbc,arxml)文件,如果需要诊断功能还需要诊断数据库cdd文件等输入文件。原创 2024-11-13 13:50:28 · 602 阅读 · 0 评论 -
AUTOSAR Callback和Callout
callback函数提供了标准化的通信机制,保证了不同组件之间的兼容性,而callout函数则允许开发者在满足基本框架的同时,实现特定的、个性化的需求,增加了系统的可扩展性和适应性。原创 2024-11-13 09:24:21 · 160 阅读 · 0 评论 -
VECTOR DaVinci Configurator中的Modules说明
使用过VECTOR MICROSAR的朋友们都知道,当我们开发AUTOSAR时,需要在DaVinci Configurator中导入Modules。而不同的Modules图标颜色也不一样,下面我们介绍下不同Modules颜色的意义,以及如何在Configurator中导入Modules。原创 2024-11-12 13:58:31 · 141 阅读 · 0 评论 -
AUTOSAR OS详细介绍及配置说明(更新版20240829)
AUTOSAR OS扩展了OSEK/VDX标准中的操作系统,所以本文结合OSEK/VDX的标准来介绍AUTOSAR OS,并借助Vector Configurator讲解AUTOSAR OS的配置。源于德语,英文意思是:“车载电子设备的开发系统和接口”,它是一个标准,用来产生嵌入式操作系统的规范,通讯协议栈,和汽车网络管理协议,也产生其他相关的规范。OSEK被设计来提供整车的各种电子控制单元的软件标准架构。原创 2024-08-29 14:04:08 · 469 阅读 · 0 评论 -
AUTOSAR CAN网络Bus Load Reduction Mechanism
为了确保功能算法的可靠性,App Msg及时被接收和处理,所以,应尽可能地将总线使用权让给App Msg,在网络可以保持的前提下,尽可能地减少NM Msg的发送密度,进而避免过多的抢占App Msg使用总线,这就是Bus Load Reduction Mechanism出现的背景。网络唤醒时,各主动网络节点均发送各自的NM Msg,会增加总线负载,为了降低网络唤醒时的总线负载,会为每个主动网络节点设置一个Offset值,比如:CanNmMsgCycleOffset。时间的节点,在网络上交替传输。原创 2024-07-16 10:04:09 · 315 阅读 · 0 评论 -
Autosar网络管理:发出第一帧网络管理报文的方法
很多OEM要求CAN网络管理第一帧发出的是网络管理报文,目的是为了快速唤醒CAN网络。原创 2024-07-11 13:59:17 · 600 阅读 · 0 评论 -
关于CANNM PassiveMode
如下图,当节点为Passive Mode时,从Bus-Sleep Mode唤醒时由于不能发送报文,所以进入到Repeat Message State需要调用CanNm_PassiveStartup(),在Repeat Message State时由于依然不能发送报文,所以不能请求网络,状态进入Ready Sleep State。根据上述要求,Passive Mode这种节点的ECU因为不能发送NM PDU,因此不需要保持网络唤醒。原创 2024-07-11 10:17:56 · 277 阅读 · 0 评论 -
AUTOSAR NM介绍
NM是Network Management的简称,是出于具体总线网络管理模块与ComM之间的适配层,为ComM提供所有总线网络管理的服务。在AUTOSAR BSW 层中,其上层是通信管理模块(ComM),下层是具体总线网络管理模块(如CanNm,J1939Nm,FrNm,LinNm,UdpNm等)。原创 2024-07-09 13:52:20 · 655 阅读 · 0 评论 -
CAN总线Bus-off机制介绍及恢复策略说明
CAN通信Bus-off即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Bus-off的原因是因为发送错误大于255,在此状态节点不能收发报文。以上三种错误状态标识发生故障的严重程度,总线关闭态是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或者应答总线上的报文,也就意味着不能再对总线有任何影响。原创 2024-07-04 10:41:49 · 3131 阅读 · 0 评论 -
AUTOSAR术语表
平常工作中遇到不知道意思的缩略词,编写代码取名称时都可以参考这个术语表。下面所有的缩写词汇均来自AUTOSAR官方资料。原创 2024-06-04 15:07:13 · 139 阅读 · 0 评论 -
AUTOSAR OS的启停
目标硬件必须在OS启动之前被初始化OS在StartOS()调用之前不会运行tdown Hook在执行ShutdownOS() API调用期间被调用。原创 2024-05-17 09:05:43 · 361 阅读 · 0 评论 -
AUTOSAR OS调度表讲解
调度表提供了一种在配置时静态规划一系列操作的方法调度表与一个AUTOSAR OS计数器相关联,可以指定持续时间,并包含一个或多个到期点调度表可以通过下面方式与全局tick源同步:隐式同步,其中驱动调度表的计数器是全局时间源显示同步,其中驱动调度表的计数器由本地计数器驱动,并通过告知操作系统全局滴答源的当前值手动同步表。原创 2024-05-11 08:46:44 · 975 阅读 · 2 评论 -
AUTOSAR CAN Busoff处理
CAN通信Busoff即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Busoff的原因是因为发错错误大于255,在此状态节点不能收发报文。原创 2024-04-28 10:50:48 · 867 阅读 · 0 评论 -
CANFD帧能否唤醒CAN网络
本文的撰写起因是源于AUTOSAR技术群中一位朋友的提问。他提出的问题是关于AUTOSAR网络管理功能是否支持CAN FD报文的实现。朋友:Autosar网络管理功能有用CANFD报文实现的吗?我:有啊,Autosar网络管理不限制报文类型是标准CAN还是CANFD朋友:数据收发还是8字节的方式,只是报文类型可以是CANFD?我:对,另外报文长度其实也没啥限制,只要符合规范要求。原创 2024-04-23 13:32:39 · 852 阅读 · 0 评论 -
AUTOSAR OS Alarm讲解
使用中断ISR可以构建以不同速率激活任务的系统。然而,对于复杂的系统,这种方式效率不高且不切实际。alarm(警报)提供了一种更方便、更灵活的调度系统的方式。一个计数器一个或多个与计数器关联的alarmalarm指定当达到特定的计数器值时要执行的动作。系统中的每个计数器都可以附加任意数量的alarm。当计数器的值等于附加在该计数器上的警报值时,称该警报已经过期。在到期时,OS将执行与警报相关的操作。动作可以是激活一个任务,执行一个警报回调例程,设置一个事件或驱动一个软件计数器。原创 2024-04-22 14:12:10 · 722 阅读 · 0 评论 -
AUTOSAR OS Counter讲解
Counter(计数器)以tick为单位记录操作系统中发生了多少“事情”。tick(滴答)是一个抽象的单位。时间,例如毫秒,微妙,分钟等,然后计数器计算过去了多少时间旋转,例如以度或分钟为单位,计数器计算物体旋转了多少按钮按下,计数器计算按钮按下多少次错误,计数器计算错误发生的频次中断(有时是任务)用于驱动一个计数器。该驱动程序负责进行正确的OS API调用来滴答计数器,或者告诉OS计数器已经滴答到一个所需的值。原创 2024-04-22 08:52:00 · 556 阅读 · 0 评论 -
AUTOSAR OS Event讲解
在AUTOSAR系统中,event(事件)用于向任务发送信号信息。事件可以为Extended task提供多个同步点,如下图:extended task可以等待事件,这将导致任务进入等待状态。当系统中的任务或ISR设置事件时,等待任务将进入就绪状态。当它成为最高优先级的就绪任务时,OS将选择它来运行。事件由与其关联的extended task拥有。通常,extended task将作为一个无限循环运行,其中包含对其拥有的事件的一系列受保护的等待调用。因此,事件机制允许我们构建事件驱动的状态机。原创 2024-04-18 09:13:26 · 690 阅读 · 0 评论 -
AUTOSAR Resource讲解
访问由任务和中断共享的硬件或者数据是不可靠的且危险的。这是因为当低优先级的任务或者中断更新共享数据时可能产生抢占,即这是一种竞争条件。访问共享数据的语句序列成为临界区。为了提供对临界区中引用的代码和数据的安全访问,我们需要强制互斥。即必须确保在临界段期间,系统中没有其他任务或者2类中断能够抢占当前正在执行的任务。AUTOSAR操作系统提供了基于资源(Resource)的互斥机制。Resource只是一个二进制信号量。当一个任务或2类中断获得资源时,其他任务或者中断无法获得该资源。原创 2024-04-17 13:11:43 · 370 阅读 · 0 评论 -
AUTOSAR Interrupt讲解
在SuspendOSInterrupts()之后,除了SuspendAllInterrupts()/ResumeAllInterrupts()对和SuspendOSInterrupts()/ResumeOSInterrupts()对之外的API调用不被允许。在SuspendAllInterrupts()之后,不允许调用SuspendAllInterrupts()/ResumeAllInterrupts()和SuspendOSInterrupts()/ResumeOSInterrupts()之外的API。原创 2024-04-15 14:12:08 · 765 阅读 · 0 评论 -
AUTOSAR Task快速熟悉手册
必须同时执行许多不同活动的系统称为并发系统。这些活动可能有一些软件部分,因此提供它们的程序必须并发执行。这些程序必须在必要时进行合作,例如,当它们需要共享数据时。实时系统中的每个并发活动都由一个表示。大多数应用程序代码存在于任务中。如果您有许多必须同时执行的任务,则需要提供一种允许并发的方法。一种方法是为每个任务设置一个单独的处理器。您可以使用并行计算机,但是这种解决方案对于许多应用程序来说过于昂贵。原创 2024-04-12 09:19:44 · 557 阅读 · 0 评论 -
AUTOSAR OS详细介绍及配置说明(更新版20240115)
AUTOSAR OS扩展了OSEK/VDX标准中的操作系统,所以本文结合OSEK/VDX的标准来介绍AUTOSAR OS,并借助Vector Configurator讲解AUTOSAR OS的配置。源于德语,英文意思是:“车载电子设备的开发系统和接口”,它是一个标准,用来产生嵌入式操作系统的规范,通讯协议栈,和汽车网络管理协议,也产生其他相关的规范。OSEK被设计来提供整车的各种电子控制单元的软件标准架构。原创 2024-01-16 08:49:40 · 684 阅读 · 1 评论 -
硬件安全HSM介绍
随着汽车智能化和网联化的发展,汽车软件面临着更加严重的安全风险问题,为了应对一系列软件安全问题,就离不开硬件安全模块这个扮演着安全之锚的角色。HSM是硬件安全模块的英语缩写,全称是Hardware Security Module。HSM可以用于车辆安全信息(比如密钥)的生成、存储以及处理,且能够隔离外部恶意软件的攻击。HSM可以用于构建、验证可靠的软件,以保护在软件加载并初次访问之前的安全启动。HSM包含有加密/解密硬件加速功能,和软件解决方案相比能够有效降低CPU负载。原创 2023-12-07 09:18:33 · 1591 阅读 · 0 评论 -
AUTOSAR CAN Busoff处理
CAN通信Busoff即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Busoff的原因是因为发错错误大于255,在此状态节点不能收发报文。原创 2023-11-10 14:38:35 · 1547 阅读 · 0 评论 -
AUTOSAR EcuM,ComM,CanNm的关联
然后当ComM进入Full Communication后也会默认往Ready Sleep状态里面去跑,除非持续收到外部的唤醒,否则不会去保持Network的唤醒状态。在Slient状态下没有收到NM Message,并且这时收到了NM Bus-Sleep的指示,则让CanSM去关闭通道,然后进入No Communication的状态。进入Full Communication后由于是内部唤醒,会首先进入Network Requested,执行正常的报文收发,能一直主动去保持Network的唤醒状态。原创 2023-11-03 16:39:00 · 1127 阅读 · 0 评论 -
AUTOSAR CAN协议栈架构总览介绍
在知道了Classic AUTOSAR层级架构后,我们就可以根据该架构列出CAN协议栈的层级关系,如下图服务层涉及的模块有:Can NM,DCM,COM,PDUR,Can TPECU抽象层涉及的模块有:Can Interface微控制器层涉及的模块有:Can Driver注:图片来源于网络,如有侵权,联系删除。原创 2023-10-31 13:54:16 · 859 阅读 · 0 评论 -
车载网络SOA服务之SOMEIP介绍
随着ADAS,自动驾驶,OTA等业务的兴起,对于通信带宽的需求越来越迫切。传统的方式CAN,FlexRay甚至MOST等总线已经不能满足当下的需求,所以汽车工业需要考虑一种高带宽,高速率的通信网络,另外传统面向信号的通信方式也需要随着新业务的需要转向面向服务的通信方式。考虑到这种需求,以太网通信被引入车载网络中。以太网作为工业界广泛接受的协议,很多协议比如TCP/IP和UDP也经过了几十年严格的研发和协议的验证。原创 2023-10-25 11:31:23 · 430 阅读 · 0 评论 -
AUTOSAR CAN通信 TxConfirmation RxIndication ACK介绍
CAN的错误帧中有一种就是ACK错误,ACK错误由发送方负责检测,发送方在ACK段发送2个隐性位,接收发收到该帧时将ACK槽置为显性位(ACK应答),由于“线与“原则,ACK段会由”01“组成,发送方在发送CAN帧时同时监听总线,如果发生方在ACK槽中检测出隐性电平就会检测出ACK错误(由于没有接收方在ACK槽填充),同时会发出ACK错帧帧。中断模式是在中断ISR中调用CanIf_TxConfirmation通知CanIf,然后CanIf通过User_TxConfirmation通知上层User。原创 2023-10-24 09:41:37 · 810 阅读 · 0 评论 -
AUTOSAR IdsM介绍
车辆中的许多新功能建立在车载和后台服务之上,需要面对保护车辆免受网络攻击的挑战。为车辆的E/E架构配置了安全机制,更新签名软件、安全启动和安全车载通信系统正在逐步建立。目前,IDS(Intrusion Detection System)作为一种额外的安全机制正在引起OEM和供应商的关注。原创 2023-10-20 13:51:53 · 873 阅读 · 0 评论 -
汽车基础软件信息安全与AUTOSAR
随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。在这同时,汽车也慢慢成为潜在的网络攻击目标,汽车的网络安全已成为汽车安全的基础,受到越来越多的关注和重视。AUTOSAR 作为目前全球范围普遍认可的汽车嵌入式软件架构,已经集成的相关信息安全模块对实现信息安全需求有着充分的支持,例如保护车内通信或保护机密数据。由于 CP AUTOSAR 和 AP AUTOSAR 的体系结构不同,目前信息安全模块的相关技术实现也存在差异。在车载网络中,CAN 总线作为常用的通讯总线之一,其大部分数据是以明文方式广原创 2023-04-22 13:54:49 · 1531 阅读 · 0 评论 -
硬件安全HSM介绍
随着汽车智能化和网联化的发展,汽车软件面临着更加严重的安全风险问题,为了应对一系列软件安全问题,就离不开硬件安全模块这个扮演着安全之锚的角色。HSM是硬件安全模块的英语缩写,全称是Hardware Security Module。HSM可以用于车辆安全信息(比如密钥)的生成、存储以及处理,且能够隔离外部恶意软件的攻击。HSM可以用于构建、验证可靠的软件,以保护在软件加载并初次访问之前的安全启动。HSM包含有加密/解密硬件加速功能,和软件解决方案相比能够有效降低CPU负载。原创 2023-10-13 10:49:09 · 2590 阅读 · 1 评论 -
AUTOSAR RTE介绍(更新版230925)
这是最常见的RTE生成结果,但一些集成商也更喜欢为每个SWC生成单独的RTE文件(.c 和 .h),这些文件进一步包含在主RTE文件中,只是为了便于管理项目的RTE文件,这样的生成选项可能因AUTOSAR GUI工具而异。在任何基于AUTOSAR的系统中,RTE是为每个ECU单独生成的,因为每个ECU的SWC可能有自己独特的要求,因此RTE是为满足这些要求而定制的。RTE是在SWC集成之后生成的,因此RTE服务确保SWC之间,SWC与BSW之间的通信,从而确保系统按照预期工作,而不管SWC部署在哪里。原创 2023-09-25 14:08:34 · 2054 阅读 · 0 评论 -
AUTOSAR CAN主动与被动唤醒分析
从AUTOSAR网络管理的状态迁移图中,也就是状态从Bus-Sleep Mode切换到Network Mode的Repeat Message State的触发源不一样,主动唤醒是本地调用网络请求接口触发迁移,被动唤醒是接收到网络管理报文触发迁移。中的三种方式都属于被动唤醒,方式一和方式二唤醒之后都需要检查是否收到合法的唤醒CAN报文,如果不是合法唤醒CAN报文,ECU唤醒之后还会继续睡眠,方式三则只能被合法的唤醒CAN报文。主动唤醒是当ECU上电并检测到。被动唤醒是当ECU上电并。,则ECU启动网络通信。原创 2023-09-15 13:47:25 · 2065 阅读 · 0 评论 -
AUTOSAR 通信Update Bit介绍
Update Bit是AUTOSAR COM模块提供的一种机制。Update bit定义在通信矩阵中,接收方通过Update Bit能够识别Signal或Signal Group是否有更新。原创 2023-09-13 16:01:29 · 811 阅读 · 0 评论
分享