
汽车电子基础软件
文章平均质量分 73
汽车电子嵌入式软件开发
优惠券已抵扣
余额抵扣
还需支付
¥15.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
梅尔文
专注于自动驾驶的车控系统开发,包括基础软件,功能安全,自动驾驶功能与算法,打造“技术+合规“双核心能力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MCU-基于TC397的启动流程
TC397芯片的启动流程分为三个关键阶段:固件启动(BootFirmware)、Bootloader引导和应用程序启动。BootFirmware作为硬件信任根,包含SSW基础初始化、CHSW自检和BSL应急刷写通道。Bootloader承担安全验证和程序引导功能,支持双分区(AB-SWAP)和双引导方案(PBL/SBL)。安全启动通过校验机制确保软件完整性,提供三种可选技术方案。应用程序启动阶段实现软件双分区管理,支持SOTA更新。整个流程体现了汽车电子系统的安全设计理念,通过硬件级保护与软件验证相结合确保原创 2025-08-09 16:37:30 · 157 阅读 · 0 评论 -
MCU-基于TC397的双BootLoader设计方案
原创 2025-08-07 20:00:15 · 124 阅读 · 0 评论 -
MCU-TC397的UCB初识
TC397芯片的UCB(UserConfigurationBlock)是24KB Flash存储空间,包含48个512字节的配置项(地址0xAF400000-0xAF405FFF)。固化在BootRom中的SSW启动软件通过读取UCB配置来决定芯片启动行为,包括跳转地址、RAM初始化方式、LBIST操作以及HSM使能等。用户通过配置UCB可定制启动流程和芯片功能。原创 2025-08-07 19:39:56 · 118 阅读 · 0 评论 -
ADAS域控软件架构-网络管理状态与唤醒机制
文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。原创 2025-07-23 20:28:24 · 70 阅读 · 0 评论 -
AUTOSAR-多核看门狗监控机制
AUTOSAR-多核看门狗监控机制原创 2025-05-15 10:46:57 · 159 阅读 · 0 评论 -
AUTOSAR-UDS与DoCAN的关系
AUTOSAR-UDS与DoCAN的关系原创 2025-05-15 10:40:36 · 79 阅读 · 0 评论 -
AUTOSAR-CAN总线仲裁机制
AUTOSAR-CAN总线仲裁机制原创 2025-05-15 10:30:49 · 211 阅读 · 0 评论 -
AUTOSAR-NvM调用Fee向flash的物理地址写数据的链路逻辑
32 位的虚拟地址【16 位用于块号(Block Number)(标识逻辑块,最多允许 65536 个逻辑块,获取物理基地址)】 + 【16 位用于块地址偏移量(Block Address Offset)(用标识逻辑块内的具体位置,每个逻辑块最大 64KB,基地址 + 偏移量)】其 Virtual Page 的结构包含 Page Header(用于存储页面的元数据,如页面状态和标识)+ Data Area(实际存储数据的区域)Fee的blocknumber是608,size是22byte,原创 2025-03-10 20:05:04 · 305 阅读 · 0 评论 -
车载以太网-基于linux的ICMP协议
对于车载以太网-ICMP的技术要求原创 2025-02-27 19:30:32 · 381 阅读 · 0 评论 -
TriCore架构-TC397将code从原来在P-Cache地址移到PSPR的地址,CPU的负载率为什么没影响
但是实际情况下,这个是CPU通过LPB (local pflash bank) 直接访问PFlash的性能,PFI 有prefetch buffer,可以预取指,并不是通过Cache访问的。而从下图可以看出来,CPU从PCache & PSPR & DSPR & Dcache取指(instruction fetch),性能是一样的,CPU距离存储空间的距离也是差不多的。私有的:PSPR,DSPR,P-Cache,D-Cache,PF(X),LMU,DLMU,LPB。之间频繁切换,可能会引入额外的延迟。原创 2024-12-08 10:56:18 · 776 阅读 · 0 评论 -
ISO26262-(Timing Monitoring)在多核MCU的TPU上功能安全ASILB与ASILD有什么区别
在多核微控制器(MCU)的时间保护方面,针对功能安全ASIL B与ASILD等级的设计和实施存在显著差异,这些差异主要体现在系统对时间关键性操作的保障程度、故障检测能力、以及系统响应的严格性上。时间关键性:在ASIL B等级,系统设计注重于识别并处理大部分可能影响安全的时间相关故障,但允许在某些情况下未被覆盖的故障存在。一旦检测到时间保护失败,系统将采取极端措施,如立即触发安全动作、系统复位或切换到预先定义的安全状态,以避免任何潜在的不安全状态。全面故障检测:要求近乎完美的故障检测能力,原创 2024-12-03 15:25:57 · 522 阅读 · 0 评论 -
ISO26262-(Timing Monitoring)基于AUTOSAR OS与TC397实现TPU时间保护
Deadline Supervision:提供监督软件在两个状态之间的转换时间,通过在代码中设置检查点,WdgM定期检查这些点是否被按时到达,防止任务进入无限循环或完全停止执行。规定任务或第二类中断(Cat2 Interrupts)两次激活之间的最小时间间隔,确保任务执行的周期性和间隔的稳定性,防止任务执行过于频繁或不规律。监控任务或中断在获取资源、锁或中断挂起上的时间,确保这些操作不会超出预定的限制。时间保护和监控和以下属性有关:监控任务在特定时间调度,不超过预期执行时间,不独占OS资源。原创 2024-12-03 14:23:32 · 133 阅读 · 0 评论 -
ISO26262-(Memory Partitioning)在多核MCU的MPU上功能安全ASILB与ASILD有什么区别
在ISO26262中基于AUTOSAR创建每个TASK的时候根据任务的危害分析和风险评估确定对应的ASIL等级,在开发的时候并对ASIL进行适度分解,之后在软件开发中对每个TASK施行不同的软件策略,比如内存分区的复杂度,诊断和错误处理,冗余与容错等软件机制,最终实现各个ASIL Level。ASIL D级别的系统在动态内存分配上可能需要更严格的控制,以避免运行时的内存错误,这可能影响MMU的配置策略,要求实时监控和保护堆和栈的完整性。ASIL B系统在这一点上可能允许更多依赖于软件层面的管理。原创 2024-11-30 12:06:31 · 344 阅读 · 0 评论 -
ISO26262-(Memory Partitioning)基于TC397的MPU实现内存分区
TC397芯片有5个Core,每个核有18个Data Memory Protection Ranges,10个Code Protection Ranges。原创 2024-11-29 19:44:56 · 625 阅读 · 0 评论 -
ISO26262-(Memory Partitioning)针对不同SWC和Interface实现功能安全内存分区
内存方面的 FFI - 保护 ASIL-B(较高 ASIL-X)分区的数据免受 QM(较低 ASIL)分区代码执行的影响。时间方面的 FFI - 保护 ASIL-B(较高 ASIL-X)分区执行免受 QM(较低 ASIL)分区执行的影响,(能够检测 ASIL-B 任务的 CP 到期情况,将 ASILB 任务作为高优先级)这应完全从软件架构层面完成。Goal:满足混合 ASIL-B 产品在内存和执行方面的 FFI(Freedom From Interference)原创 2024-11-28 20:16:19 · 228 阅读 · 0 评论 -
ISO14229-初步理解
ISO-14229用于汽车行业诊断通信的需求规范,它只规定了与诊断相关的服务需求,并没有涉及通信机制,因此要实现一个完整的诊断通信还需要定义网络层协议(比如ISO-15765),还有底层硬件实现方式(比如CAN控制器)。由于不涉及网络通信机制,可以架设在各种网络之上,因此ISO-14229也称为UDS(Unified Diagnostic Services)统一诊断服务。在ISO14229里,共有26个UDS服务:UDS定义的诊断服务从逻辑来说分为以下几类:用途其实诊断通信的机制很简单,可以类比cl原创 2022-06-21 10:38:17 · 9554 阅读 · 0 评论 -
MCU-基于STM32H7XX的Bootloader启动与更新固件逻辑
基于一种安全升级的方式,将两个BANK分别都用于存储APP程序,一个是A面,一个是B面,之后在升级的过程中,可以确保如果升级失败,可以回滚到上一个有效版本,以及升级过程中可以实现网络安全的机制。原创 2024-11-07 21:05:52 · 325 阅读 · 0 评论 -
MCU-QSPI读写外部Flash(W25Q256JV)
每到一个新的扇区,就要判断这个扇区里面是否是干净的,不干净就要先去擦Sector,将数据全部擦成 0XFFFFFFFF,之后才可以一个page一个page写数据。需要注意的是,写完的数据就不能更改,如果更改数据,我们需要将所在扇区的存储内容全部读出,然后擦除该扇区,再按照新数据对该扇区进行编程。向flash写数据,是以page为单位写的(不可以随意的写字节),通过QSPI将写的数据写到flash的buffer里,写完后,如果不够一个page, flash会自动填充满一个page,之后写到Sector中。原创 2024-09-12 18:27:09 · 585 阅读 · 0 评论 -
MCU-内部flash模拟成EepRom(重新梳理)
通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0;原创 2024-09-13 14:35:01 · 461 阅读 · 0 评论 -
MCU-内部flash模拟eeprom逻辑
模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0,此时需要注意的是将eep_page0的有效数据copy到eep_page1,因为正常我们向flash里写的数据有很多无效数据,比如同一个变量写了50次,那我们只需要最后一次的值,之前的49次都是无效数据。(实际上page每次切页最终保留的就是所有存在的变量)原创 2024-01-15 15:45:24 · 569 阅读 · 0 评论 -
MCU-CAN的底层驱动
它负责将CAN控制器产生的CAN消息转换为适合在CAN总线上传输的电信号,并将从CAN总线接收到的电信号转换为CAN控制器可以理解的数据。RX Handler 负责将 CAN 内核的数据传输到外部消息 RAM 中, RX Handler 支持两个接收FIFO,每个 FIFO 可以配置 64 个专用的 buffer。Can报文传输到Can_Controller,也就是MCU子系统,如下图所示,通过子系统的一系列机制,过滤器、接收发送 FIFO,最终传到Core。最后,数据在通过core传到MCU内核。原创 2024-04-17 21:00:22 · 411 阅读 · 0 评论 -
SOC-基于linux进一步理解核间通讯
AMP 结构是指每个内核运行自己的 OS 或同一 OS 的独立实例,或者说不运行 OS,如运行裸机,每个内核有自己独立的内存空间,也可以和其它内核共享部分内存空间,每个核心相对独立地运行不同的任务,但是有一个核心为主要核心,它负责控制其它核心以及整个系统的运行,而其它核心负责“配合”主核心来完成特定的任务。RemoteProc(远程处理):其实就是可以理解为在主处理器A7上,通过回调功能触发M4的驱动,之后M4就启动了IPC功能;RPMsg(远程处理器消息传递)基于STM32MP157。原创 2024-04-12 10:14:50 · 493 阅读 · 0 评论 -
FreeRTOS-中断的嵌套和竞争
在STM32F4 中 NVIC_PRIORITYGROUP_4:优先级分组为 4,意味着抢占优先级和子优先级各占 4 位,即都具有 16 个取值(0 到 15)。这种方式下,可以实现最大的优先级颗粒度划分。抢占优先级(Preemption Priority)就是同一组中断之间的优先级关系,子优先级(Subpriority)也就是在同一抢占优先级组内进一步划分优先级。函数来设置中断的 IRQn 中断号,PreemptPriority 抢占优先级,SubPriority 子优先级,数值越低表示优先级越高。原创 2024-06-25 18:31:25 · 294 阅读 · 0 评论 -
AUTOSAR-OS任务调度机制
并且根据配置也可以看出,所有的任务都是基于全抢占模式触发的,也就是说,如果任务没有执行完,但是又更高优先级的任务进来了,此时,旧的任务将挂起,先执行新来的高优先级任务,等到高优先级任务执行完,再去执行旧的低优先级任务;如果到了触发时间,有高优先级的任务抢占了低优先级的任务,调度表触发的任务会将任务挂起,之后等到下一个周期在重新执行(前提条件是达到了Expiry Points),而alarm触发的任务是等高优先级任务执行完,就立即执行低优先级任务。原创 2023-10-30 19:30:26 · 786 阅读 · 0 评论 -
AUTOSAR-OS的Alarm定时器调度机制
调度表的周期性任务与alarm周期性任务可以理解为,如果到了触发时间,如果有高优先级的任务抢占了低优先级的任务,调度表触发的任务会将任务挂起,之后等到下一个周期在重新执行,而而alarm触发的任务是等高优先级任务执行完,就立即执行低优先级任务,alarm是基于全抢占调度机制实现的。如果调度表的周期任务与alarm的周期任务撞上了,调度表中的任务优先级高,那就是调度表的任务执行完后立即执行alarm的任务。原创 2023-10-27 16:39:28 · 1423 阅读 · 0 评论 -
AUTOSAR-PMIC应用于KL15&KL30的上下电逻辑
嵌入式开发:如何理解ECU唤醒、休眠、Reset?原创 2024-08-13 16:29:28 · 542 阅读 · 0 评论 -
AUTOSAR-内部与外部Watchdog应用逻辑
当内狗使能以后,如果程序运行异常,没有有效喂狗,内狗会触发SMU(Safety Management Unit)的Alarm,进行异常处理,eg:通知复位控制单元(RCU:Reset Control Unit)进行复位。WWDG 时钟由 APB 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,此独立看门狗外设可检测并解决由软件错误导致的故障,并在计数器达到给定的超时值时触发系统复位。外部PMIC的watchdog。原创 2024-04-08 15:26:13 · 535 阅读 · 0 评论 -
AUTOSAR-CAN网络管理(TJA1145如何实现MCU的休眠唤醒)
当一个节点准备进入睡眠模式时,它会通过网络发送一个特殊的同步消息,通知其他节点它即将进入睡眠状态。其他节点接收到该消息后,会做出相应的响应,以确保整个系统在同一时间进入睡眠状态。同样地,当一个节点准备唤醒时,它会发送一个唤醒消息来通知其他节点。其他节点接收到唤醒消息后,会做出相应的响应,以确保整个系统在同一时间唤醒。CanNM报文周期性的向MCU发送,如果一旦一段时间没有收到,MCU就通过SPI向TJA115的寄存器写数据,要进入sleep模式,之后TJA1145在向PMIC拉低。原创 2024-05-18 19:28:34 · 5647 阅读 · 0 评论 -
AUTOSAR-CAN网络管理(网络管理报文的定义)
CanNM报文通过广播发送到总线上,网络中的所有节点都可以接收到报文,接收到CanNM报文表示发送这个报文的节点倾向保持网络工作模式。如果有节点准备好进入总线睡眠模式,它就停止发送CanNM消息,但是只要它还能够接收到从其他节点发来的CanNM消息,它就延迟到总线睡眠模式的变迁。其余字节作为User Data给到客户自行定义。节点ID是0X2,ADCU的节点。原创 2024-05-18 17:32:53 · 1282 阅读 · 0 评论 -
AUTOSAR-CAN网络管理(网络节点)
通过配置寄存器,确定接收过滤器用于定义节点接收哪些报文,过滤器的定义是通过设置报文标识符(ID)参数来实现的还有屏蔽寄存器(Mask Registers),可以与AUTOSAR中的Basic Can一起用。网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向域控发送的,0x26节点向0x40节点发送报文。如何通过广播发送CAN报文到对应的节点。原创 2024-04-16 20:01:24 · 2587 阅读 · 0 评论 -
AUTOSAR-SOMEIP配置总结
导入arxml之后someip信号一般以“pduSomeIp”开头或者“SomeIp”开头。以某个pdu为例,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。在导入arxml之后someip信号中有三个特殊的信号,形如“SdInstance”开头的信号,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。“EcuC”模块主要关注“EcucPduCollection”中的“Pdus”下面的配置。原创 2022-09-28 10:54:44 · 4212 阅读 · 3 评论 -
AUTOSAR-TC397的Trap机制
这个osTrap_1_Core0函数可能指向用户编写的函数,也可能是默认的Os_Hal_UserTrapEntry处理函数,下面简要分析Camera项目中发生trap故障时bug现场保存的流程,这里通过callout函数将bug信息保存在DSPR,可实现没有调试器或者bug偶发时对问题的追踪。到目前为止,我们已经可以定位到trap类型bug的引发原因,从而针对性的修改代码。寄存器保存了异常向量表的基地址。由下图可以看到,针对8类trap,程序都有对应的trap处理函数。向量进行访问,并按硬件定义的。原创 2024-06-24 19:53:33 · 754 阅读 · 0 评论 -
AUTOSAR-OS的自旋锁(spinlock)与互斥锁
AUTOSAR多核OS为实现核间资源互斥,保证数据一致性,设计了自旋锁机制,该机制适用于核间资源互斥。对于多核概念,需要一种新的机制来支持不同内核上任务的互斥。这种新机制不应在同一内核上的 TASK 之间使用,因为它没有意义。在这种情况下,AUTOSAR 操作系统将返回错误。自旋锁的特点就是当一个线程获取了锁之后,其他试图获取这个锁的线程一直在循环等待获取这个锁,直至锁重新可用。由于线程实在一直循环的获取这个锁,所以会造成CPU处理时间的浪费,因此最好将自旋锁用于能很快处理完的临界区。原创 2023-02-20 18:52:43 · 3788 阅读 · 3 评论 -
AUTOSAR-OS的外部中断
根据DataSheet的文档描述,中断被触发,一定是因为寄存器的改变,从而触发对应的中断服务函数(注意中断触发后,要如何执行要根据自己的需求去实现Callback)也就说在初始化的时候,已经确定哪个GPIO作为中断IO,而在这里只是根据IO对应的中断线去使能中断功能。MCU正常运行时,外部中断源发生中断事件,中断源向MCU发送跳转指令,跳转到对应的中断服务函数。AUTOSAR的中断触发,基于TC397的I2C。初始化GPIO,并确认中断的触发方式。中断被触发,执行中断服务函数。EXTI外部中断触发过程。原创 2024-06-24 19:31:37 · 249 阅读 · 0 评论 -
AUTOSAR-OS的事件机制Event
Event在OSEK OS中,其实就是一个flag的作用,如何某个TASK执行了,就调用把flag就置起来,和这个task关联的另一个TASK也执行了,就可以把flag清掉,如果第一个TASK没有执行完,第二个TASK就进入等待状态,直到第一个TASK执行完。OSEK 中的事件是一种可以被多个任务等待的同步机制,任务可以在等待事件时被阻塞,并且在事件发生时被唤醒。它可以用于查询事件标志的状态,以便任务可以根据需要采取相应的行动。原创 2023-06-13 21:03:16 · 1736 阅读 · 0 评论 -
AUTOSAR-OS任务调度底层逻辑
先参考OSEK与FreeRTOS在任务调度上最大的区别在于,FreeRTOS是基于全抢占任务调度和时间片轮转调度机制,具有并发和并行的能力。而OSEK主要以调度表机制和Alarm机制触发任务,不具备并行的能力。最大的相同点是都是根据优先级高低的全抢占调度机制(OSEK可选非全抢占)。原创 2023-11-30 21:24:09 · 3300 阅读 · 1 评论 -
AUTOSAR-OS的调度机制-调度表(没理解透,继续更新)
注意:Task A在第一个周期中执行时间为3个计数周期,在第二个周期中执行时间为4个计数周期,在第三个周期中执行时间为2个计数周期,在第四个周期中执行时间为3个计数周期,在第五个周期中执行时间为5个计数周期。Task A的间隔时间是指Task A完成一次执行后需要等待的时间,在实际的调度系统中,任务的间隔时间可能会受到多种因素的影响,例如任务的优先级、资源的竞争等。驱动计数器是用于驱动整个调度表运行的计数器,它的计数周期通常是固定的,并且要大于调度表的时间,以确保调度表中的所有任务都能够被执行到。原创 2023-06-07 16:21:53 · 5637 阅读 · 2 评论 -
AUTOSAR-OS中进程、线程、Core、OS Application、task、event、runnable、SWC、port的区别与联系
其实也好理解,如果一个C文件孤零零的放在那里,与别的C文件没有任何数据交互,那么作为一套代码中的一个C文件,根本没法发挥作用,所以必然在SWC上需要配置上或者输入(R-Port)的或者输出(P-Port)的Port。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。如果处理器支持,可以运行在特权模式,OS默认Trusted类型的OS Application不会引发内存相关故障,如果发生了内存故障,系统稳定性将不再保证,可能需要关闭OS。原创 2023-02-28 20:25:31 · 3496 阅读 · 5 评论 -
AUTOSAR-BSWM与ECUM的上下电流程
原创 2023-10-27 20:11:51 · 846 阅读 · 0 评论 -
AUTOSAR-StbM 和 Time Synchronization Over CAN and Ethernet(二) 以EthTSyn和StbM为例
1.1 判断时钟域1.2 Master 与 Slave 报文发送的相关变量:SYNC 和 FUP 报文发送时相关变量、SYNC 和 FUP 报文接收时相关变量、Pdelay_Req 报文发送时变量、Pdelay_Resp 和 Pdelay_Resp_FUP 发送时的相关变量、Pdelay_Resp 和 Pdelay_Resp_FUP 接收时的相关变量1.3 获取以太网的 MAC 地址。原创 2022-11-13 20:14:33 · 1827 阅读 · 0 评论