热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OSEK网络管理功能的全面测试分析

本文针对OSEK网络管理功能进行全面测试分析。在新入职某公司后,由于公司需要开发OSEKNM(OSEK网络管理)功能,而市场上缺乏成熟且经济实惠的商业解决方案,因此我们决定自主开发。在开发过程中,通过网络资源获取了相关开源代码,并对其进行了深入研究和优化。测试结果表明,该开源代码在功能实现和性能表现方面均达到了预期目标,为公司的OSEKNM系统开发提供了有力支持。

1.背景知识

最近入职某公司后,公司需要开发OSEK NM,由于没有购买成熟的商业软件,需要自己开发,我通过网路找到某开源代码进行移植实现后,对功能测试case进行记录。

需要相关咨询的,可以联系我。E-mail:gsh1992@qq.com

某项目网络管理报文CAN ID 0x500~0x57F    


CAN ID

CAN Data

0x05

SA

DA

CF

Data

Data

Data

Data

Data

Data

表1. 网络管理报文帧格式


2.测试结构

Note:


  1. ECU1,ECU3是仿真节点,ECU2是真实节点。

  2. 上位机模拟2个ECU(ECU1,ECU3)和真实ECU(ECU2)进行通信交互,实现测试方案所需流程。


2.1 相关网络参数

CAN波特率:500kbps


ECU Num

CAN ID (offset+SA)

ECU1

0x541

ECU2

0x54C

ECU3

0x54F

表2 ECU CAN ID


2.2 报文类型

Alive报文

541    41 01 00 00 00 00 00 00 

54C    4c 01 00 00 00 00 00 00

54F    4F 01 00 00 00 00 00 00

Ring SI=0

541    4c 02 00 00 00 00 00 00 

54C    4f 02 00 00 00 00 00 00

54F    41 02 00 00 00 00 00 00

Goto sleep  ring SI=1

541    4c 12 00 00 00 00 00 00 

54C    4f 12 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00

Ring SI=1 SA=1

541    4c 32 00 00 00 00 00 00


3.测试方案


3.1.ECU上电建立Ring

step0:每个ECU自动发出Alive上线报文,SA=DA=Self

541    41 01 00 00 00 00 00 00 

54C    4c 01 00 00 00 00 00 00

54F    4F 01 00 00 00 00 00 00

Delay Ttyp(100ms)

step1:ECU根据Alive报文,正确发出Ring报文。

541    4c 02 00 00 00 00 00 00 

54C    4f 02 00 00 00 00 00 00

54F    41 02 00 00 00 00 00 00

step2:ECU1 发出应用报文


3.2 网络关闭

step0:发出KL15关闭。Ring报文建立。Delay(1.2*tSleepRequestMin_N).

step1:ECU0不满足睡眠条件,ECU1,ECU2满足睡眠条件。网管报文持续发出。

541    4c 02 00 00 00 00 00 00 

54C    4f 12 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00

step2:ECU0,ECU1,ECU2满足睡眠条件。

541    4c 12 00 00 00 00 00 00 

54C    4f 12 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00

step3:ECU0确认睡眠条件

541    4c 32 00 00 00 00 00 00

step4:所有报文停止发送,ECU进入休眠状态。


3.3 单节点上电进入LimpHome模式

详细参见海马 网络管理设计规范 图7。


3.4 时间参数测试


3.4.1 ECU上电时间参数


  • 上电200ms内发出alive报文

    • 实测值:500ms

  • 后续80毫秒内发出应用报文

    • 实测值:20ms


3.4.2 Ttyp


  • 2个Ring报文之间的时间间隔


  • 典型值-100ms

    • Min-70ms

    • Max-110ms

  • 测试步骤

    • step0: 建立Ring报文

541    41 01 00 00 00 00 00 00 

54C    4c 01 00 00 00 00 00 00   该报文和上一个报文的间隔时间 T1

54F    4F 01 00 00 00 00 00 00


  • step 1 循环100次Ring报文,测试T1是否在范围内。


3.4.3 Tmax


  • 2个Ring报文之间的最大时间间隔。


  • 典型值 260ms

    • 最小值 220ms

    • 最大值 284ms

  • 测试步骤

    • step0:建立Ring报文

541    41 01 00 00 00 00 00 00 

54C    4c 01 00 00 00 00 00 00

54F    4F 01 00 00 00 00 00 00


  • step1: Delay 1.2*Tmax

  • step2: expected: ECU2 into NmReset and re-send alive message.


3.4.4 Terror


  • 2个LimpHome报文之间的最大时间间隔。


  • 典型值 1000ms

    • 最小值 950ms

    • 最大值 1050ms

  • 测试步骤

    • step0:单节点上电进入LimpHome模式

    • step1: 查看LimpHome报文发送间隔时间。


3.4.5 Twbs


  • 从睡眠请求接收到进入睡眠模式的时间。


  • 典型值 1500ms

  • 测试步骤

  • step0:Ring报文建立。发出KL15关闭。

  • step1:ECU1,ECU3根据时间响应SI = 1;

  • step2: SA=1发出,计算从SA=1,到最后一个应用报文终止的时间。


3.4.6 tSleepRequestMin_N


  • 进入Normal状态后请求睡眠的最短时间。

    • 典型值 5000ms

    • 最小值 4000ms

    • 最大值 6000ms

  • 测试步骤

    • step0:Ring报文建立。发出KL15关闭。

      • step1:立刻触发SI=0网管报文持续发出。

541    4c 12 00 00 00 00 00 00 

54C    4f 02 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00


  • step2:ECU0,ECU1,ECU2满足睡眠条件。

541    4c 12 00 00 00 00 00 00 

54C    4f 12 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00


  • step3:ECU0确认睡眠条件

541    4c 32 00 00 00 00 00 00


  • step4:所有报文停止发送,ECU进入休眠状态。计算从KL5发出到SA=1的时间。


3.4.7 tsleepRequestMin_L


  • 进入LimpHome状态后请求睡眠的最短时间。

    • 典型值 5000ms

    • 最小值 4000ms

    • 最大值 6000ms

  • 测试步骤

    • step0:单节点上电,进入LimpHome模式。发出KL15关闭报文。

      • step1:立刻触发SI=0网管报文持续发出。

541    4c 12 00 00 00 00 00 00 

54C    4f 02 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00


  • step2:ECU0,ECU1,ECU2满足睡眠条件。

541    4c 12 00 00 00 00 00 00 

54C    4f 12 00 00 00 00 00 00

54F    41 12 00 00 00 00 00 00


  • step3:ECU0确认睡眠条件

541    4c 32 00 00 00 00 00 00


  • step4:所有报文停止发送,ECU进入休眠状态。计算从KL5发出到SA=1的时间。


3.5 异常Ring报文干扰


  • 测试目的

测试DUT连续接收到Ring报文后(指向自身地址或非自身地址)的行为是否满足NM标准的要求。


  • 评价标准

DUT未发送指向后继节点的Ring报文前又接收到一帧Ring报文(指向自身地址),DUT将以第二帧Ring报文为准,TTyp时间后发送指向后继节点的Ring报文。


  • 测试步骤

    • step0 : 发送alive报文

    • step1 :ECU1发出Ring报文

    • step2:间隔0.5*Ttyp时间,ECU1重新发送Ring报文。

    • step3:

      • ecpecte:ECU2可以再TTyp时间后发出Ring报文。


3.6 节点Skip功能测试

根据OsekVDX NM 2.5.2规范,节点需要具有监测自身是否被跳过的能力,如果检测到被跳过,则重新发送alive报文,申请加入。过程如下图:


  • 测试步骤:

    • step0: 建立Ring环。

    • step1:ECU1发送异常Ring报文,目的地址指向ECU3,ECU2被跳过。

    • step2:等待ECU2重新发出Alive报文。


4.测试结果


ID

Test Case

Test Result

Note

3.1

ECU上电建立Ring

Test Pssed

3.2

网络关闭

Test Pssed

3.3

单节点上电进入LimpHome

Test Pssed

3.4.1

ECU上电时间参数

Failed

3.4.2

Ttyp时间参数

Test Pssed

3.4.3

Tmax时间参数

Test Pssed

3.4.4

Terror时间参数

Test Pssed

3.4.5

Twbs时间参数

Test Pssed

3.4.6

tSleepRequestMin_N时间参数

Test Pssed

3.4.7

tSleepRequestMin_L时间参数

Test Pssed

3.5

异常Ring报文干扰

Test Pssed

3.6

节点Skip功能测试

Test Pssed

Note:

1.测试结果:Test Pssed  Not Test   Failed


推荐阅读
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍在 Red Hat Linux 系统中如何安全地永久修改网卡的MAC地址。如果直接修改配置文件中的HWADDR字段,可能会导致系统启动时出现错误。了解ifup脚本的工作机制有助于避免这些问题。 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • thereissomethingstrangeinmycode.Imsuretoforgetsomethingbutidontknowwhat.Itryto ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
author-avatar
侯faulds_534
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有