自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 收藏
  • 关注

原创 汽车诊断简介

答案是肯定的,特别是电池的健康状态,电动汽车的运行是否节能(以减少污染物排放)等,这些需要有可以读取的定量数据来支撑。所以2022年产生了新的协议ZEVonUDS(Zero Emission Vehicle),即SAE J1979-3,定义了诊断仪获取新能源汽车动力系统数据的通信规则。比如,OBDⅡ定义的DTC只有两个字节,那么会出现可定义的DTC数量不够用的情况;OBDⅡ的故障存储不支持扩展数据的读取等。就通信服务格式而言,ZEVonUDS可以理解成OBDonUDS的子集,也是基于UDS服务进行通信的。

2025-05-11 20:44:48 605

原创 C语言和Python在负数取余运算(%)上的差异

语言除法 / 舍入方向取余 % 符号规则数学保证C向零截断与被除数 a 同号Python向下取整(负无穷)与除数 b 同号。

2025-05-11 20:19:52 787

原创 GNU 链接脚本

官方手册 The GNU linker目录3 链接脚本3.1 基本链接脚本概念3.2 链接脚本格式3.3 简单链接脚本示例3.4 简单链接脚本命令3.4.1 设置入口点3.4.2 处理文件的命令3.4.3 处理对象文件格式的命令3.4.4 为内存区域指定别名3.4.5 其他链接器脚本命令3.5 为符号赋值3.5.1 简单赋值3.5.2 隐藏3.5.3 提供3.5.4 提供隐藏3.5.5 源代码参考3.6 SECTIONS 命令3.6.1 输出部分描述3.6.2 输出部分名称3.6.3 输出部分地址3.6.

2024-10-20 21:22:42 926

原创 CAN总线简介

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。

2024-09-01 20:40:50 1924 1

原创 AUTOSAR CAN Network Management

AUTOSAR Can NM

2024-08-04 00:02:01 1202

原创 MISRA C

MISRA C 是由汽车产业软件可靠性协会(Motor Industry Software Reliability Association)提出的 C 语言编程标准,可提高嵌入式系统软件的安全性和可靠性。这些指南由汽车制造商、零部件供应商和工程咨询公司合作的汽车工业软件可靠性协会 (MISRA) 发布。MISRA C 指南最初仅针对汽车行业,发展过程中,其他产业也逐渐开始使用 MISRA C,包括航空航天和国防、工业自动化、电信、国防、医疗设备、铁路等领域。

2024-06-30 22:23:20 916

原创 ISO26262标准

ISO 26262(国际功能安全标准)是一个涵盖整个汽车产品开发过程的汽车功能安全标准。ISO 26262继承或改编自工业自动化行业的安全要求标准IEC61508,但专门为汽车行业量身定制。最新版本是ISO26262-1:2018。它包括诸如需求分析、安全分析、质量管理、设计、实现、集成、验证、确认和配置等活动。这适用于道路车辆,如摩托车、传统的汽油汽车和卡车、混合动力汽车和自动驾驶汽车。汽车应用的功能安全管理汽车应用软件级别的产品开发汽车应用的概念阶段汽车应用软件架构设计的系统级产品开发。

2024-06-29 21:39:32 931

转载 CAN总线错误帧及排查方法简介

CAN帧有多种格式,错误帧作为CAN帧中独特的一种,了解其作用,类型与产生原因,对于进行测试以及开发有很大的帮助,本文将对错误帧的相关基础知识以及后续的分析排查进行介绍。

2024-06-23 22:09:55 987

转载 CAPL在诊断中的应用,你值得了解!

针对第二种方式,因为CDD文件中已经定义了ECU支持的诊断服务、通信参数等参数,所以我们只需要把我们在CDD中定义好的诊断服务发送出去即可,如下图所示:CAPL 代码实现下面就让我们来学习一下诊断中常用的一些CAPL函数。在我们学习常用CAPL函数之前,先来了解一下诊断处理事件:(1)on diagRequest NewRequest:进行ECU仿真时,收到诊断请求时调用。(2)on diagResponse NewResponse:Tester端收到诊断响应时调用。

2024-06-23 21:33:13 317

转载 英飞凌CANFD一次采样点和二次采样点

采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点。在我们了解采样点的测试方法之前,我们需要先了解CAN报文的一个位时间是如何组成的。CAN控制器的最小时间周期称作时间份额(Time quantum,简称Tq),它是通过对芯片晶振周期进行分频而得来的。一个位时间由若干个Tq组成(通常为8到25个),同时根据功能分为4个阶段:同步段、传播段、相位缓冲段1和相位缓冲段2。同步段(Sync_Seg):用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq;

2024-06-22 23:18:33 2664

转载 ISO15031支持的汽车OBD口读取的数据项

OBD

2024-03-10 21:20:46 987

转载 诊断OBD(ISO15031-5)

OBD

2024-03-10 21:16:34 2751

转载 一个DBC文件的诞生(CANdb++)

Byte Order:表示数据格式,有“Motorola(大端模式)”,“Intel(小端模式)”可选,根据实际情况选择;File新建,根据自己的需要选择模板,这里我们选择CANoe类型的,它们的区别在于一些文件属性不一样。发动机和大灯都是发送节点,仪表盘是接收节点,显示发动机的状态和速度,显示大灯的状态。其实到这一步就已经差不多了,有了信号,有了报文,有了节点、它们之间也都联系了起来。每一个信号其实都有自己的数值表,或者编码表,什么样的数值代表什么样的物理意义。

2024-01-30 22:17:44 547

转载 AutoSAR—Davinci CFG中CAN模块配置(下)

上篇对Davinci CFG中CAN模块配置参数介绍了一半:Davinci CFG中CAN模块配置(上)这篇继续……

2024-01-30 21:48:03 921

转载 AutoSAR—Davinci CFG中CAN模块配置(上)

上篇文章介绍了一个DBC文件的诞生过程,它是AutoSAR CAN模块配置的前提。CAN模块的配置是一块很难啃的骨头,作者也是初学,这篇文章只是给大家介绍一个CAN模块在Davinci CFG配置过程中会使用到的一些参数选项,打好基础。关于CanGeneral配置,放在下一篇博客里,这些参数也太多了,查不过来了。

2024-01-30 21:41:52 1252

转载 AUTOSAR学习笔记06-Communication Stack之ComM模块

前面分别介绍了ComNm和ComSM两兄弟,这一章则来看看两兄弟的老板,那就是Communication Stack中管理层中最核心的一个模块,那就是ComM模块。前面已经分别介绍了干活两兄弟NM模块和SM模块,NM模块主要负责的是基于总线报文管理ECU休眠,SM模块则是控制总线通信状态,这两兄弟其实都是实际执行者,ComM模块则是真正的总线管理者,用户只要对ComM模块告知自己想要的通信模式,ComM模块则会直接协调NM和SM两兄弟直接干活以达到用户想要的通信模式。

2024-01-23 22:28:51 2963

转载 一文详解CAN总线错误帧

在这一状态下,节点Node_A检测到一个错误就会发送带有被动错误标志的错误帧,因为被动错误标志是连续六个隐性位,所以这个时候总线上正在传输的报文位流不会受到该被动错误帧的影响,其它的节点该发送的发送,该接收的接收,没人搭理这个发送被动错误帧的节点Node_A。在这一状态下,节点检测到一个错误就会发送带有主动错误标志的错误帧,因为主动错误标志是连续六个显性位,所以这个时候主动错误标志将会“覆盖”掉总线上其它节点的发送,而之前在CAN总线上传输的报文就被这“六个连续显性位”破坏掉了。

2024-01-23 22:18:52 2263 2

转载 AUTOSAR架构下关于CanNm的几点思考

CanNm模块配置完成后,基本不需要和其他非标准AUTOSAR模块进行交互(除了user data数据的使用),但是在深入理解CanNm模块是发现一下几个问题还是比较疑惑:(1)Dcm通过BswM控制CanNm报文的Enable和Disable后会影响CanNm状态机吗?(2)谁来触发CanNm状态机跳转,什么条件下怎么触发?(3)CanNm怎么知道是主动(本地)唤醒还是被动(NM网络)唤醒?本文就来回答这些问题。

2024-01-23 21:59:46 840

转载 CP AUTOSAR CAN 协议栈简介

针对英飞凌芯片中的CAN模块,手册中已经比较详细,主要针对该芯片的整个架构做简单介绍,下图是TC2xx的CAN的基本架构:在该架构图对于CAN功能主要包含几大方面,Port、中断、系统总线接口、时钟、CAN核心模块(MultiCAN)。其中,Port用于选择CAN Note的Tx/Rx引脚选择;时钟主要用于选择CAN时钟的来源,支持晶振时钟、PLL输出时钟等,可以根据实际需要进行选择;总线接口主要用于Core对CAN外设的控制;

2024-01-22 23:13:15 808

转载 AUTOSAR通信篇—CanIf模块

CanIf位于底层CAN驱动、CAN收发器和上层通信服务层、CanTp、PduR之间。它表示上层通信层的CAN驱动程序服务接口。其中涉及众多API函数和回调函数,具体功能最好结合函数的定义和应用场景理解。

2024-01-21 22:25:40 2651 1

转载 CAN通信的采样点

而单采样点一般位于相位缓冲段1之后,采样点顾名思义,从名字就可以看出,是读取总线电平,并解释各位的值的一个时间点,采样点对CAN总线来说也非常重要,尤其在组网的时候,多个节点尽量保持同一个采样点,且最好在但不超过7/8位时间点上。熟悉CAN总线的朋友应该都知道,CAN通信中的每一位分为四个部分,在CAN中线的标准里都有明确描述,之前在CAN总线的相关推送里也讲过几次,尤其在配置CAN总线通信波特率的时候,这几个时间段都要在相关寄存器配置。而CAN组织CiA也对采样点进行了详细的描述。晶振时钟频率11M,

2024-01-21 20:17:39 1217

转载 【AUTOSAR-CAN】CAN的 “BasicCAN架构” 和 “FullCAN架构”

将本文讨论的 “BasicCAN” 和 “FullCAN” 称为 ”BasicCAN架构“ 和 ”FullCAN架构”,具体原因后面解释)

2024-01-21 20:09:53 659

转载 AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽

通讯协议栈几乎是CP AUTOSAR中最庞杂的一块。由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协作!),且名词概念众多,入门很难。网络上关于各个模块的详细介绍浩如烟海,其深度也让人叹为观止。但没有一篇文章把这些模块串起来!这就导致对于初学者来说,往往耐心的把各个模块的详细介绍都看完,甚至把AUTOSAR标准文档读完,依然不能建立一个全局的思路。

2024-01-21 19:30:15 2951 2

转载 Dem模块之故障数据存储策略

事件存储指当事件发生故障时将相关的数据存储到Nvm中,事件存储分为primary event memory 、user defined event memory、mirror event memory和permanent event memory。

2023-12-02 22:58:47 812

转载 Dem模块之故障状态管理策略

事件状态管理主要描述从SW-Cs和BSW上报结果到Dem模块,Dem模块同步处理monitor状态,同时Dem模块还会异步处理事件的DTC status,最后Dcm模块可以通过Dem模块API接口获取相关的状态信息。

2023-12-02 22:53:46 602

转载 Dem模块之Debounce策略

Dem模块提供了几个优化信号质量的Debounce策略,包括基于计数的Debounce算法、基于时间的Debounce算法以及特定的Debounce算法。Dem模块可以通过配置事件的DemDebounceAlgorithmClass容器来选择相应的Debounce算法。

2023-12-02 22:43:46 704

转载 Dem模块之Vector Configurator Pro配置(Event和DTC细节配置)

DemFreezeFrameRecNumClassRef:定义事件的快照记录号列表,主要是DemTypeOfFreezeFrameRecordNumeration设置为CONFIGURED时使用。DemDTCSeverity:定义DTC的等级,19 09服务的过滤器。DemJ1939FreezeFrameClassRef:定义J1939协议快照数据类。DemMaxNumberFreezeFrameRecords:定义最大支持的快照数量。DemFreezeFrameClassRef:定义快照数据记录的列表。

2023-12-02 22:38:26 637

转载 Dem模块之Vector Configurator Pro配置2

若DemNvRamBlockIdType为ADMIN、STATUS、MIRROR、PERMANENT、FREEZEFRAME、OBDIUMPR、DEBOUNCE、AVAILABILITY、DTR、CYCLECOUNTER、AGING类型,不需要配置该参数。DemDataElementDataType:定义外部数据的类型,包括BOOLEAN、SINT32、SINT16、SINT8、SINT8_N、UINT32、UINT16、UINT8、UINT8_N。若禁用,19服务读取时,Dem都需要去读取相应的数据。

2023-12-02 22:26:04 1198

转载 Dem模块之Vector Configurator Pro配置1

AGING_TYPE_3:如果在此周期中测试事件为PASSED而从未测试事件为FAILED,则启动老化的初始触发器是操作周期的结束。AGING_TYPE_2:如果在此周期中测试事件为PASSED而从未测试事件为FAILED,则启动老化的初始触发器是操作周期的结束。老化计数器在老化周期结束时递增。DEM_AGING_AFTER_HEALING_ALL_DTC:与DEM_AGING_AFTER_HEALING设置相似,但是也影响到没有指示的事件(即没有设置WIR位),事件只能在重启之后开始老化。

2023-12-02 21:11:45 1678

转载 Autosar Dem模块介绍

诊断事件管理(Diagnostic Event Management)模块主要负责故障事件的处理、故障数据的存储和管理。此外,DEM模块向DCM模块提供故障信息(DTC),DEM模块给应用层和BSW的其他模块提供了接口。DEM模块主要目的是为汽车制造商和零部件供应商定义通用的诊断故障存储功能(diagnostic fault memory)。AUTOSAR标准中对Dem模块最上层分了两菜单栏(参见图1),分别是DemConfigSet,DemGeneral。

2023-12-02 20:34:56 343

转载 Dcm模块之Vector Configurator Pro配置(DSP子模块)

如果设置,Dcm会在DisableDTCSetting请求开始的时候监控,如果不满足规则,Dcm会自动启动DTC。上图中CANA应用报文的TX规则:接收到“DCM_DISABLE_RX_TX_NORMAL”和“DCM_DISABLE_RX_TX_NORM_NM”就关闭CANA应用报文的TX功能,反之开启CANA应用报文的TX功能。DcmDspDDDidCheckPerSourceDid:Dcm在接收到0xF200-0xF3FF范围内的0x22和0x2A服务时会执行DIDs和内存块检查等预条件检查。

2023-12-02 20:31:41 1156

转载 Dcm模块之Vector Configurator Pro配置(DSD子模块)

之前简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置DSD子模块,并实现客户的需求。DcmDsdServiceRole:每个Bit都有特定作用,设置为1允许执行,设置为0拒绝执行。设置为1之后,收到对应的诊断服务之后Dcm会自动拒绝任何请求。DcmDsdSubServices:与DcmDsdService的配置大同小异,这里不再赘述。DcmDsdSidTabServiceId:诊断服务ID。一个具体诊断服务的配置容器。

2023-12-02 20:23:16 353

转载 Dcm模块之Vector Configurator Pro配置(DSL子模块)

DcmDslProtocolRxAddrType:指定请求的寻址类型,一般在导入新DBC后需要检查一下,如果没有自动更新,需要手动区分出功能寻址与物理寻址,不然可能会导致诊断报文无法接收。高优先级的协议可能会抢占低优先级的协议。一般也会自动更新,但是也需要检查,不然也会导致诊断报文无法接收。DcmDslProtocolRxBufferID:引用已配置的诊断缓冲区,该缓冲区用于接收协议的诊断请求。DcmDslProtocolTxBufferRef:引用已配置的诊断缓冲区,用于传输协议的诊断响应。

2023-12-02 20:19:26 650

转载 Dcm模块之Vector Configurator Pro配置

若设置为disable,Dcm会先根据配置跳转到FBL,之后FBL会回复肯定响应。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。若设置为disable,Dcm会接收所有请求,但是不处理[0x40,0x7F]U[0xC0, 0xFF]范围内的诊断请求。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。反之Dcm不恢复信息直接启动。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。

2023-12-02 20:14:41 503

转载 Autosar Dcm模块介绍

诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。主要功能贯穿汽车的开发生产及售后等过程,如开发过程中EMC、DV等实验均可使用诊断服务实现,生产过程中的软件下载更新、ECU产线EOL、汽车产线EOL等、售后过程中读取DTC、控制输出调试功能等。

2023-12-02 20:10:24 379

转载 实现功能寻址不响应、关闭抑制肯定响应、NRC否定响应

我们先来初略的查看下Davinci cfg工具生成的代码,对比代码可以看到,在Dcm_Lcfg.c中定义了一个Dcm_CfgDiagSysNotificationInfo结构体数组,包含两个函数(即步骤3中创建的函数名)。(2)某个UDS诊断服务不支持抑制肯定响应的情况下,ECU接收到带有抑制肯定响应的SID诊断服务,如何实现上报否定响应NRC12。(1)某个UDS诊断服务不支持功能寻址的情况下,ECU接收到功能寻址的该UDS诊断服务,如何实现不响应该诊断服务。19 81 FF请求,回复NRC12。

2023-12-02 20:06:50 3134 2

转载 汽车网络信息安全技术之AUTOSAR SecOC,非常详细的学习笔记,由浅入深

那我们就来看一下安全报文由哪些部分组成:报头(header):可用来指明安全PDU的长度真实的I-PDU(Authentic I-PDU):需要被保护的数据新鲜度值(Freshness Value)和身份验证器(Authenticator):通常使用消息认证码,即Message Authentication Code,简称MAC由于SecOC机制需要占用总线带宽,因此一般适用于CANFD通讯网络。

2023-11-25 22:44:06 5893 2

转载 Autosar CyberSecurity之HSM和CSM, CryIf,Crypto Driver之间的关系,科普分享,理论讲解软件配置

首先按照惯例,先对汽车网络安全做个科普。随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。同时,汽车也慢慢成为潜在的网络攻击目标。这边不做过多赘述,只是强调一下 网络安全和功能安全的区别,经常会有人疑惑这两者之间的关系,这边引用一张vector的图,非常清晰的展示了两者之间的区别:功能安全是保护人为目的的,车如果发生故障的话,目的是让车能尽可能的可控,不会失控去对人做出伤害网络安全是反过来保护车辆系统的,防止黑客的入侵,控制或者窃取车辆信息,使车辆不可控,或者干一些违法的事情。

2023-11-25 22:24:48 2910 3

转载 Autosar CyberSecurity之CSM, CryIf,Crypto Driver学习笔记,由浅入深详细,理论讲解软件配置

首先,先放一张CSM CryIf, Crypto Driver的Autosar架构图,这张图是精华,后面我们会详细讲解。由浅入深,这篇文章中,我会讲到:为什么会存在 CSM, CryIf,Crpto Driver (Why)CSM, CryIf,Crpto Driver每层都做了什么(What)Vector DaVinci configuration(达芬奇)工具怎么实现这三层的配置(How)

2023-11-25 21:10:06 1389

转载 汽车信息安全之锚:HSM

说起信息安全和加解密,我们很容易会在脑海中浮现出锁和钥匙。那我们来想象一个场景:假设一位父亲有三个儿子,他给每个儿子各买了一台掌上游戏机。为避免他们沉迷游戏,父亲把每台游戏机都锁到一个小盒子里。盒子归几个孩子自己保管。怎么保证儿子不会偷偷拿去玩呢?简单啊,钥匙由父亲来保管。儿子想玩的时候怎么办?简单啊,把盒子拿来父亲这里解锁。儿子想玩的时候,父亲能把钥匙给儿子吗?肯定不行啊,儿子自己去配一条钥匙咋办。那为啥不干脆把盒子也存父亲这里?因为父亲资源有限,不想随身携带盒子啊。

2023-11-25 20:54:37 887

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除