- 博客(128)
- 收藏
- 关注

原创 Classic AUTOSAR精讲系列介绍
已逐渐被大众所认可接受。随着汽车新四化的发展,越来越多的朋友加入到了汽车这个行业,未来汽车的发展,大量的功能都需要软件来实现,这也正是我们这些汽车电子软件工程师发展的良好机遇。本人先后多家主机厂和Tier1从事自动驾驶,ADAS,车联网开发工作,目前在一家汽车零部件公司从事车联网相关工作,为了能和更多的朋友交流,我创建了。
2023-02-08 13:33:10
3178
原创 浮点数在C语言开发中为什么不精确?
浮点数在C语言中不精确的根本原因在于其二进制表示方式的局限性。IEEE 754 标准的浮点数只能近似表示某些十进制小数,并且在运算过程中会引入舍入误差。在实际开发中,我们需要理解浮点数的工作原理,并采取适当的策略来应对精度问题。通过使用高精度库、避免直接比较浮点数、减少运算次数等方法,可以有效降低浮点数精度问题对程序的影响。希望本文能帮助你更好地理解浮点数在C语言中的行为,并在开发中避免常见的陷阱。
2025-01-10 15:05:59
827
原创 C语言知识大全
在计算机科学的广阔天地中,C语言犹如一颗璀璨的明珠,历经数十年依旧闪耀着光芒。自从1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室创造以来,C语言不仅成为了系统编程、嵌入式开发和操作系统领域的中坚力量,更是影响了后续无数编程语言的设计和发展。本篇文章旨在为您提供一份全面的C语言知识大全,无论您是初窥门径的新手,还是已经沉浸代码多年的老手,都能在这里找到宝贵的信息和深刻的见解。
2024-12-25 14:31:42
267
原创 函数分派表:提升C语言代码性能与优雅度
函数分派表,也称为跳转表,是一种通过函数指针数组实现的技术。这种数组允许程序直接跳转到对应的函数执行,避免了传统Switch语句的逐个条件判断,从而提高了性能。fill:#333;color:#333;color:#333;fill:none;
2024-12-25 13:42:01
363
原创 《李想 · 产品实战16讲》学习笔记分享
基于强硬的管理手段和精细的数字化体系,通过提取最佳实践的方式,把控生产环节的每个指标,通过最佳实践的共享,让生产链条、销售链条上的每一个人,都能向最佳实践靠拢。例:扶手,提出两个关键选择:我们选择用户长期的身体安全,我们选择解决团队当下面临的压力更安全,更舒适,更便捷,用上述案例与团队解释、沟通,什么叫始终把用户价值放在第一位。2、店长们需要建立对本地市场环境的深度感知,制定自己的销量目标,然后最关键的是,还要自己去判断,实现目标,需要投入哪些资源,投入多少资源,如何有效地使用资源。例: 零售漏斗模型。
2024-12-23 16:43:56
3468
原创 【实践】CAN DBC的大小端与信号读写算法
在进行CAN DBC文件通信开发时,我们经常会遇到两种不同的字节序:Intel和Motorola。这两种字节序在业界都非常普遍,但在一个系统中通常只采用其中一种。本文将探讨CAN DBC文件中Intel和Motorola格式的差异,并指导如何编写代码以从原始CAN数据中读写信号,旨在帮助开发者在软件开发中快速构建CAN信号交互层。在深入了解字节顺序之前,我们需要先理解 LSB 和 MSB 的概念。
2024-12-19 06:00:00
262
原创 CAN总线如何识别错误
由于CAN通信严格按照CAN规范定义的帧格式帧格式进行报文封装传输,CAN控制器在监测总线电平位时明确知道当前位、后续位属于帧格式中哪个位场,以及属于位场的第几个位,当接收到一个属于帧格式固定形式的位时,如果实际电平值与帧格式定义不一致,则检测到一个格式错误。作为发送器的节点发送CAN报文时CRC序列由规定的计算方法确定,作为接收器的节点从总线上接收完数据场最后一个数据位(没有数据场时是接收完控制场的最后一个位)后,如果接下来接收到实际的CRC序列与接收器的计算结果不一致,便检测到CRC错误。
2024-12-09 09:44:11
663
原创 AUTOSAR中不同Port Interface介绍
本篇文章为大家介绍AUTOSAR中不同类型的端口接口(Port Interface),帮助大家理解不同Port Interface的作用,在设计时进行合理的选择。AUTOSAR支持六种类型的应用端口接口。分别如下:• 发送者接收者(Sender-Receiver)端口接口(ASWC)• 客户端服务器(Client-Server)端口接口• 校准(Calibration)端口接口• 模式端口接口• 非易失性数据端口接口• 触发接口。
2024-11-29 10:37:50
265
原创 AUTOSAR中不同的SWC介绍
ECU抽象软件组件提供访问ECU指定IO的能力。这些服务通常通过客户端-服务器PPorts(通信端口)提供,并由传感器-执行器软件组件使用。
2024-11-29 10:12:07
334
原创 CCC数字钥匙AID
( Java Card Runtime Environment )将会最先调用这个,所有的初始化和分配内存的操作在这个里面实现,可以获取卡外实体传进来的一些应用初始化参数。目前常见的NFC智能IC卡上运行着 JavaCard 虚拟机,NFC智能 IC 卡上可以运行由精简后的 Java 语言编写的卡应用(简称 Applet)。NFC应用的AID相关操作,包括注册和删除应用的AID、查询应用是否是指定AID的默认应用、获取应用的AID等。Applet 侧重于数据的处理,没有类似MCU的相关 I/O 功能。
2024-11-27 11:13:39
479
原创 UWB数字钥匙安全测距和场景应用
然而,经过深入的检查,这是使许多新的汽车安全,安全和便利应用的基本需要。最后,当他们接近1区时,车辆将解锁,并可以配置高级功能,如启动车辆,将气候控制设置为驾驶员所需的设置,设置信息娱乐偏好,如音乐/播客和其他类型的舒适控制功能。然后,车辆可以确定与乘客的距离,反之亦然。CCC R3是基于NFC/BLE/UWB作为基础的无线电技术的使用,该系统采用非对称密码技术对车辆和设备进行相互签名认证,且只对已知车辆显示身份,只有使用和车辆存储的公钥相对应的私钥签名计算,车辆才能进行解闭锁、启动发动机等功能。
2024-11-27 10:29:19
2020
原创 RTE接收信号的几点特性
本文介绍了Never received status,enable Update,Alive Timeout三个信号接收的特性功能,在实际工作中这三个特性可以结合使用,来实现一些特定需求的开发。
2024-11-21 15:47:41
221
原创 【实践】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
429
原创 整车开发术语表
整车开发术语表英文缩写英文全称中文含义100% Cal100% Calibration100%标定100% IVER100% Integration Vehicle Engineering Release100%集成车工程发布100% PPAPAll parts at full PPAP for Vehicle program为了整车项目,所有零件须完全通过PPAP100% SVER100% Structure Vehicle Engineering
2024-11-19 09:06:07
879
转载 AUTOSAR中CAN信号触发COM回调的机制
在CAN驱动中,回调函数通常是通过中断或的方式触发的。当CAN控制器接收或发送CAN数据帧时,CAN控制器会产生相应的中断或状态变化,在中断服务例程(ISR)中或轮询循环中,CAN驱动会调用相应的回调函数来处理这些CAN事件。
2024-11-18 14:59:32
251
原创 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
138
转载 自我觉醒是人生最大的修行
在辛克莱彷徨成长的路上,“德米安”以不同的身份面目出现,是德米安,也是贝雅特丽齐、皮斯托琉斯、夏娃夫人……有一次,德米安和辛克莱所在的班级一起上课,老师讲述经典书籍中的一个故事,哥哥杀死了弟弟,因此臭名昭著。辛克莱在一次受伤昏迷中,德米安向他临终告别,以后不能再帮他对付克罗默之类的人了,他必须倾听心底的声音。直到有一天,他对女孩贝雅特丽齐一见钟情。在贝克的带领下,辛克莱迅速堕落迷失,终日混迹酒馆,寻欢作乐,成了一群混混的头领。德米安是辛克莱的另一个“自我”,或者说“超我”,引领他不断地寻找自我,走向觉醒。
2024-11-15 09:43:55
63
原创 VECTOR DaVinci从0到1搭建工程
基于VECTOR DaVinci创建AUTOSAR工程前,我们一般要准备好通信数据库(dbc,arxml)文件,如果需要诊断功能还需要诊断数据库cdd文件等输入文件。
2024-11-13 13:50:28
933
原创 AUTOSAR Callback和Callout
callback函数提供了标准化的通信机制,保证了不同组件之间的兼容性,而callout函数则允许开发者在满足基本框架的同时,实现特定的、个性化的需求,增加了系统的可扩展性和适应性。
2024-11-13 09:24:21
304
原创 VECTOR DaVinci Configurator中的Modules说明
使用过VECTOR MICROSAR的朋友们都知道,当我们开发AUTOSAR时,需要在DaVinci Configurator中导入Modules。而不同的Modules图标颜色也不一样,下面我们介绍下不同Modules颜色的意义,以及如何在Configurator中导入Modules。
2024-11-12 13:58:31
285
原创 FlexRay介绍
由于晶振频率之间的差异会产生不同长度的Microtick,因此为获得同步的Macrotick,不同FlexRay节点的Macrotick可能会由不同数量的Microtick构成。FlexRay节点必须遵守精确定义的通信调度表,该调度表会在每个通信周期为每个FlexRay报文分配特定的时隙,规定所有FlexRay报文的发送时间。如果使用总线型拓扑,根据FlexRay规范,当FlexRay簇的通信通道的数据传输速率为10 Mbit/s时,任意两个FlexRay节点之间的最大距离不得超过24米。
2024-11-08 13:20:20
1132
原创 《时间的秩序》:探索时间的奥秘
时间的秩序》让我们看到了时间不仅仅是一个简单的流逝过程,它是一个复杂的、多层次的现象。无论是在相对论的框架下,还是在量子引力的研究中,时间都表现出与我们直觉相悖的奇妙性质。罗韦利通过这本书,揭示了时间不仅是物理学中的核心主题,也是哲学和意识科学中的关键问题。通过对时间本质的多维度剖析,罗韦利不仅改变了我们对时间的传统理解,也让我们反思时间如何影响我们的存在和认知。这本书是物理学、哲学与人类经验交织的精彩之作,值得每一个对时间和宇宙有兴趣的读者细细品味。
2024-11-08 10:46:14
892
原创 《程序员修炼之道》精华总结
程序员的修炼是一条长期而持续的道路。通过不断学习新技术、提高解决问题的能力、加强沟通协作、管理职业生涯以及保持良好的生活习惯,程序员能够在技术和职业发展的道路上不断前行,成为一个更出色的开发者。希望这篇总结能帮助你在程序员的修炼道路上找到方向,并在未来的技术生涯中不断成长和进步!
2024-11-06 15:39:57
1152
原创 FreeRTOS中的互斥锁概念与相关技术
FreeRTOS中的互斥锁是多任务并发访问共享资源时的基本同步机制。通过适当使用互斥锁,开发者可以避免数据竞争和资源冲突。在使用互斥锁时,需注意优先级反转、死锁、递归锁等技术,以确保系统的稳定性和实时性。优先级反转:当高优先级任务被低优先级任务占用资源时,可以通过优先级继承来解决。死锁:多任务在竞争多个资源时可能发生死锁,开发者需要设计策略来避免或检测死锁。递归锁:允许任务在持有锁的情况下多次获得锁,适用于递归函数的场景。合理利用这些同步机制,有助于开发出高效、可靠的实时系统。
2024-11-06 15:15:55
1051
原创 git查看历史提交中文件的变化
在版本控制系统中,Git以其强大的日志和差异分析功能而闻名。这些功能帮助开发者追踪文件的变更历史和理解代码的演进。本文将深入探讨四个Git命令:、和、,这些命令对于理解项目历史和代码变更至关重要。命令用于列出每次提交中被修改的文件。这个命令只显示文件名,不显示其他提交信息,使得我们可以快速浏览哪些文件在历史中被修改过。当你需要快速查看一个分支或特定提交中有哪些文件被修改,而不需要关心具体的提交信息时,这个命令非常有用。这将列出当前分支上所有提交中被修改的文件。命令不仅列出每次提交中被修改的文件,还显示这些
2024-11-04 13:28:02
1123
转载 FreeRTOS为什么将SysTick和PendSV的优先级设置为最低
在上一篇文章中,我们详细分析了PendSV的功能,也分析了SysTick和PendSV结合,实现OS任务调度,简单的分析了SysTick的优先级。我觉得有必要针对SysTick的优先级,单独写一篇文章分析。嵌入式实时OS的【实时】不仅仅是OS对任务调度及时,更重要的是要求嵌入式OS具有【可剥夺/抢占】的特性,既允许高优先级任务抢占低优先级任务,又要允许外部中断能够抢占OS运行,事实上,我个人理解,之所以将SysTick的优先级设置为最低,就是为了最大限度的保证外部IRQ的优先级高于OS。
2024-08-29 14:15:59
266
原创 AUTOSAR OS详细介绍及配置说明(更新版20240829)
AUTOSAR OS扩展了OSEK/VDX标准中的操作系统,所以本文结合OSEK/VDX的标准来介绍AUTOSAR OS,并借助Vector Configurator讲解AUTOSAR OS的配置。源于德语,英文意思是:“车载电子设备的开发系统和接口”,它是一个标准,用来产生嵌入式操作系统的规范,通讯协议栈,和汽车网络管理协议,也产生其他相关的规范。OSEK被设计来提供整车的各种电子控制单元的软件标准架构。
2024-08-29 14:04:08
641
原创 汽车电子KL15,KLR,KL30等术语解释
参考车辆点火开关的四个档位:LOCK(关闭档)、ACC(附件档)、ON(点火档)、START(起动档),这是写给车主用户看的。实际上,在汽车电子行业,它们分别对应4种电源模式:OFF模式、ACC模式(KLR)、RUN模式(KL15)、CRANK模式(KL50)。以上4个模式,在无钥匙启动系统也是一样的,可以自己体验下短按上电进入ACC模式,长按点火就是CRANK,点火后松开。KL作为术语,是德语’klemme’的缩写,代表连接器或连接。
2024-08-01 09:55:08
1920
原创 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
368
原创 关于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
376
原创 AUTOSAR NM介绍
NM是Network Management的简称,是出于具体总线网络管理模块与ComM之间的适配层,为ComM提供所有总线网络管理的服务。在AUTOSAR BSW 层中,其上层是通信管理模块(ComM),下层是具体总线网络管理模块(如CanNm,J1939Nm,FrNm,LinNm,UdpNm等)。
2024-07-09 13:52:20
778
原创 CAN总线Bus-off机制介绍及恢复策略说明
CAN通信Bus-off即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Bus-off的原因是因为发送错误大于255,在此状态节点不能收发报文。以上三种错误状态标识发生故障的严重程度,总线关闭态是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或者应答总线上的报文,也就意味着不能再对总线有任何影响。
2024-07-04 10:41:49
3652
转载 静态链表详解(C语言版)
7char data;int cur;}component;//将结构体数组中所有分量链接到备用链表中//初始化静态链表//向链表中插入数据,body表示链表的头结点在数组中的位置,add表示插入元素的位置,a表示要插入的数据//删除链表中含有字符a的结点//查找存储有字符elem的结点在数组的位置//将链表中的字符oldElem改为newElem//输出函数//从备用链表中摘除空闲节点的实现函数//将摘除下来的节点链接到备用链表上。
2024-06-28 13:38:22
2533
原创 git commit撤销修改
为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。如果提交了代码,却发现有不需要提交的文件。可以用git reset指令。git reset 命令用于回退版本,可以指定退回某一次提交的版本。参数,它会删除回退点之前的所有信息。**注意:**谨慎使用。可以使用 ~数字表示。
2024-06-21 13:27:58
586
原创 UDS诊断术语表
UDS诊断术语表Abbreviation/缩写Description/说明翻译BRSbit rate switch比特率开关BSBlockSize块大小CANcontroller area network控制器局域网CAN FDcontroller area network with flexible data rate and larger payload as defined in ISO 11898-1ISO 11898-1中定义的具有灵活数据
2024-06-05 09:22:06
405
原创 MISRA C规则解读
必需。类型应被显式声明。必需。函数应以原型形式命名参数。必需。所有对象和函数的声明需要使用完全相同的名字和参数。必需。当定义有外部链接的对象或函数时,兼容声明是可见的。必需。外部变量或函数应被在仅一个文件内被声明过。必需。有外部链接的标识符应有一个确切的外部定义。建议。若函数和对象仅被一个单元引用,最好不定义外部链接。必需。静态存储类说明符应在所有具有内部链接的对象和函数的声明中使用。建议。如果一个对象的标识符仅在一个函数内出现,该对象应被定义在一个块域中。必需。
2024-06-04 15:42:39
842
原创 AUTOSAR OS的启停
目标硬件必须在OS启动之前被初始化OS在StartOS()调用之前不会运行tdown Hook在执行ShutdownOS() API调用期间被调用。
2024-05-17 09:05:43
415
转载 __attribute__((weak))介绍以及用法
在c语言中,函数和初始化的全局变量是强符号,未初始化的全局变量是弱符号。强符号和弱符号的定义是连接器用来处理多重定义符号的,它的规则是:不允许多个强符号;如果一个强符号和一个弱符号,这选择强符号;如果多个弱符号,则任意选一个。
2024-05-13 13:36:38
1031
How to Integrate E2E in MICROSAR
2024-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人