自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不断debug,优化中……

关注 小昭debug,每日进步一点点,debug.....

  • 博客(166)
  • 资源 (3)
  • 收藏
  • 关注

原创 debug对于开发工程师很重要

在日常开发中,总会遇到一些出人意料的bug,程序跑飞,上电就挂,程序没有按预期执行诸如此类的问题,没有好的调试方法,真的很难定位问题,更别说解决了。在这里分享我用过的一些调试方法,抛砖引玉。

2024-09-10 22:45:34 1674

原创 DoIP诊断入门

DoIP(Diagnosis over Internet Protocol)是一种用于车辆诊断的网络通信协议。它基于现代互联网技术,允许通过以太网或IP网络进行车辆诊断和通信。DoIP的背景是现代车辆中使用的电子控制单元(ECU)数量不断增加,以及这些ECU之间需要进行更快速、更可靠的数据交换。传统的诊断方法通常使用专用的物理连接和协议,限制了诊断的速度和灵活性。而DoIP利用了以太网和IP网络的优势,使诊断设备能够通过网络连接到车辆的ECU,实现远程诊断、编程和数据交换。

2023-08-13 16:44:29 1377

原创 少有人知道HSM安全启动

TrustZone、HSM(硬件安全模块)和HSE(硬件安全引擎)是三种不同的硬件安全技术,各自具有独特的功能和应用场景。在MCU集成HSM(硬件安全模块)的系统中,安全启动(Secure Boot)机制会通过硬件级加密和密钥保护实现更高等级的安全防护。HSM的加密操作(如签名验证)在独立的安全环境中执行,与主CPU隔离,防止侧信道攻击。HSM参与APP签名验证,比对固件哈希值与签名中的加密哈希值,防止恶意代码注入。:存储在HSM的安全存储区,用于验证BootLoader和APP的签名。

2025-02-22 22:51:56 770

原创 Excel转DBC 源码分享

Excel转DBC 源码分享。

2025-02-21 23:15:15 221

原创 NVM是什么,以及NVM的作用?

MemIf:MemIf模块作为中间层,提供对多种NVM设备(如EEPROM、Flash、Fee等)的统一接口,使得应用程序可以灵活、便捷地访问这些存储设备。在 AUTOSAR 架构中,多个模块协同工作,以管理非易失性存储器(NVM)的数据存取。使用:MemIf 接口由 NvM 调用,以访问具体的存储硬件,如 EEPROM 或 Flash。通过提供统一的接口,NVM 隐藏了底层存储硬件的差异,使上层应用程序无需关心具体的存储介质。功能:作为硬件抽象层,为 NvM 提供统一的存储接口,隐藏底层存储硬件的差异。

2025-02-21 23:05:06 960

原创 MCU Bootloader具备什么条件才能跳转到APP程序

在MCU系统中,BootLoader(Boot)跳转到应用程序(APP)的条件通常由控制,核心逻辑是确保APP的完整性和合法性。APP的起始地址(如)必须包含合法的**栈指针(SP)复位向量(Reset Handler)**地址,确保程序入口有效。BootLoader计算APP区域的CRC或哈希值(如SHA-256),与预存的校验值比对,确保固件未损坏或被篡改。(安全增强场景):使用非对称加密(如ECDSA)验证APP的签名,确保固件来源可信。0x10 0x02。

2025-02-21 23:02:14 1126

原创 Excel转DBC文件 源码分享

Excel转DBC 源码分享。

2025-01-24 10:58:32 138

原创 开源许可证(Open Source Licenses)

开源许可证(OpenSourceLicenses)是一种允许用户查看、修改、共享和分发代码的法律协议。它们规定了代码在不同场景下的使用权限和责任。开源许可证的种类很多,不同的许可证在使用条件上有所不同。

2025-01-19 22:21:29 1685

原创 一文看懂看门狗

微控制器(MCU)内置的看门狗(Watchdog)是用来保证系统在发生软件故障或异常时能够自动复位或重新启动的安全机制。它通过定期“喂狗”(即定期给看门狗喂信号)来保持系统的正常运行。如果看门狗在预定的时间内没有收到“喂狗”的信号,就会认为系统出现了故障,进而触发复位操作,从而确保系统不会陷入死循环或挂起状态。

2025-01-19 22:10:57 1181

原创 汽车领域 编程规范你了解多少

CERT 主要由美国的 CERT/CC(Computer Emergency Response Team/Coordination Center)发布的一系列安全编程规范,主要关注安全漏洞的预防和修复。CERT C 编程规范专注于避免编程中的常见漏洞和不安全行为(例如不安全的字符串操作、不正确的内存分配等)。HIS 规范类似于 MISRA,注重规范化编码,减少不安全和难以维护的代码,通常也会涉及到内存管理、资源调度等方面的标准。例如,避免使用不确定行为的特性(如未初始化的变量、指针运算等)。

2025-01-06 00:07:44 692

原创 你知道Autosar代码的命名规范吗

其他编码规范除了命名规范,AUTOSAR 编码标准还关注其他方面,如代码结构、代码风格、模块化设计、可维护性、内存管理等。为了保证系统的可靠性和可移植性,AUTOSAR 还强调以下几个要点:避免使用动态内存分配:由于嵌入式系统的内存有限,AUTOSAR 推荐使用静态内存分配。模块化和可配置性:系统应当模块化,并且各个模块之间的依赖应尽量减少。接口的标准化:接口的定义应尽量标准化,确保模块间的兼容性和可扩展性。

2025-01-06 00:06:22 797

原创 SOME/IP 入门1

SOME/IP 协议通常用于汽车行业的 车载网络通信,其工作方式类似于基于服务的客户端-服务器通信模型。其核心思想是通过服务发现、服务请求和服务响应来完成 ECU 之间的通信。SOME/IP 协议的主要报文类型Service Discovery (服务发现):服务发现是 SOME/IP 的一项核心特性,允许不同的 ECUs 在网络中彼此发现对方提供的服务。

2024-12-24 08:10:28 809

原创 少有人用的C语言写法

(uint32_t)&((parent *)0)->member:通过 (parent *)0 创建一个指向 parent 类型的空指针(值为 0)。((uint32_t)node - (uint32_t)&((parent *)0)->member):这是将 node 的地址减去成员 member 相对于结构体首地址的偏移量,从而得出结构体的起始地址。输出的值是成员的内存地址。node:是一个指向结构体成员的指针,通常是结构体中的某个成员的地址。2、通过结构体成员的地址,反推回去得到结构体本身的地址。

2024-12-24 08:09:01 517

原创 ASPICE VS 敏捷开发

例如,敏捷开发的迭代过程可以结合ASPICE的测试、验证、文档等要求,使得开发过程既具备敏捷性,又满足高质量和安全性要求。安全关键系统与非安全关键系统分开管理:在实际应用中,可以根据项目的性质和安全要求,针对安全关键系统采用ASPICE流程,而对于非安全关键功能,可以采用敏捷开发方法,这样能够实现灵活与规范的平衡。随着行业技术的不断发展,特别是在自动驾驶和安全关键系统中,未来可能会有更多的企业在需要符合安全性要求时结合ASPICE和敏捷开发,以便实现过程的规范化和开发的灵活性并行。

2024-12-21 13:26:59 895

原创 一文了解AES 加密算法

AES(高级加密标准)是一种对称加密算法,其加密过程是基于 分组加密(block cipher)的,每次加密的单位是固定大小的 128 位数据块。然而,AES加密的模式(如 ECB、CBC、CFB、OFB、CTR、GCM)定义了如何对 多块数据(或 流数据)进行加密,它们在加密过程中有所不同。安全性差:如果明文中有相同的块(即相同的128位数据),密文中会出现相同的块。以 CFB-128 为例,明文分成多个 128 位块,每个块的加密依赖于前一个密文块,生成一个新的密钥流,然后与明文块进行异或。

2024-12-17 00:53:47 2139

原创 常用加密算法常识,保护你的程序

非对称加密(Asymmetric Encryption),又称公钥加密,是一种加密技术,它使用一对密钥进行加密和解密。这对密钥包括和。

2024-09-10 22:51:12 773

原创 Autosar--Can收发器通俗讲解

Autosar网络管理的休眠唤醒功能,Can收发器起到比较大的作用,充当唤醒源以及最终执行网络休眠。Autosar--Can收发器通俗讲解唤醒/休眠请求进入normolComM_EcuM_WakeUpIndication 有唤醒源事件CanSM_RequestComMode 有通信请求CanSM_NetworkStatemachine() 更新CANSM状态CanIf_SetTrcvMode() 进入normal。

2024-09-09 03:09:34 460

原创 一文带你画PCB板,有手就行

整流二极管主要用于防止电流倒流和保护电路。开关二极管适用于高速开关和脉冲信号处理。稳压二极管用于电压稳压和提供参考电压。

2024-08-25 00:23:16 2375

原创 Autosar_MCAL_Port

PORT Driver就是对微控制器(MCU)的整个PORT模块进行初始化配置。很多端口和管脚被分配有多种不同的功能,即可以进行引脚功能复用,比如通用I/O、adc、pwm、spi等功能。因此,对PORT必须有一个整体的配置和初始化,对各管脚的具体配置和使用取决于微控制器和ECU的引脚功能分配。PORT初始化数据应当尽可能高效地写到每个端口。DIO驱动中所用到的端口的配置和初始化都是在PORT驱动模块中完成的。因此,在使用DIO功能之前,应先进行PORT的初始化。1、PortContainer说明。

2024-08-22 21:45:03 102

原创 Autosar_MCAL_Adc

ADC主要是作为模拟量转换为数字量使用,在汽车的控制器中具有广泛的用途。AutoSAR中ADC模块用于初始化并控制微控制器的内部模数转换单元,提供启动和停止转换的服务用来启用和禁用ADC转换的触发源。此外,ADC模块还提供了启用和禁用通知机制服务来决定是否将ADC转换完的结果通知给上层应用,同时ADC模块提供了用于查询转换状态和读取转换结果的功能。目标:设置PTC14引脚为ADC信号采集功能。2、Port模块,将引脚复用成ADC。1、在Mcu模块,使能ADC时钟。依赖Mcu、Port。

2024-08-22 21:44:28 193 1

原创 MCAL--CAN (S32K144)

Can邮箱,顾名思义,收到制定的报文,才会放到邮箱,并触发中断,来处理报文数据,所以可以通过邮箱接收的方式,接收制定报文ID才进入中断,避免频繁进入中断,增加CPU的负载。当接收报文ID,CAN硬件过滤器receiverID & MASK == CODE&MASK 进行对比。BASIC:可以存放多个ID的报文,依赖硬件滤波器CanFilterMasks。当CAN邮箱配置成BASIC时,需要配置硬件滤波器。FULL:只能存放一个ID的报文。,就位于相位缓冲段2开始的地方,CAN控制器和CAN邮箱。

2024-08-22 15:13:04 488

原创 MCAL--MCU (S32K144)

AutoSAR中MCU Driver主要提供了用于基本的控制器初始化、下电、复位功能的服务,同时也为其它MCAL层需要的功能提供对应的服务函数。通常来说在AutoSAR的架构中MCU主要支持以下几个功能:1.初始化控制器的外设时钟、系统时钟、PLL等,对所有控制器内各个外设模块用到的时钟提供配置服务。2.初始化定义的RAM Section。3.为MCU的运行提供省电功能,支持MCU运行相关模式转化配置,支持整个系统复位,以及获取系统复位的原因。4.支持通用的模块的配置,比如DMA、GTM等。

2024-08-21 16:12:47 289

原创 Autosar ComM模块(communication manager)

中央处理单元,处理通信请求并管理数据流。核心职责包括信号处理、通信模式管理和网络管理。它是一个资源管理器,封装了对底层通信服务的控制。ComM 模块控制与通信相关的基础软件模块,而不是软件组件或可运行实体。ComM 模块从通信请求方收集总线通信访问请求,并协调总线通信访问请求。ComM作用:1、简化用户对总线通信栈的使用。这包括简化的网络管理处理。2、协调一个 ECU 上多个独立软件组件的总线通信栈的可用性(允许发送和接收信号)。用户不应了解硬件(例如在哪个通道进行通信)。

2024-05-05 21:41:05 1572 1

原创 Autosar EcuM上电流程 下

根据event Validation之后的结果选择进入不同的阶段,一种是验证有效,进入RUN 11阶段,另外一种是验证无效,进入Go Sleep阶段;若在该阶段存在RUN Request,那么就会立刻跳回到RUN 11阶段;RUN阶段可以划分为以下两个阶段,一个是RUN II,表示正常工作状态,另一个是RUN III,表示为进入到ShutDown所作的前提准备,顶层设计如下图所示:在RUN 1阶段则表明已完成了所有BSW模块(包括OS及RTE)的初始化,开始运行SW-C程序。

2024-04-06 22:57:49 447

原创 Autosar EcuM 上电流程 上

介绍EcuM模块,管理ECU运行状态,上电工作流程,规定上电时 Startup需要做什么操作,正常运行Run需要做什么操作,休眠Sleep时需要做什么操作,关机下电ShutDown做什么操作,唤醒Wakeup需要做什么操作,这五大流程管理。EcuM的初始化,在main函数里。

2024-04-06 22:57:10 552

原创 Autosar BswM 模式管理

BswM就是一个基于Rules的服务模块,主要工作就是上面讲到的根据制定的Rules,执行相应的Action。下图之前我们放过一次,这里多讲讲:可以看到这里有三个Auto Configuration,那都是DaVinci自动配置的部分,然后下面的Miscellaneous就是我们用户自己定义的部分(当然其实一般来说都不必自己定义对Rules的评估可以有两种形式的:立即 和 延迟立即:当然就是被call了之后立马开始了。

2024-04-06 22:56:20 204

原创 MCAL SPI配置

用的是Qspi0SpiDriver要配置 4个选项SpichannelSpiJobMcu 模块配置dma配置。

2024-04-05 16:00:53 191

原创 Autosar工具链配置 CanNM

网管报文btye设置:1、重复消息请求位设置 2、ECU地址。接收到主动唤醒源,网管报文快发周期,次数;wait bus-sleep 定时设置以及网管报文超时设置。repeat message time 超时时间。为保证ECU起来首发的报文是网管报文,网管报文范围0x600~0x6FF。ComM 要放在CanNm前执行。CAN网络管理filter。

2024-04-05 15:58:18 337 1

原创 Autosar CanNM 网络管理 状态机一下就懂

被动唤醒源是网管报文。进入RepeatMessageState,会做两个动作,StartNM-TimeoutTimer网管报文监听定时器开启,StartRepeatMessageTimer定时器开启,发送网管报文,如果是主动唤醒源,会快发一段时间的网管报文。跳转条件:当RepeatMessageTimerhasexpired,StartRepeatMessageTimer定时器超时并且没有网络请求(有主动唤醒源,被动唤醒),会跳到ReadySheepState。

2024-04-05 15:57:45 1796 2

原创 UDS升级入门,手把手教你———MCU相关驱动功能实现

进入用户程序时,main函数一定要对中断向量表进行偏移.如果不偏移中断向量表还是用boot中,所以需要对中断向量表偏移到用户程序中。在跳到用户程序前,需要设置用户程序MSP堆栈指针,以及reset入口地址。MOV SP, R0 //R0的数值 其实就是参数r0_msp。500k 波特率,设置滤波器,只允许两个诊断物理寻址通过。设置毫米级的定时器 Tim3,用于UDS中的心跳时钟。在BIN目录下即可找到LED.bin文件。解释下为什么是这样写?

2024-03-26 01:21:07 736

原创 UDS升级入门,手把手教你———诊断服务UDS CANTP

参考资料《ISO14229-1》

2024-03-26 01:13:22 824

原创 UDS升级入门,手把手教你———需求细节

11、驱动下载$34, $36, $37, $31: Flash 驱动的下载应该按照如下时序来进行:请求下载、传输数据、请求传输退出。6、例程控制“检查预编程条件” $31 $01 $02 $02:通过物理寻址检查 ECU 预编程条件,从而确保系统安全,预编程条件由 ECU 决定,如果有任何不安全的因素, ECU 应该拒绝编程,此例程控制不需要安全访问。10、安全访问$27 $07/$08:编程事件必须通过安全访问,确保只有授权的诊断仪能对 ECU 进行编程操作。2、$212特定报文,保持boot。

2024-03-25 00:15:33 1010

原创 UDS升级入门,手把手教你——开篇

STM32软件生态比较好,资料多,是比较容易上手的一款MCU。本专栏的目标是UDS 刷写升级,后续换成NXP infinite renesas等芯片平台,基本把驱动部分做好,上层的协议移植过去,很快就能适配完成。如果中间需求有漏或者理解发生偏差,会耽误整个开发周期,所以理解需求是很重要的。设计一个灵活和可靠的OTA升级流程,可以适应不同的硬件。前面关于OTA的文章,写的比较乱,索性整了一个专栏,来认真梳理下,话不多开整。2、MDK环境,STM32F103,vscode。MCU开发环境,调试。

2024-03-25 00:13:37 967

原创 UDS升级入门,手把手教你——QT上位机开发1

新建立一个工程,或者网找一个demo工程,在原有的基础进行开发(建议使用第二种)。目标:以500k/s的波特率与MCU进行CAN通信,可发可收。需要用到周立功 相关接口,拿到库文件,进行二次开发。选择正常模式、单滤波、500kbps、报文全接收。并链接上这个库,进行can通信开发。以下就是库,暴露出来can通信接口。具体接口使用可以看文档。CAN设备:开启和关闭。

2024-03-24 00:56:11 1387

原创 SWC Runnable

在 AUTOSAR 中,我们在配置期间在 SWC 中创建 Runnable,并且 在 SWC 的相应源文件中生成Runnable 或函数骨架。这样的条件可以在配置时定义,条件可以是:初始化时调用的Init Runnable、定期调用runnable可用于发送一些周期性数据、基于不同RTE事件的触发等。我们知道,对于 ECU 中的每个功能,SWC 都可以是专用的,但其行为或功能的实现是使用 Runnable 完成的。数据接收事件:顾名思义,每当端口接收到数据时,此类事件就会触发一个可运行的事件。

2024-03-03 20:27:00 454

原创 SWC ports and port interface

由于 AUTOSAR 的目标是标准化,因此需要在配置时了解实体之间传输的数据,因此端口也不例外。端口接口是定义两个端口之间传输或接收的信息类型的接口。端口接口就像端口的蓝图,它定义了 SWC 端口遵循的“协议”。端口接口配置是在系统配置时完成的,并且该接口应遵守的端口被分配给这些端口。当实体之间传输的数据是异步类型时,使用这种类型的接口。标准化 AUTOSAR 接口:标准化 AUTOSAR 接口由 AUTOSAR 预定义,应用程序 SWC 在与 ECU 管理器等 BSW 服务交互时使用该接口。

2024-03-03 20:07:18 211

原创 Appl swc

由于 AUTOSAR 软件架构的分层性质不允许上层直接访问硬件,因此需要一个额外的概念来绕过此限制,特别是对于资源关键型和/或不符合 AUTOSAR 的软件组件。正是在这里,复杂设备驱动程序出现了。复杂设备驱动程序基本上为应用程序层提供了 AUTOSAR 接口,从而可以直接访问物理层上的值。复杂驱动程序的概念对于需要直接访问 ECU 上的硬件设备的应用程序组件非常有用。喷射控制或电子阀门控制应用是需要直接访问硬件的此类应用的很好的例子。

2024-03-03 20:05:26 123

原创 Autosar Appl介绍

AUTOSAR架构中的应用层AUTOSAR 应用层构成AUTOSAR 架构中的最顶层,被认为对所有车辆应用至关重要。AUTOSAR 标准使用“组件”概念指定应用层实现。这些软件组件通过明确定义的端口进行连接。这些端口有助于软件组件之间以及与AUTOSAR BSW之间的通信。在应用程序软件组件的上下文中,有一些称为 Runnable 的实体,它们基本上是包含软件组件实际实现的过程。可运行或可运行实体在 VFB 规范中定义,并且是原子软件组件的一部分(在后面的部分中描述)。

2024-03-03 20:04:22 316

原创 Mcal篇 配置Dio模块输出

Mcal篇 配置Dio模块输出

2024-02-25 22:17:39 279

原创 Autosar 开篇

AUTOSAR(Automotive Open System Architecture)是一个跨汽车行业的标准化软件架构,旨在促进汽车电子系统的开发和部署。下面是AUTOSAR发展的一些关键点:起源和背景: AUTOSAR最初于2003年由汽车制造商宝马、戴姆勒克莱斯勒、福特和供应商博世联合发起,旨在应对汽车电子系统日益复杂的挑战。这些挑战包括不断增长的软件代码量、硬件和软件之间的紧密耦合,以及不同汽车制造商之间的差异化。标准化软件架构: AUTOSAR致力于建立一个标准化的汽车软件架构,以便不同汽车制造商

2024-02-25 21:56:09 165

execl表 通信矩阵转DBC

execl转DBC

2025-01-21

Autosar MCAL 代码demo

Autosar MCAL 代码demo

2025-01-14

autosar工程代码

autosar工程代码

2025-01-08

understand工具

understand工具

2025-01-08

doip抓包数据,带诊断数据

doip抓包数据

2024-09-22

零基础速成simulink代码生成-DBC文件CAN报文+stateflow 5 模型代码

零基础速成simulink代码生成——DBC文件CAN报文+stateflow 5 模型代码 ; 此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

2023-06-23

零基础速成simulink代码生成-结合CANOE的DBC文件CAN报文代码生成 移植到硬件4 模型

零基础速成simulink代码生成——结合CANOE的DBC文件CAN报文代码生成 移植到硬件4 模型;此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

2023-06-23

零基础速成simulink代码生成-stateflow基础3 例子

零基础速成simulink代码生成——stateflow基础3 此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

2023-06-23

零基础速成simulink代码生成-简单滤波器实现2 简单滤波器模型

零基础速成simulink代码生成——简单滤波器实现2 此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

2023-06-23

零基础速成simulink代码生成-matlab基础介绍1

零基础速成simulink代码生成——matlab基础介绍1 涵盖多个demo模型 此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

2023-06-23

CANOE入门到精通-CANOE系列教程记录2

CANOE入门到精通——CANOE系列教程记录2

2023-04-30

Cortex-M内核系列和STM32-讲座,Cortex-M内核系列和STM32,现场保护和恢复现场原理

Cortex-M内核系列和STM32-讲座,Cortex-M内核系列和STM32,现场保护和恢复现场原理

2023-04-26

SPI_DEMO.rar

STM32主从双机SPI通信测试.(stm32f103与stm32f103、stm32f103与stm32f429)

2021-08-09

嵌入式常见经典笔试题.doc

嵌入式常见经典笔试题.doc

2021-08-02

室内定位UWB.zip

uwb点对多距离测试

2021-08-02

空空如也

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

TA关注的人

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