车载基础软件——嵌入式系统时间特性分析

news/2025/1/11 7:07:28/

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例外的是,他们想让你怀疑自己。

本文主要介绍车载基础软件——嵌入式系统时间特性分析。

文章主要有如下几个内容:

-> 1、网络管理测试验证

-> 2、诊断服务测试验证

-> 3、BSW层里的操作系统OS

近年来,随着汽车功能的不断完善和多样化,车载电子系统日益复杂。从控制器层面看,集成度越来越高,CPU 负载不断增加。如何确保软件集成安全、优化设计、提高资源利用率、降低成本成为相关设计人员亟待解决的问题;另一方面,ISO26262 及 ASPICE 等相关标准中分别在软件架构、单元和集成阶段对性能分析提出了明确的需求。如何验证满足实时系统的时间性能需求,构建符合 ISO26262 和 ASPICE 标准的产品也越来越引起相关人员的重视。

针对上述问题,AUTOSAR 标准在 4.0 版本以后即对嵌入式系统性能分析提出了相关方法论指导。其中,《AUTOSAR Specification of Timing Extensions》主要定义了不同级别的时间行为需求 / 规范标准,《Recommended Methods and Practices for Timing Analysis and Design within the AUTOSAR Development Process》(以下简称 Timing Analysis)主要提供了性能问题方法论指导。如图:

就分析内容而言,根据相关标准的定义,嵌入式系统的性能问题主要分为控制器级、网络级和功能级(端到端)三个维度。本文主要关注控制器级别的相关性能问题。结合欧洲相关标准的定义,控制器级别的性能分析问题又可以进一步分为代码级分析和调度级分析。其中,代码级分析的对象为单个的任务(Task)/ 中断(Interrupt),不考虑任务 / 中断 / 进程间的抢占情况。而调度级分析则主要考虑多任务 /中断间相互抢占的情况下,各任务 / 中断的响应时间的结果(包括本身的代码执行时间和被抢占的时间)。如图:

就分析方法而言,可以分为理论分析、仿真和追踪三种,或者基于模型和基于追踪两种。后者与时间特性流程 / 研发流程更相契合。在本文中,我们采取后一种分类方法进行相关介绍:

一、基于模型的分析

基于模型的分析按照分析内容,又分为代码级分析和调度级分析。根据ISO26262 及 ASPICE 标准,代码级的相关指标主要包括最差情况代码执行时间(WCET,WorstCase Execution Time)和最差情况堆栈用量分析。调度级分析要求指标主要包括 CPU 负载、Task\Interrupt\Event Chain 最差情况响应时间(WCRT,WorstCase Reaction Time)等。

->代码级基于模型的分析方案

代码级基于模型的分析方法是指不需要在实际的目标硬件环境中运行,而是通过直接从程序结构中计算出代码最差情况执行时间,或者在目标环境仿真器中仿真而得出代码执行时间分布范围的方法。

为了满足功能安全和 ASPICE 中对性能问题最差情况的分析要求,一般推荐使用基于模型的分析方案。常见的分析方案如图所示:

常见的代码级基于模型的性能分析工具有 aiT、TimingProfiler、StackAnalyer 等。

-> 调度级基于模型的分析方案

调度级基于模型的分析方法是指不需要在实际的目标硬件环境中运行,而是基于目标操作系统、代码执行时间范围和调度配置进行静态数值分析而计算出最差情况任务 / 中断响应时间,或者在调度仿真器中仿真而得出任务 / 中断响应时间分部范围的方法。

为了满足功能安全和 ASPICE 中对性能问题最差情况的分析要求,一般推荐使用基于模型的分析方案。常见的分析方案如图所示:

常见的调度级基于模型的性能分析工具有 Symtavision、Inchron、Timing-Architects 等。

嵌入式实时系统必须保证每一个操作系统的任务均在规定的时间内作正确的响应,如果由于某个任务执行时间过长或者调度设计不合理而影响其他的任务的正常执行,进而超出任务规定响应时间的情况,会对系统的正常运作造成很大的影响。根据软件的严重度等级,这些潜在安全隐患的排除需要通过形式化的验证方法或者具有充分的测试覆盖度的测试方法进行证明。

针对性能问题,在适航标准 DO178B 的第六章中明确指出 “Testing, in general, cannot show the absence of errors” ,也就是说,测试一般不能用来证明某些性能问题的清除,比如代码执行时间、堆栈用量、代码运行时错误等,一般通过测试来证明是不足够的,因为没有一种测试的手段可以对性能问题达到 100% 的覆盖度,即无法找出 WorstCase的工况。因而,标准中提出某些性能错误的排除可以通过形式化的方法(Formal methods)进行证明,而形式化方法即为一种基于模型的分析方法。此外,由于基于模型的分析方法不需要硬件环境,使得在设计阶段即对性能问题进行分析成为可能,从而尽早地发现和排除相关问题,避免在集成阶段再发现问题而导致时间和成本的浪费。

-> 基于追踪的分析

基于追踪的分析按照分析内容,又分为代码级追踪和调度级追踪。

追踪的对象是实际目标系统,一般通过代码插桩等手段,持续地进行事件(events)及对应时间戳(timestamp) 的采集和记录,这些记录的数据可以存放在目标硬件的内存或者通过相关接口实时导出。这些事件的选择可以是代码块级别、函数级别或任务 / 中断级别等,也可以细化到机器指令级别。根据不同的事件级别可以基于追踪文件分别重建代码块、函数、任务 / 中断、甚至是每个机器指令的实际执行时序情况。

相应的,对机器指令、代码块、函数等基于追踪文件的时序重建,可以分析得到代码执行时间最小值、最大值、平均值等数据,即为代码级追踪分析的内容。而对任务 / 中断基于追踪文件的时序重建,可以分析得到任务 / 中断延时和 CPU 实时负载的最小值、最大值、平均值等数据,即为调度级追踪分析的内容。

常见的基于追踪的代码级性能分析工具有 TimeWeaver+Lauterbach、Gliwa、RapiTime 等;常见的基于追踪的调度级性能分析工具有 TraceAnalyzer、Lauterbach、iSystem、Greenhill、RapiTask、Gliwa 等。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者


http://www.ppmy.cn/news/80634.html

相关文章

Golang每日一练(leetDay0076) 第k大元素、组合总和III

目录 215. 数组中的第K个最大元素 Kth-largest-element-in-an-array 🌟🌟 216. 组合总和 III Combination Sum iii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

如何设计一个合格的高并发秒杀系统

一、前言 在前面的文章中,详细阐述了建设秒杀系统的目标与存在的挑战,并且简单罗列了如何应对这些挑战的方式。本章,就详细阐述对秒杀系统存在挑战的应对之道,最终构建出兼具高并发、高性能和高可用的秒杀系统。心中不仅了解建设…

Android 12.0无源码apk设置默认启动Launcher的相关属性

1.概述 在12.0的系统产品开发中,对于一些产品的需求,需要将一些无源码app的某个MainActivity作为启动Launcher页面的功能实现,由于没有源码,所以需要 利用PMS的安装解析apk的AndroidManifest.xml的时候,在判断是某个Activity的时候,设置Lancher属性来实现某些功能 2.无源…

讯飞星火_VS_文心一言

获得讯飞星火认知大模型体验授权,第一时间来测试一下效果,使用申请手机号登录后,需要同意讯飞SparkDesk体验规则,如下图所示: 同意之后就可以进行体验了,界面如下: 讯飞星火效果体验 以下Promp…

vue组件通信

1.父传子 a------在父元素中定义事件 b------给子元素使用v-bind绑定属性 c------子元素中使用props接收数据 props:{数据名:数据类型} d------在子元素中使用 2.子传父 a------在父元素中定义事件 b------给子元素用v-on绑定自定义事件 d------在子元素中使用this.$emit(自定…

springboot+jsp+java高校实验室设备管理系统

本次程序软件的开发的目的就是让使用者可以通过使用该软件提高信息数据的管理效率,同时该程序软件也需要针对不同的操作用户设置对应的功能,因此,此程序的操作流程应该尽量与用户日常操作软件的行为习惯相贴合,另外,程…

11 认识binder及分类

认识binder及分类 一、binder是什么? binder是一种通信机制 binder是IPC通信中的一种,IPC:进程间通信机制(Inter-Process Communication) 在Android中常用的进程间通信有共享内存、管道、信号处理、sockect、Binder等; 内核和用户空间之间常用的是共享内存机制; 一些低数…

Java中的网路编程

目录 网络通信 IP地址 域名 端口号 网络通信协议 TCP和 UDP TCP协议: 传输控制协议 TCP基本介绍 UDP协议: 用户数据协议 udp基本介绍 InetAddress类 Socket socket基本介绍 TCP网络通信编程 应用案例1 netstat 指令 基本介绍 TCP网络通讯不为人知的秘密 在学习网…