自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ARCH-03 ECU 抽象层

IoHwAb是比较特殊的Ecal层,它封装了IO 的Mcal ,但IO没有服务层,直接暴露在RTE中与 APP 的SWC交互。I/O 硬件抽象是一组模块,它从外围 I/O 设备(片上或板载)和 ECU 硬件布局(例如 μC 引脚连接和信号电平反转)的位置抽象出来。I/O 硬件抽象并不从传感器/执行器中抽象出来!,它实际是一组模块的组合,不限于MCAL提供的IO,也可能使通过I2C,SPI等通信扩展的板载IO,如Tle75xxx系列等。表示连接到 ECU 硬件的 I/O 信号(例如电流、电压、频率)。

2025-03-15 11:21:37 53

原创 【vscode-03】AUTOSAR CP 插件配置

vscode-commandbar和adamstool是我最爱的两个底部工具栏插件vscode-commandbar可以自定义底部工具栏图标的功能,还可以绑定脚本,可以参考嵌入式跨平台工具链终极方案-优快云博客adamstool 简单但高效的工具栏代码的前进后退及打开命令窗口简单高效。

2025-03-15 11:19:01 193

原创 【vscode-01】vscode不同项目不同语言扩展插件隔离方案

常年月累,安装了太多太多的插件,但是这个插件又不是在所有的项目中都需要,我就在想:有没有一个很好的方案,让我在每个项目中使用指定的插件,而不是启动所有的插件。我觉得这种方法比code-workspace更好的地方在于,不同的项目使用不同的开发语言,冲根本上实现了隔离,让IDE保持清爽的界面,让我们更愉快的开发代码。新的profile 配置,发现是一个很干净的环境,如“白月光”一样的新vscode,这样就很“轻巧”了。,只能推荐使用某些插件,无法屏蔽禁用不需要的插件,那怎么办呢?如果没有提示,就执行命令板。

2025-03-13 20:52:46 1407

原创 【ARCH-02】 MCAL 与CDD Layer

Complex Drivers是指:即可以直接访问MCU的寄存器又做了ASW的逻辑处理的模块,功能对一些硬件特性或者时间要求敏感,无法通过分层的标准模块实现的功能,称之为复杂驱动。普通的板载外设并不复杂,不在这个概念之中。用于 SHE 或 HSM 等片上加密设备的驱动程序,通常用于信心安全加密使用,一般购买安全包集成,我们可配置的内容少,主要是调用接口做算法处理。Mcal是系统中直接与MCU直接交互的软件层,这一部分一般由各芯片厂商提供,在AUTOSAR中定义了汽车常用的芯片外设类型。

2025-03-13 20:48:44 59

原创 【EB-07】TC397 Tresos 导入通信ARXML

COM也有很多信号,两路DBC是一样的,导致名称无法区分,需要优化DBC生成ARXML配置。可以看到网络信号上增加了CAN 通道的标识符,这样避免不同dbc,通信号问题。EB Tresos不像其他工具会自动加入模块,需要我们手动去加入对应的模块。CAN模块可以看到导入了两路CAN。加入模块后再执行配置导入模块。再按之前的导入看下信号。优化ARXML的生成。

2025-03-02 12:12:28 487 3

原创 【UDS】0x86 service

UDS(统一诊断服务)中的0x86服务,即ResponseOnEvent(基于事件响应)服务,是一种特殊的诊断服务。这种服务主要用于ECU的前期开发阶段,在售后和生产中不常使用。客户端来指定事件(包括可选择的事件参数)以及要执行的服务(包括服务参数)。注意:上图假设在服务端下电之前事件窗口计时器(event window timer)配置成超时,因此最后ResponseOnEvent的肯定应答报文在事件超时窗口的最后才会显示。3E服务值至此0子服务,即00/80子服务,用于诊断保持会话,用于保持当前会话。

2025-03-02 12:10:45 51

原创 《我的AUTOSAR之路》ARCH-01 AUTOSAR分层软件架构的详细介绍

1. 引言2. AUTOSAR分层软件架构概述2.1 AUTOSAR分层软件架构的优势3. 应用层(Application Layer)4. 运行时环境(Runtime Environment, RTE)5. 基础软件层(Basic Software, BSW)5.1 微控制器抽象层(Microcontroller Abstraction Layer)5.2 ECU抽象层(ECU Abstraction Layer)5.3 复杂驱动层(Complex Drivers Layer)

2025-02-26 21:23:01 190

原创 【EB-06】SystemCreator dbc转arxml

EB Tresos 对dbc直接导入的支持不是很完善,dbc也不是AUTOSAR标准的数据库文件,EB建议所有通信矩阵通过ARXML交互比较合理(AUTOSAR定义的),如果使用dbc将CAN信息导入EB Tresos,会导致部分信息丢失,这样就要重复更改配置,对于工程开发不合理。为了解决这个问题,EB提供了一个工具"SystemCreator"可以将dbc直接转化为ARXML文件,然后作为通信矩阵输入给EB Tresos配置工具使用。Step4 : 生成的ARXML文件。里面的信息和我们配置的一致。

2025-02-26 21:19:34 666

转载 CANdelaStudio与DaVinci Developer Classic的数据交互

也就是说,上诉诊断模块的配置信息可以在DEXT文件中定义和描述,并导入配置工具,如DaVinci Configurator Classic/Adaptive,进而生成对应模块的配置代码,从而简化软件的开发难度。DEXT不仅描述通过各自协议传输的数据,还包括ECU应用层软件中的初始数据。CANdelaStudio 21/22版本实现了与DaVinci Developer Classic进行数据交互的功能,完善了Vector诊断开发工具链的功能,提高了诊断开发的效率,并在提高质量的同时缩短开发时间。

2025-02-26 21:17:35 25

原创 【EB-05】TC397 Tresos 配置Dio模块

Dio的通道组定义与Port组定义相识,完全与芯片手册的Pxx定义一致,与Port不一样的是,不需要把设有的端口都定义出来,但是DioPortId需要与芯片手册的Pxx定义完全一致,如下图所示,Pxx没有3~9定义。单个Dio在Dio组中定义,单个Dio在Dio组中的定义与芯片手册一致,如P00.6,就是DioChannelId = 6,在DioPort_0组。Dio用于控制数组输出和数字输入端口,不涉及ADC,PWM等输入输出端口。校验将所有的错误修复,就可以生成代码。

2025-02-25 21:09:50 82

原创 《我的AUTOSAR之路》Det 解析

默认错误追踪器(DET):该规范描述了默认错误追踪器(DET)的API,所有在基础软件(BSW)中检测到的开发和运行时错误都会报告给该模块。API参数:API参数允许追踪错误的来源和类型,包括检测到错误的模块、函数和错误类型。功能实现:DET模块的具体功能实现由软件开发者和集成商根据具体应用和测试环境选择。可能的功能包括设置调试器断点、计数报告的错误、使用默认值处理运行时错误、在RAM缓冲区中记录调用和传递的参数、通过通信接口将报告的错误发送到外部日志记录器等。

2025-02-25 21:08:09 199

原创 【UDS】s19文件解析

S19(S-Record) 文件是一种广泛应用于嵌入式系统开发中的文件格式,摩托罗拉于1970s发明,主要用于存储程序的可执行代码和相关数据。它以文本格式呈现,便于人工阅读和修改,同时也易于被各种编程器和调试器读取和使用。S19 文件通常伴随着 Hex 文件,尤其是在微控制器编程领域中。S19 是一种用于记录二进制信息的文件格式,它以 ASCII 文本的形式存储了二进制数据的十六进制值。

2025-02-24 20:40:13 248

原创 【UDS】HEX 文件解析

HEX文件是Intel规定的一种标准文件格式,通常用于存储程序代码或数据,以便在嵌入式系统中烧录到微控制器或其他硬件设备中。它是一种通用的文件格式,广泛应用于电子工程和嵌入式开发领域。HEX文件的主要作用是将二进制代码转换为一种可读的文本格式,方便在不同的设备之间传输和存储。它通常包含程序的指令、数据以及一些必要的信息,如地址和校验和。通过HEX文件,开发者可以将编写的程序烧录到硬件设备中,使其能够正常运行。HEX文件的扩展名通常是.hex。

2025-02-24 20:38:51 85

原创 【EB-04】TC397 Tresos 配置Port模块

Port模块的Api我们一般不直接调用,每家的Port实现上有些差异,主要就是实现pin 的功能现在,在MCU中,一个pin通常可以映射到多个功能上,通过Port模块来配置他的具体映射功能。Tc3xx系列的芯片,Mcal必须把所有可配置的Port都建立起来,点击图中的+,会自动增加所有的Port组,直到无法增加。同Port组配置原理,每个Port组能配置多少个Port 直接点+,直到无法增加Port。正常清空下不会调用Port的接口,如果特殊功能使用Port的AUTOSAR接口,可以参考。

2025-02-23 12:30:57 42

原创 【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

2025-02-23 12:29:40 385 5

原创 【AB-04】 AUTOSAR builder创建Composite

在AUTOSAR Builder中,所有的Composition都市显示TopLevelComposition,真正在RTE中起Component Mapping和RTE 连线关系的只有主系统下的Composition。直接在图中,选择Port,出现”+”后,按住鼠标左键,拖到需要相连的Port上Connection。为了让EB RTE可以高效识别AB制作的Component,需要在系统中注册。图中直接将3通过鼠标拖拽到4位置,即完成Component Mapping。

2025-02-22 14:28:31 45

原创 【EB-02】TC397 Tresos 最小工程配置

主要设置McalLibPublishedInformation 参数,会根据ResourceM配置的芯片自动加载。可以看到再工程目录中生成了output文件夹,里面由这些模块生成的头文件,编译脚本和epc文件。如果选择生成swcd,可以生成xxx_Bswmd.arxml给别的工具使用。如果没有Error和Problems就可以点击生成代码。点击工程校验看看工程是否由错误。

2025-02-22 12:05:26 56

原创 【EB-01】 EB Tresos基本使用

EB在AUTOSAR CP中的核心产品EB Tresos Studio,他不仅是Mcal配置的标准化工具,几乎市面上所有的MCU 的MCAL都是由Tresos(包含竞争对手的产品也是集成Tresos来配置Mcal),EB在CP端并不提供SWC生成软件,EB推荐使用达索的AUTOSAR Builder来配合使用,当然也可以与其他工具配合使用,如Vector 的davinci developer,需要自己去探索集成。下图所示,2和3区域都是模块配置项的导览,2为图形化界面,3为列表展开。得到最小工程需求模块。

2025-02-22 12:03:45 733 1

原创 AB-03 AUTOSAR builder创建SWC

SWC:Software Component 软件组件。

2025-02-21 08:24:25 165

原创 AB-02 AUTOSAR builder创建工程

此处建立的ARXML如果EB想要自动加载,需要在EB的导入中设置对应的路径,这样AUTOSAR builder 与EB可以快速联动。文件资源管理区:创建arxml文件,右键->New->AUTOSAR File。设置arxml名称,路径,Package名称。

2025-02-21 08:22:50 277

原创 【AB-01】 AUTOSAR Builder软件安装

AUTOSAR builder使用安装包进行安装即可,注意,在安装过程中会提示需要license,选择跳过或者其他选项,使得软件安装完成即可。打开软件的界面如下,在下部状态栏会提示没有License。EB Tresos是免安装的或者使用EB提供的安装软件安装到指定位置,默认在C盘。

2025-02-20 21:22:36 77

原创 【万字长文】AUTOSAR团队代码Git 管理与使用规则

此文档目的是为了规范软件开发、集成、发布的流程和保证软件质量。同时也是为使用git进行代码管理的软件工程师提供一定的指导。

2025-02-20 21:20:07 188

原创 cmake foreach 条件判断

可以看到与上面的LISTS查找方式不一样的时ZIP时多个LIST同时查找,而LISTS时3按顺序查找。中的每个项目调用一次记录的命令列表。在每次迭代开始时,变量。的作用域被限制为循环作用域,不需要像C语言一样单独定义,之间的所有命令都被记录下来而不被调用。是由空格或空白分隔的项目列表。将被设置为当前项的值。多组LISTS同时查找。

2025-01-17 16:32:43 515

原创 CanTp 笔记

我们通常的CAN/CAN TP主要是传输8Bytes/64Bytes数据,但是在我们的控制器中,部分场景需求使用超过这个规定长度的数据,物理层又不支持。为了解决这一问题,引入了一个软件协议层–Transport Protocol,即TP层,通过一定的发送规则,将can报文组合成一个较长的数据报文格式。这个应用主要用于诊断场景,也称为DoCAN(Diagnostic communication over Controller Area Network ),此定义规范在ISO15765中。

2025-01-17 16:31:05 321

原创 cmake install 与findpackage使用

在项目开发中,我们想要把某些文件编译成库并分享给别人怎么办?

2024-12-15 10:09:56 815

原创 嵌入式跨平台工具链终极方案

我们从8051开始学习嵌入式,用过了不少IDE,比如经典的keil和IAR,但是这些IDE都不便宜,如果不用点科学手段,我们是无法使用的。秉承做个正值合法,诚实守信的良好公民,我们还是需要找到更完美的开发方案,不仅能节约个人或者公司的开发成本,还能大大提高开发技术和效率。今天给大家推荐一套开源免费的跨平台开发方案工具链:“ vs code + GCC(或者其他编译器)+CMAKE+xmak/ninjia + vscode-commandbar +git+JLINK(芯片公司提供的IDE)"

2024-12-15 10:08:09 1147

原创 cmake 条件判断 if...else

如果if为真,则执行if块中的命令,否则是elseif的判断,如果都不存在真的条件,则执行else块中的命令,最后需要以endif解释判断。首先计算括号内的条件,然后像其他示例一样计算剩余的条件。如果有嵌套的括号,最里面的括号将作为计算包含它们的条件的一部分进行计算。中的逻辑运算符有NOT 非,AND 和,OR 或三种运算符,基本格式。如果两个条件都被单独认为为真,则为真。如果任一条件单独被认为为真,则为真。其他特殊的条件,参考cmake。如果条件不为真,则为真。

2024-12-14 16:59:41 441

原创 cmake 变量定义set 和unset

在CMAKE 中没有定义类型概念,set定义变量都AUTO类型,系统自动分配。在使用set关键字时,定义一个变量必须给出变量值value;如果没有给出变量值,则认为清空变量,相当于如果给出选项,则变量将设置在当前范围之上的范围中。每个新目录或function()命令创建一个新范围。还可以使用以下命令创建范围 block()命令。将变量的值设置到父目录、调用函数或包含范围(以适用于当前情况的为准)。

2024-12-14 16:58:01 1134

原创 如何使用CMAKE gcc生成一个库文件?

相反,它们通常在运行时使用特定的系统调用(如dlopen在Unix-like系统中,或LoadLibrary在Windows系统中)动态加载。通常我们需要根据芯片来选择指定的编译器,如果我们不指定,默认我们电脑自带的编译器(电脑是什么平台,编译器就是什么平台)。比如我们的X86电脑需要编译ARM M核的,我们就需要指定编译器。为当前或者父目录的最后一次project()命令的源目录,它不受子目录作用域的project()影响。注意:编译器必须在比较考前的位置设备,否则不生效,会使用系统自带的gcc编译器。

2024-12-03 20:52:31 1119

原创 如何使用CMAKE 将elf 转成二进制文件

我们调试的时候一般使用生成的可执行文件xxx.elf,文件中不仅包含了二进制文件,还包含了debug 信息,如果不用调试器,我们是无法直接烧入到芯片内部的,在正常程序开发和发布中,我们一般不会把elf发给客户或者工厂,而是转换成二进制文件取release。都是可执行的文件(win exe,linux 不带后缀的elf,内部包含各种信息,而不是直接的二进制,但是在嵌入式MCU开发中,我们需要可烧入的文件却是二进制,直接写入内存中。执行相关命令可以将elf中的二进制转换成不同的格式。GCC的objcopy。

2024-12-03 20:50:55 656

原创 windows 使用cmake 问题解决方案

在cmakelists.txt中设置的CMAKE_C_COMPILER 和 CMAKE_CXX_COMPILER,报编译信息使用系统自带的Building for: Visual Studio xx xx。在windows中gcc-arm链接报unrecognized option ‘–major-image-version’,原因:CMAKE 会识别系统,然后使用系统编译器。原因:CMAKE在windows 下选择GCC需要使用-G命令。需要在CMAKE 中将系统设置为无系统模式。

2024-11-24 19:47:32 556

原创 如何使用CMAKE gcc生成一个可执行文件?

通常我们需要根据芯片来选择指定的编译器,如果我们不指定,默认我们电脑自带的编译器(电脑是什么平台,编译器就是什么平台)。比如我们的X86电脑需要编译ARM M核的,我们就需要指定编译器。为所有配置生成时使用的语言的存储区范围标志。这包括驱动编译的调用和驱动链接的调用。为当前或者父目录的最后一次project()命令的源目录,它不受子目录作用域的project()影响。注意:编译器必须在比较考前的位置设备,否则不生效,会使用系统自带的gcc编译器。链接属性与编译器相关,不同的编译器可能不一样。

2024-11-24 19:44:59 998

原创 《我的AUTOSAR之路》UDS 0x38 service

UDS 0x38服务,又称为文件传输服务RequestFileTransfer,是一种在汽车诊断通信中用于初始化文件数据传输的服务。

2024-11-19 21:03:24 327

原创 《我的AUTOSAR之路》UDS 0x35 service

其中request的第三位44 分别表示[80 00 00 00]的字节的长度和[09 68 F4 00]数据长度的字节长度,而响应的第二位40中的4表示后面[00 40 00 00]的字节长度。0x35服务,也称为RequestUpload服务,在统一诊断服务(UDS)中用于初始化从服务器(通常是汽车的ECU)到客户端(如诊断工具)的数据传输。dataFormatIdentifier, 00 表示不操作,非00 由OEM自定义,高半字节为“压缩”方法,低半子节为“加密”方法。

2024-11-19 21:01:23 285

原创 《我的AUTOSAR之路》UDS 0x37 service

UDS 0x37 服务:RequestTransferExit请求传输退出,即客户端使用此服务终止客户端和服务器之间的数据传输(上传或下载)。transferResponseParameterRecord 为可选参数,通过OEM自定义是否使用。所有示例为 UDS 数据,非 UDSonCAN TP 模式显示。data format 表格所示。一般用于0x36服务后面。服务支持以下 NRC。

2024-11-01 10:42:26 155

原创 《我的AUTOSAR之路》UDS 0x36 service

当收到 RequestDownload(34)、RequestUpload(35)或 RequestFileTransfer(38)请求消息时,服务端的 blockSequenceCounter 会初始化为 1。这意味着 RequestDownload (34)、RequestUpload (35) 或 RequestFileTransfer (38) 请求消息之后的第一条 TransferData (36) 请求消息以 blockSequenceCounter 1 开头。

2024-11-01 10:40:50 293

原创 《我的AUTOSAR之路》 UDS 0x3E service

在 ISO 14229 的实现规范中,可以找到在将单个服务器或多个服务器保留在 defaultSession 以外的诊断会话中时,适用于使用此服务的详细会话要求。UDS 0x3E服务,即TesterPresent服务,是一种在统一诊断服务(UDS)中使用的诊断会话保持机制。这对于保持非默认会话模式特别有用,因为在非默认会话模式下,ECU可以执行更多的诊断服务和操作.3E服务值至此0子服务,即00/80子服务,用于诊断保持会话,用于保持当前会话。

2024-10-28 16:42:38 231

原创 《我的AUTOSAR之路》UDS 0x2C service

USD 0x2C服务,全称为Dynamically Define Data Identifier(动态定义数据标识符服务),是一种在统一诊断服务(UDS)中使用的服务。它允许客户端(如诊断工具)在服务器(如车辆的电子控制单元ECU)上动态地定义一个新的数据标识符(DID),这个新的DID可以在之后通过其他服务,比如0x22(Read Data By Identifier,按标识符读取数据服务)或0x2A(Read Data By Periodic Identifier,按周期性标识符读取数据服务)来读取数据

2024-10-28 16:41:13 301

原创 《我的AUTOSAR之路》UDS 0x3D service

UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服务器(通常是ECU,电子控制单元)的一个或多个连续存储单元写入信息。0x3D服务与0x24服务为姊妹服务,一个是读取,一个是写入,两个格式相近,只是把24服务的返回数据,在34服务的清酒后面体现,其他的完全一致。所有示例为 UDS 数据,非 UDSonCAN TP 模式显示。3D服务的肯定响应报文正好与24的请求格式一致。data format 表格所示。服务支持以下 NRC。

2024-10-19 18:26:42 259

原创 《我的AUTOSAR之路》UDS 0x23 service

23服务没有子服务,其功能单一,就是用来读取ECU的指定内存值。地址和长度定义,与34/35服务的对应值一致内存地址,长度定义在在上一个参数memorySize定义需要读取内存的长度以上参数定义与UDS其他服务的内存读写定义一致。

2024-10-19 18:25:08 227

AUTOSAR det错误码查询

AUTOSAR det错误码查询查询工具,用来定位AUTOSAR模块故障位

2025-02-21

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

TA关注的人

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