0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

认识一下并列刷写(Parallel Flash)

冬至子 来源:开心果 Need Car 作者:开心果 Need Car 2022-11-15 16:03 次阅读

我们知道,一辆车上的ECU数量少则几十个,多则上百个。假设这样一种场景,车辆由于某种原因导致一部分ECU功能失效,需要重新更新这些ECU的Application程序,如果一个一个进行更新,势必花费一点时间,而作为消费者,总希望自己的车子能快点修好,维修人员又何尝不是呢?所以,并列刷写(Parallel Flash)和队列刷写(Queued Flash)来了。

再有,在车辆下线时EOL(End of Line),工厂追求效率,一般会1(刷写上位机)拖N(N个 ECU)刷写,这是不是一种Parallel Flash呢?

再次提示:Queued Flash针对 单个ECU ,Parallel Flash针对 多个ECU ,且两种技术可以同时使用。本文,我们认识一下Parallel Flash。

1

整车网络拓扑

在了解Parallel Flash之前,我们先认识一下整车网络拓扑。为便于理解,我们简单示意整车的网络拓扑结构。整车网络中,不仅仅只有Can总线,还会有Ethernet、Flexray以及Lin总线。

图片

如上图,整车中的网关可以分为三种类型:Vehicle GW(Edge Node)、ECU/Domain Network GW、ECU Sub GW。

Vehicle GW(Edge Node) :与外部设备(Tester)通过以太网通信,也称为边缘节点。边缘节点与域网关通过主干网相连,主干网会选择速率相对较高的总线,比如:Ethernet/Flexray。

ECU/Domain Network GW :域网关,整车会分为动力域、影音域等多个域。域网关与子网关或者终端ECU连接,之间可以通过速率相对低一些的Can/Lin总线通信。

ECU Sub GW :子网关,子网关之下会挂接终端ECU,子网关与终端ECU之间可以通过Can/Lin总线通信。

既然Ethernet的速率快,为啥还整这么多总线呢?谁家也不是地主,成本是每家OEM都很在乎的事,保证既定功能目标的前提下,OEM会想方设法地降成本,不然,如何适应丛林法则?Ethernet虽然快,但是成本高,所以,OEM的EE部门在整车的拓扑设计中,会考虑好总线的选择。

2

Parallel Flash刷写流程

假设有两个ECU:ECU01和ECU02需要同时刷写,且ECU01和ECU02均挂接在子网关GW-S下,子网关GW-S在中央网关GW-C下,上位机(Tester)通过以太网(DoIP)进行刷写。这里分两种情况讨论:

第一:GW的处理能力不足

图片

第二:GW处理能力足够

图片

1、刷写流程解析

假设 :用功能寻址发送$19 02 08服务,读取ECU01和ECU02故障信息,回复信息需要 多帧传输

提示 :基于第一种情况讨论

  1. Tester通过DoIP发送一帧功能寻址诊断请求(Request1 = $19 02 08)给GW-C;
  2. GW-C会立即应答上位机(因为DoIP诊断请求使用Tcp协议),这相当于Can总线的ACK应答机制,同时将Request1通过Flexray总线路由给GW-S;
  3. GW-S进一步将Request1由Flexray总线转成Can总线路由给ECU01和ECU02;
  4. ECU01和ECU02在各自的P2Server时间内给出响应,即:首帧(FF:Frist Frame)。 受限于GW-S的处理能力 ,GW-S先给ECU01发送FC.CTS(继续连续帧发送,注意:这里使用物理寻址发送给ECU01),让ECU01先发送CF(Consecutive Frame )帧,而让ECU02等待ECU01处理完(给ECU02发送FC.Wait,物理寻址发送流控等待),当GW-S处理完ECU01以后,再给ECU02发送FC.CTS( 物理寻址发送 ),完成ECU02的处理;
  5. GW-S将Can总线传来的FF转换成Flexray的STFU(Start Frame Unacknowledged),之后通过Flexray总线路由给GW-C;
  6. GW-C接收到GW-S转发的ECU01 LF(Last Frame)帧以后,响应Tester(DoIP Response ECU01);
  7. GW-C接收到GW-S转发的ECU02 LF(Last Frame)帧以后,响应Tester(DoIP Response ECU02)。

2、问题拓展

第一:如上的刷写流程可以看出,诊断命令Request1经过GW-C、GW-S,到诊断命令被处理(P2Server时间),路由消耗的时间不少,从这个角度考虑,能理解OEM为什么会约束严苛的路由时间了吧,就是为了提高刷写的速率。

第二:功能寻址的诊断请求不仅发送给终端ECU(比如:上述的ECU01和ECU02),GW节点也需要处理该诊断指令(比如:上述的GW-C、GW-S)。

第三:我们常常看到这样的约束条件:“ 功能寻址的$3E 00/80指令与物理寻址的非$3E 00/80指令同时请求某个ECU时,功能寻址的$3E 00/80指令需要优先处理 ”。为什么呢?毕竟让节点保持在编程会话更重要。

第四:上述我们看到的是DoIP发送功能寻址给到ECU01和ECU02,这是 同一个指令发送给不同的ECU 。而Parallel Flash中还有一种情况,DoIP分别给ECU01、ECU02发送物理寻址的指令(比如:$10 01),为什么可行?一般诊断中,Ethernet总线的速率是100Mbps,而Can总线速率为500kbps,Ethernet总线速率是Can总线通信速率的200倍,其数据的处理能力足以支撑以太网使用物理寻址给一定量的ECU分别****发送 不同的诊断指令 ,并处理各个ECU的响应数据。

第五:每经过一次GW,指令的路由都会有一定的延迟。

第六:GW处理能力足够与否,首先需要看主芯片的资源是否够用,虽然开辟更多的RAM去处理诊断指令可以使得刷写速率更快(上图中的第二种情况),但是面对的资源开销也是相当可观。尤其当总线转换时,TP层、PduR模块都需要开销资源,而且开销量都不小。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129600
  • ecu
    ecu
    +关注

    关注

    14

    文章

    822

    浏览量

    53888
  • Flash单片机
    +关注

    关注

    0

    文章

    111

    浏览量

    9294
收藏 人收藏

    评论

    相关推荐

    认识一下这款名叫“CAN总线存储器”的神器

    CAN总线数据不能及时查看怎么办?CAN总线数据过多没时间处理怎么办?想要回看CAN总线历史数据又怎么办?总线数据三连问,却只需要一个答案,是时候认识一下这款名叫“CAN总线存储器”的神器了。
    的头像 发表于 05-20 08:08 7997次阅读

    tle9877刷写codeflash(0x11000000-0x1100f000)后,flash刷写失败且中断停止响应怎么解决?

    当前问题:在用户代码运行期间,尝试刷写codeflash(0x11000000-0x1100f000)后,flash刷写失败且中断停止响应。 请问能否直接刷写codeflash?可以的
    发表于 01-31 08:28

    请教一下关于asmi_parallel ip核的使用方法

    的是0x00。使用asmi_parallel2 ip核用avalon总线也不能顺利读取,想请教一下,我是读写的时序,还是因为自动分配的引脚存在问题?
    发表于 06-29 21:01

    UbuntuJflash烧录bin直提示Unable to find a parallel port

    在Ubuntu环境下直接烧录裸机bin,直提示Unable to find a parallel port,不太明白该怎么设置。请大神指点一下,多谢多谢~
    发表于 05-14 02:48

    TCU的刷写

    目前对于大陆TCU的刷写,还找不到款合适的软件!如果用专检刷TCU会存在个问题,安全验证不通过有好人指点一下吗?
    发表于 05-14 22:48

    SLC、MLC、Parallel NOR Flash等究竟是什么意思?

    什么是Flash Memory?Flash Memory主要可以分为哪几类?SLC、MLC、Parallel NOR Flash等究竟是什么意思?它们又有什么不同?
    发表于 06-18 09:11

    认识嵌入式Linux

    些Linux基础了,但也不乏有些朋友没用过Linux,甚至有些初学的读者朋友没听说过Linux,为了照顾这些朋友,这里简单地认识一下Linux:2、认识嵌入式Linux学习嵌入式Linux我们需要关注...
    发表于 11-05 06:32

    认识一下针对单片机几个基本概念

    我们日常的生活离不开秒表的计时,它提醒着我们什么时刻该干什么,单片机也样,通过单片机内置的晶振来计时,首先让我们认识一下针对单片机几个基本概念:时钟周期:时钟周期 T 是时序中最小的时间单位,具体
    发表于 11-22 06:43

    认识一下Boost拓扑结构

    上期答案揭晓:答案上图 c ,下图 a小伙伴们答对了吗?YTDFWANGWEI :我的笨办法:source,源的意思,就是提供电流。所以,只要是电流流出,就是source。不知道是否正确?作者:完全正确。继续下步讲解:参考一下以下两个图:sink...
    发表于 12-31 08:25

    先来认识一下正激的基本原理

    我们先来认识一下正激的基本原理,如图所示:正激在原边加正向电压 MOS 管导通时,副边的输出符合变压器原理,即:Vs = n* VinVs :变压器副边输出电压n:匝比 = Ns/NpVin:输入电压由上式可知正激拓扑不难理解。* 注意:原边还有个绕组称为复位绕组,副边有...
    发表于 12-31 06:18

    系统起来后怎么对nand flash进行刷写

    系统起来后怎么对nand flash进行刷写?而不是在uboot中进行如对/dev/mtdblock3的刷写
    发表于 01-13 06:31

    简单地认识一下D/A和A/D

    随着我们学习的逐步推进,我们可以了解到51单片机的更多的知识和元件,今天我们就来简单地认识一下D/A和A/D。首先我们先来介绍一下D/A,就是两个单词digital和anolog.就是把数据量转换
    发表于 02-24 07:21

    驱动仅提供32位刷写的情况如何完成刷写单数字节

    [Ooonly] 前情提要:需要刷写整个app程序,分包刷写,每包字节数为单数,要求CRC校验正确。(芯片底层提供32位全字刷写和16位半字刷写
    发表于 08-15 11:35

    简单认识一下EMC中共模和差模的区别

    电压电流的变化通过导线传输时有两种形态, 即共模和差模。下面带大家简单认识一下共模和差模的区别。
    发表于 06-08 14:58 3062次阅读
    简单<b class='flag-5'>认识一下</b>EMC中共模和差模的区别

    认识一下几个常用的门级电路

    标准单元库是数字集成电路的积木,是复杂电路和系统的基础。今天我们来认识一下其中的几个常用门级电路。
    的头像 发表于 10-09 15:49 563次阅读
    <b class='flag-5'>认识一下</b>几个常用的门级电路