XCP概念和基本原理介绍

XCP概念和基本原理介绍

ASAM接口模型描述了Slave和Master之间发送和接收命令和数据。为了独立于特定的物理传输层,XCP被细分为协议层和传输层。

根据传输层的不同,可分为XCP ON CAN、XCP ON Ethernet等。早在2005年XCP ON FlexRay首次亮相时,对新传输层的可扩展性就得到了证明。XCP协议的当前版本是1.3版本,于2015年获得批准。

在设计该协议时优先考虑遵守以下原则:

 

  • ECU 中的资源使用最少
  • 高效沟通
  • 简单的从机实现
  • 即插即用配置,只需少量参数
  • 可扩展性

XCP的一个关键功能是允许对Slave的内存进行读写访问。

读访问让用户测量一个内部 ECU 参数的时间响应。ECU 是具有离散时间行为的系统,其参数仅在特定的时间间隔内发生变化:仅当处理器重新计算值并在 RAM 中更新它时。XCP 在于获取测量值​​​从同步变化的RAM到ECU中处理流程或事件,相关机制将在后面详细说明。

写访问允许用户在Slave中优化算法参数。访问是面向地址的,即内存中主引用地址和从引用地址之间的通信。所以,一个参数的测量本质上是作为一个Master向Slave的请求实现的:“给我内存位置0x1234的值”。参数的校准—写访问—到Slave,意味着:“将地址0x9876的值设置为5”

XCP Slave并不一定需要在ecu中使用。它可以在不同的环境中实现:从基于模型的开发环境到hardware-in-the-loop 和software-in-the-loop件环境,再到通过JTAG、NEXUS和DAP等调试接口访问ECU内存的硬件接口。

 

如何通过对ECU的读写访问来优化算法?这样做有什么好处?为了能够在ECU运行时修改单个参数,必须有访问它们的权限。并不是每种类型的内存都允许这个过程。只可能对RAM中的内存地址执行读写访问(这里有意排除EEPROM)。以下是个人记忆技术之间的差异的简要总结:对它们的知识是非常重要的理解在本书的进一步过程。

Memory基本原理

如今,flash内存存通常集成在ecu的微控制器芯片中,即使没有电源供应,也能长期存储代码和数据。Flash内存的特殊之处在于,对单个字节的读访问确实可以在任何时候进行,但对新内容的写入只能以块的方式进行,通常是以相当大的块进行。

Flash内存的寿命是有限的,这是指定的擦除周期的最大数量(取决于具体的技术,最大可达100万个周期)。这也是写周期的最大数量,因为在再次写入内存之前,必须始终将内存擦除。

当这种擦除程序重复多次时,绝缘层(“隧道氧化膜”)可能会损坏。这意味着电子会慢慢泄漏,随着时间的推移,一些信息会从1变为0。因此,在ECU中允许的闪存周期的数量受到严重限制。在生产ECU中,它往往只在个位数的顺序上。这个限制由Flash Boot Loader监控,它使用一个计数器来跟踪已经执行了多少Flash操作。当超过指定的数量时,Flash Boot Loader拒绝另一个Flash请求。

随机存取存储器(RAM)需要一个永久的电源供应;否则它会丢失内容。Falsh内存用于应用程序的长期存储,而RAM用于缓冲计算数据和其他临时信息。关闭电源会导致RAM内容丢失。与flash内存相比,RAM很容易读取和写入。

这个事实很清楚:如果需要在运行时更改参数,必须确保它们位于RAM中。理解这种情况是非常重要的。这就是为什么我们将基于下面的例子来看看ECU中应用程序的执行:

在应用程序中,y参数是从传感器值x计算出来的。

/ Pseudo-code representation

a = 5;

b = 2;

y = a * x + b;

果应用程序在ECU中闪烁,控制器在启动后按如下方式处理该代码:x参数的值对应传感器的值。因此,在某些时候,应用程序必须轮询传感器值,然后将该值存储在分配给x参数的内存位置中。因为这个值总是需要在运行时重写,所以内存位置只能位于RAM中。

计算参数y。a和b,作为因子和偏移量,存储在flash内存中。它们被存储为常量。y的值必须存储在RAM中,因为这是唯一可以进行写访问的地方。在运行编译器/链接器时,会设置参数x和y在RAM中的位置,以及a和b在flash中的位置。这就是对象被分配到唯一地址的地方。对象名称、数据类型和地址之间的关系记录在链接器映射文件中。链接映射文件是由编译器运行生成的,可以以不同的格式存在。然而,所有格式的共同点是,它们至少包含对象名称和地址。

在这个例子中,如果偏移量b和因子a依赖于特定的车辆,那么a和b的值必须单独适应车辆的特定条件。这意味着算法保持不变,但参数值会随着车辆的不同而改变。

在ECU的正常工作模式下,应用程序从flash内存运行。它不允许对单个对象进行任何写访问。这意味着位于flash区域的参数值不能在运行时修改。如果在运行时可以更改参数值,则要修改的参数必须位于RAM中,而不是闪存中。现在,参数和它们的初始值是如何进入内存的呢?如何解决需要修改更多的参数,而不能同时存储在RAM中的问题?这些问题将我们引向标定概念的话题。

可以通过XCP协议的机制对内存内容进行读写访问。访问是以面向地址的方式进行的。读访问允许测量RAM中的参数,而写访问允许校准RAM中的参数。XCP允许与ECU中的事件同步执行测量。这确保了测量值相互关联。每次重新开始测量时,可自由选择要测量的信号。对于写访问,需要校准的参数必须存储在RAM中。这需要一个标定概念。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜鸟工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值