S32DS导入外部LDF文件出错处理办法

article/2025/9/26 9:41:09

文章目录

      • 前言
      • 1.LIN版本更迭
      • 2.LDF简介
        • 2.1 LIN2.1版本LDF
        • 2.1.1 全局定义
        • 2.1.2 节点定义
        • 2.1.3 信号定义
          • 2.1.3.1 标准信号定义
          • 2.1.3.2 诊断信号定义(可选)
        • 2.1.4 帧定义
          • 2.1.4.1 无条件帧定义
          • 2.1.4.2 事件触发帧定义(可选)
          • 2.1.4.3 零星帧定义(可选)
          • 2.1.4.4 诊断帧定义(可选)
        • 2.1.5 节点属性定义
        • 2.1.6 调度表
        • 2.2 J2602版本LDF
        • 2.3 LIN2.2/2.2A版本LDF
      • 3. LIN Stack介绍
        • 3.1 S08/S12/KEA的LIN Stack
        • 3.2 S32K1xx的LIN Stack
        • 3.3 两个LIN stack配置工具的冲突
      • 4.常见导入错误类型
        • 4.1 缺少参数
        • 4.2 参数格式错误
      • 5.参考资料

前言

目前汽车尾灯上面使用LIN总线已经是司空见惯的了,有些预算高的甚至会上CAN总线。然而有些车灯客户的电子工程师对LIN总线未曾深入了解,在实际做项目时遇到LIN相关的问题会不知所措。建议大家阅读瑞萨的《LIN总线入门.pdf》或者笔者之前整理的《LIN总线介绍PPT》
目前笔者支持的车灯客户遇到最多的是和LDF文件相关的问题。当车厂甩过来一个LDF文件,客户使用开发工具导入该LDF时会弹出很多错误,由于对LDF文件不够熟悉,无法确定问题出在哪里,使得开发的进度受阻。
下文将介绍不同版本的LDF文件,以及一些常见的LDF文件导入错误的解决办法。

1.LIN版本更迭

lin的版本更迭如下图:

版本发布时间备注
LIN1.01999-07-01LIN规范的初始版本
LIN1.12000-03-06增加协议规范,配置语言规范和API规范
LIN1.22000-11-17
LIN1.32002-12-13主要对物理层进行修改,提高了节点之间的兼容性
LIN2.02003-09-16大的版本变动,支持配置,增加诊断规范,规定了节点性能文件
LIN2.12006-11-24澄清LIN2.0,增加节点配置规范,传输层和诊断独立成章
LIN2.22010-12-31弱化位采样规范,移除起始位的采样规范
LIN2.2A2010-12-31更正了第 2.6.2 章中的唤醒信号定义

2.LDF简介

从LIN2.0版本开始已经有了节点性能文件的规范,从LIN规范中的工作流(如下图)可以看出,LIN子网设计工具会收集节点性能文件的信息,自动生产LIN描述文件,即LDF。
0

一般的LDF编辑查看工具可选的版本有5个,如下所示。

  • LIN1.3
  • LIN2.0
  • J2602
  • LIN2.1
  • LIN2.2/LIN2.2A

LDF版本虽然很多,但是调用LDF配置的LIN协议栈使用的API就两个版本,LIN2.1的API和J2602的API。
目前国内车厂用的比较多的是LIN2.1和LIN2.2版本的LDF,北美车厂用的比较多的是J2602版本的LDF。下面介绍下这三个版本的LDF。

2.1 LIN2.1版本LDF

LIN2.1的出现主要是为了澄清LIN2.0,同时增加了节点配置规范,传输层和诊断独立成章。
LIN2.1规范中对LDF的定义如下:
1

下面针对上图划分的六部分结合示例进行说明。
示例LDF选择S32DS for ARM2.2(安装在D盘)自带的LIN例程使用的LDF,地址如下:
D:\NXP\S32DS_ARM_v2.2\S32DS\software\S32SDK_S32K1xx_RTM_3.0.0\examples\S32K144\demo_apps\lin_master\Sources\LIN21.ldf

2.1.1 全局定义

2

如上图所示,这一段首先定义该文件为LDF,然后选择LIN协议版本和语言版本,最后确定LIN波特率。
注意:通道名称是可选项,当同一个主节点连接了多个LIN集群,即使用多个LDF,将通道名称作为后缀用以区分。一般情况用不上。

2.1.2 节点定义

3

如上图所示,这一段分别定义主节点和从节点:

  • 主节点:名称,时基,抖动
  • 从节点:每个从节点的名称

2.1.3 信号定义

信号原本有三类,标准信号,诊断信号和信号组,但是信号组只在LIN1.3中使用,LIN2.x版本不再使用。

2.1.3.1 标准信号定义

标准信号编码类型有两种,一种是标量信号(scalar signal),长度范围为1bit~16bit;一种是数组信号(array signal),长度为8bit的倍数且最大64bit。
4

如上图所示,该段用于编写标准信号,包含信号名称,长度,初始值,发布节点和收听节点,array signals的初始值用数组表示,数组的元素个数N = Size / 8bit。
特别说明:每个从节点都需要预先定义一个长度为1bit的响应错误信号,这个在节点属性定义时需要用到

2.1.3.2 诊断信号定义(可选)

5

如上图所示,由于诊断信号不需要定义发布者和接收者,所以需要和标准信号分开定义。

2.1.4 帧定义

帧一共有五类,分为无条件帧,事件触发帧,零星帧,诊断帧和保留帧。保留帧(帧ID为0x3E和0x3F)在LIN2.x版本不使用。

2.1.4.1 无条件帧定义

无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。无条件帧的帧ID范围为0~0x3B。
6

如上图所示,这一段主要定义了帧名称,帧ID,发布节点,数据段字节数以及包含的信号名称和偏移量。

2.1.4.2 事件触发帧定义(可选)

事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。帧ID范围同上。
7

如上图所示(由于示例LDF没有定义这部分,截取的LIN2.1规范的例程),主要包含了帧名称,冲突解决进度表,帧ID,关联的无条件帧。

2.1.4.3 零星帧定义(可选)

零星帧帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。帧ID范围同上。
8

如上图所示,这一段主要定义帧名称以及选择关联的无条件帧,关联的无条件帧的发布节点必须是主节点。

2.1.4.4 诊断帧定义(可选)

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。
9

如上图所示,这一段用于配置主机请求帧(帧ID为0x3C)和从机应答帧(帧ID为0x3D),数据段规定为8个字节,一律采用标准型校验和。

2.1.5 节点属性定义

10

这一段主要定义从节点的属性,包含从节点名称,LIN协议版本,NAD配置值,NAD初始值,产品ID(供应商ID,功能ID,变量),选择响应错误信号,P2_min,ST_min,N_As_timeout,,N_Cr_timout,可配置的帧列表。

2.1.6 调度表

调度表的功能有很多,包含调度帧,分配NAD,保存配置等。这个例程只使用了调度帧的功能。
11

最后一段进行调度表的定义,包含调度表名称,帧名称,帧时隙。

2.2 J2602版本LDF

SAE J2602的目标是通过解决LIN2.0的模糊、矛盾或可选的要求来提高网络中不同LIN设备之间的可互操作性和可交互能力。
LIN2602的LDF和LIN2.1的LDF主要区别如下:
【全局定义部分】:

  • 波特率固定在10.417Kbps。

【帧定义部分】:

  • 从节点发布的帧消息第一个字节必须是状态字节,由5bit的应用信息字段(低5位)和3bit的错误字段(高3位)组成。如下图所示:
    12

  • 不允许使用事件触发帧 。

【节点属性定义部分】:

  • 节点属性不需要N_As_timeout和N_Cr_timeout;
  • NAD的值范围为96到110;
  • 错误响应(Response error)为3bit。

2.3 LIN2.2/2.2A版本LDF

13

上图是S32K1xx的LIN协议栈的介绍,结合LIN2.2A规范的变更介绍可知(1.1.7.6章节),LIN2.2/2.2A只是在LIN2.1的基础上进行了一些拼写修正和澄清。LIN2.2/2.2A版本的LDF文件相比LIN2.1版本的LDF并没有什么区别。

3. LIN Stack介绍

目前笔者用过的LIN Stack就两种,一个是S32DS自带的S32K1xx_LIN_Stack,一个NXP官网推荐的S12_LIN_Stack。两个LIN Stack对比情况如下:

LIN StackS32K1xx_LIN_StackS12_LIN_Stack
支持的版本LIN1.3,LIN2.0,J2602,LIN2.1,LIN2.2、2.2ALIN2.0,J2602,LIN2.1
LDF源文件不支持高亮显示和编辑支持高亮显示,可以编辑
LDF图形配置查错效果更好,但是编辑功能体验较差支持查错和编辑
协议栈源码开放开放

查看LDF文件是否有格式错误时,建议使用Processor Expert的LIN组件;如果需要编辑LDF,建议使用S12_LIN_Stack自带的NCF Tools。主要原因是Processor Expert的LIN组件修改LDF的参数时经常卡死,使用体验较差。

3.1 S08/S12/KEA的LIN Stack

S12_LIN_Stack支持S08/S12/KEA三个平台,详细介绍参考文章《如何使用S32DS开发KEA系列的LIN功能(一)》

3.2 S32K1xx的LIN Stack

S32K1xx的开发环境自带LIN Stack,Processor Expert中有配套的LIN组件(如下图),和S12_LIN_Stack自带的NCF Tool差不多,参考NCF Tool即可。
14

3.3 两个LIN stack配置工具的冲突

在使用上述两款工具时,发现两款工具对LDF文件某些参数的处理有些冲突,下面简单介绍下笔者已经发现的冲突。为了描述方便,Processor Expert中配套的LIN组件简称LIN组件,S12_LIN_Stack自带的NCF Tool简称NCF工具

  1. Message ID:
    LIN组件加载J2602版本的LDF时,会要求加上message ID,NCF工具不需要添加。奇怪的是LIN组件在Message ID文字下面显示“只有LIN2.0支持Message ID”,查阅J2602-1规范中文版,里面又有信息标识符的描述,但是没有LIN2.0描述清晰。
  2. 状态字节:
    LIN组件会检查J2602版本LDF的无条件帧(从节点发布)的第一个字节是否是状态字节,但是NCF工具不会进行检查。查阅J2602-1规范中文版,5.8.6章节描述的要求和LIN工具一致。个人建议编写J2620的LDF时遵循规范。
  3. 产品ID:
    LIN工具对Product ID中的Supplier ID和Function ID的范围定义分别为0 ~ 0x7FFE和0 ~ 0xFFFE,但是LIN工具对其定义的范围都是0 ~ 0xFFFF。查阅LIN2.0规范中文版,2.2.2章节描述的要求和LIN工具一致;查阅LIN2.1和LIN2.2A规范,4.2.1.1章节给出的通配符值分别为0x7FFF和0xFFFF。
  4. 位宽和容忍度:
    LIN工具在J2602版本LDF的主节点定义部分,不需要定义Bit length和Tolerant,但是NCF工具需要定义。查阅J2602-1规范中文版,没有找到这两个参数的定义。

4.常见导入错误类型

下面简单介绍一些在支持客户时常见的问题。

4.1 缺少参数

1.需要使用NCF工具加载J2602的LDF,但是没有添加Bit length和Tolerant:
15

2.节点定义部分没有进行可配置的帧的定义:
16

3.LDF更改导致原来的主节点变成从节点,忘记加上响应错误信号:
17

4.2 参数格式错误

1.使用J2602版本的LDF时,状态字节的格式错误:
18
在这里插入图片描述

5.参考资料

  • LIN规范包 版本2.0;
  • SAE J2602-1 2005年9月修订;
  • SAE J2602-2 Issued SEP2005;
  • 瑞萨的《LIN总线入门.pdf》;
  • LIN Specification Package Revision 2.1;
  • LIN Specification Package Revision 2.2A;

http://chatgpt.dhexx.cn/article/XuPivmug.shtml

相关文章

【从LDF到C语言】

从LDF到C语言 frame的Init list 汽车电子中我们经常要将LDF翻译成C语言。其中有不少需要注意的点。 frame的Init list 下面举一个例子。 LDF中有一个Frame名为Test_cmd, 这个frame中有很多的signal如下图 从图中可以看出,Signal在Frame中并不是连续排列的。 第一个…

ADSP21489工程中LDF文件配置详解

一直都没有搞懂LDF文件是怎么回事,后续翻到这个文档<cces-LinkerUtilities-manual.pdf>才认真的看了一下 先搞懂ADSP21489的片上RAM空间大小是5Mbit 5Mbit 160k字的32位数据 320k 字的16位数据 106.7k字的48位指令(或40位数据)或不同大 小字的组合 只要不超过…

服务器mdf ldf文件,数据库mdf和ldf文件上传到服务器

数据库mdf和ldf文件上传到服务器 内容精选 换一换 使用DLI提交SQL作业查询数据。基本流程如下&#xff1a;步骤1&#xff1a;登录华为云步骤2&#xff1a;上传数据至OBS步骤3&#xff1a;登录DLI管理控制台步骤4&#xff1a;创建队列步骤5&#xff1a;创建数据库步骤6&#xff…

BUSMASTER LDF编辑工具制作LDF文件

本文摘要&#xff1a;本文章介绍如何使用BUSMASTER V3.2.2软件中的LDF编辑工具制作LDF文件 使用软件&#xff1a;BUSMASTER V3.2.2 -> LDF Editor 软件下载地址&#xff1a; https://download.csdn.net/download/m0_50669075/85190261 以下叙述的步骤只是为了描述清晰&a…

mdf ldf 导入 mysql_mdf和ldf导入数据库

Sql Server 错误5123/5120 附加数据库错误 Microsoft Sql Server 在附加数据库时&#xff0c;重装了系统并重命名主机名 或者 使用windows身份登陆 都有可能造成这个结果在Vista 或者Windows7下可能会报这样的错误 原因是对想要附加的数据库文件(.mdf)和日志文件(.ldf) 没有操作…

LDF文件步骤及内容详解

LDF文件第一部分——ldf文件配置 LIN_description_file; //LIN描述文件 LIN_protocol_version 2.1;//LIN协议版本 LIN_language_version 2.1; //LIN语言版本 LIN_speed 19.2 kbps; //LIN的通信速度 第一部分是必不可少的&#xff0c;属于全局定义。我们可以把等号左边…

LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(二)之LDF文件创建

LDF文件创建 一、摘要1.描述2.关键字 二、什么是LDF文件三、LDF创建环境四、LDF创建过程1.软件运行2.新建LDF文件3.修改主节点信息4.修改从节点信息5.新建描述信号6.新建信号消息7.新建报文信息8.新建调度表9.新建其他信息 五、MatrixCreat工具六、其他七、参考 一、摘要 1.描…

LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(三)之LDF文件详解

LDF文件详解 一、摘要1.描述2.关键字 二、为什么要了解LDF文件三、LDF文件构成1.版本2.波特率3.节点信息4.信号信息5.诊断信号信息6.报文消息7.诊断报文消息8.从节点信息9.调度表10.描述信息11.信号描述关联 四、LDF文件解析1.解析版本2.解析节点信息3.解析调度表4.解析报文消息…

LIN数据库文件LDF介绍及使用

LIN总线的项目接触的很少,今天结合CANoe官方文档和自己的理解,浅谈下LIN总线的数据库文件LDF LDF文件 LDF,LIN description file,LIN总线描述性文件,使用LIN 规范中定义的LIN配置语言 创建或编辑LDF文件,需要打开Vector LDF Explorer工具,有三种方式: 通过电脑系统找到…

系统级性能分析工具 — Perf详解讲解

从2.6.31内核开始&#xff0c;Linux内核自带了一个性能分析工具perf&#xff0c;能够进行函数级与指令级的热点查找。通过它&#xff0c;应用程序可以利用 PMU&#xff0c;tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread)&…

Perfetto工具集之traced_perf

1.Perf工具概览 linux中包含了众多性能分析工具&#xff0c;perf&#xff08;特指linux-tools perf&#xff09;工具是2009年在linux内核2.6.31中引入的一个工具。它的主要功能是可以跟踪hardware performance counter(PMU)、tracepoints、software performance counter(hrtime…

perf工具使用

perf研究总结 最近在天数搞一个性能的工具&#xff0c;需要抓callstack 包括用户态和内核的太调用栈&#xff0c;那么就顺便研究了一下perf工具。做了一个简单的总结。 perf --help 显示具体的命令&#xff0c;每个命令如何使用&#xff0c;再perf cmd --help会显示 参考链…

Linux系统性能监控分析工具perf

文章目录 一、perf 工具下载1.在centos7下离线安装2.安装flex3.安装bison 二、设置环境变量三、用MobaXterm 在linux和windows之间上传/下载文件1.连接服务器2.上传文件3.下载 四、perf原理1.perf的使用2.perf简单介绍3.常用命令格式1.perf list2.perf top3.perf stat4.perf pr…

perf工具简介+火焰图制作与解读

perf工具简介火焰图制作与解读 1、perf工具简单原理 perf是一款Linux性能分析工具。Linux性能计数器是一个新的基于内核的子系统&#xff0c;它提供一个性能分析框架&#xff0c;比如硬件&#xff08;CPU、PMU(Performance Monitoring Unit)&#xff09;功能和软件(软件计数器…

perf record/report

性能优化 性能优化通常分为两个阶段&#xff1a;性能分析、性能优化 性能分析&#xff1a;查找性能瓶颈、热点代码&#xff0c;分析引发性能问题的原因。性能优化&#xff1a;基于性能分析&#xff0c;进行性能优化。包括&#xff1a;算法优化&#xff08;空间复杂度和时间复…

perf命令使用

转载申明&#xff1a;本文转载自http://www.brendangregg.com/perf.html 请大家看了之后如果要转载一定要注上这个地址&#xff01;&#xff01;&#xff01; perf Examples The Linux perf_events T-shirt These are some examples of using the perf Linux profiler, which …

Linux perf probe 的使用(三)

文章目录 前言一、Dynamic Tracing二、kprobes2.1 perf kprobe 的使用2.2 kprobe Arguments3.3 tcp_sendmsg()3.3.1 Kernel: tcp_sendmsg()3.3.2 Kernel: tcp_sendmsg() with size3.3.2 Kernel: tcp_sendmsg() line number and local variable 三、uprobes的使用3.1 perf uprob…

linux 性能分析工具perf

perf 性能监控分析工具 perf 工具下载 https://cdn.kernel.org/pub/linux/kernel/tools/perf/v5.9.0/perf-5.9.0.tar.gz 离线安装 tar -xvf perf-5.9.0.tar.gz cd perf-5.9.0 cd tools/perf/ make sudo cp perf /usr/local/bin检查 $ /usr/local/bin/perf --version perf…

linux 性能分析工具——perf

Perf 简介 Perf 是用来进行软件性能分析的工具。 通过它&#xff0c;应用程序可以利用 PMU&#xff0c;tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread)&#xff0c;也可以用来分析内核的性能问题&#xff0c;当然也可以…

专题:性能调优之工具---perf

1. Linux Perf简介 1.1 Perf是什么 Perf 是内置于Linux 内核源码树中的性能剖析&#xff08;profiling&#xff09;工具。它基于事件采样原理&#xff0c;以性能事件为基础&#xff0c;支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热…