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

如何确保安全关键领域多核嵌入式系统中的软件时序

汽车安全关键领域的嵌入式系统开发需要多年的时间积累和数以亿计的资金投入,而安全作为重中之重,无疑是软件开发初期架构和设计的核心。车辆的行驶安全与手刹、尾

汽车安全关键领域的嵌入式系统开发需要多年的时间积累和数以亿计的资金投入,而安全作为重中之重,无疑是软件开发初期架构和设计的核心。车辆的行驶安全与手刹、尾灯等部件息息相关,这些部件不仅是由人和机械控制,更是由运行在多核复杂异构处理器上的嵌入式软件控制——它们控制着汽车驾驶及动力转向,并以几微秒的时间间隙给出控制信号。开发多核处理器的挑战往往在于软件的时序,软件时序不仅受软件运行和输入的影响,还会受到其他处理器核心上运行软件的影响。

本文将从多核时序分析入手,探讨汽车领域嵌入式软件安全问题的解决方案。


01.机动车检验标志电子化

 “多核时序分析”英文全称为Multicore Timing Analysis(以下简称MTA),指多核处理器的软件时序分析。虽然在理论上,多核处理器惊人的计算能力能使嵌入式系统更加强大和高效,但其软件执行速度受运行在其他处理器核心上的软件影响的风险也陡然增加。总线、内存、缓存、设备、运行在其他处理器核心上的FPGA(Field Programmable Gate Array,现场可编程门阵列)和GPU(Graphics Processing Unit,图形处理器)等共享资源,而资源占用所造成的干扰则会导致软件可能需要更长的执行时间。

如何量化这种干扰的影响?当软件在多核平台上运行时,如何进行分析、测试并获得具体的数据,以证明安全关键的软件的执行时间处于可被接受的时限内?

巴塞罗那超级计算中心(Barcelona Supercomputing Center,以下简称BSC)、Rapita公司(Rapita Systems Ltd)、雷神技术公司(Raytheon Technologies Corporation,RTRC)和马瑞利公司(Marelli Europe,MAR)的专家们多年来一直在研究这些问题的答案。使用专业工具和自动化技术是解决这些问题的关键,但专业工具的使用存在一定要求与限制。


02.专业工具

支持时序分析的商用专业工具对于简单(单核)电子器件是有效的,但无法扩展以满足当前新出现的多核特定认证要求和建议。

1、静态时序分析解决方案面临着一堵“复杂的墙”:既不能有效对日益复杂的硬件进行建模,也不能有效处理异常复杂的软件功能结构和语法特征。

2、基于测量的解决方案在单核分析市场渗透率较高,但无法完全解决引入多核带来的问题。这些解决方案通常专注于由综合功能测试策略确定的测量场景,但缺乏基于硬件专业知识的测试方法——这种方法有助于为多核中运行的任务推导出可信的时序界限,并提供必要的支持信息和足够的可追溯性。


03.干扰的分析和量化

结构化测试方法使用软硬件专家提供的多核时序数据。BSC的一项专业技术(被称为多核微基准测试技术或MμBT)能够让系统设计人员通过创建额外的干扰场景来对多核处理器的不同部分进行压力测试,从而分析和量化基于多核应用程序的干扰程度。

微基准测试(Micro-benchmarks)是基准测试中的一种方法,用来测试微小代码单元的性能。通常,这个微小代码单元可以是一段算法,一个方法或一个数据结构。微基准测试揭示了干扰通道对软件时序的影响,可以通过部署微基准测试对特定应用程序造成可配置和可量化的压力。微基准测试被专门设计用于展示单个明确定义的行为,并对特定硬件资源产生预期影响,同时尽可能防止在其他干扰通道上产生争用。微基准测试的主要功能包括:

1. 对特定的共享资源施加可量化的压力;

2. 其行为可通过事件监视器进行验证;

3. 捕获与时间相关的特定要求。例如,为控制争用而采取的缓解措施是否有效。

▲图1:微基准测试在干扰分析中的应用


04.测试设计方法

工程师可遵循标准软件V字形开发流程的七步设计及测试过程,从而更充分地了解软件在多核资源调用中受干扰的程度。

1. 多核处理器关键配置设置、干扰通道和事件监视器分析。硬件专家帮助确定关键配置的设置,建立框架,并在框架中确定干扰通道以及缓解措施。硬件事件监视器的识别也有助于为以下所有步骤提供验证方法。

2. 确定时序需求。开发人员需帮助最终用户识别系统的具体需求、时序要求、风险和系统安全问题。例如,验证任一硬件隔离方法的性能,以最大限度地减少干扰。

3. 测试用例设计。开发特定的测试用例以验证支持用户需求的假设集,包括定义在干扰通道分析中提供证据所需的MμBT项目。这涉及隔离执行(无干扰),根据微基准测试执行以评估应用程序的执行时间和硬件在不同可量化压力场景下的干扰敏感度。

4. 执行测试程序。该步骤可构建由测试框架、微基准和测量探头组成的测试程序,用来记录/跟踪结果。

5. 证据收集(测试)。测试程序在平台上执行以收集测试数据。

6. 结果分析。由技术专家审查测试结果,确认测试结果如何验证需求。

​7. 验证结果并生成文档。对需求进行最终评审,生成文件和确认结果,以支持系统的安全性论证。客户可以直接使用完整的报告和分析工件来认证运行在多核上的软件。

▲图2:MTA验证步骤

图2所示的验证步骤旨在实现软件开发过程的可追溯性,并满足CAST-32A航空电子系统多核处理标准和ISO 26262《道路车辆功能安全》国际标准。


05.多核时序分析国产解决方案

想要详解软件多核时序行为中的干扰效应,既要了解多核体系结构的组件,又要了解软件中的调度和资源分配系统,对工程师的开发经验要求较高。

天目全数字实时仿真软件SkyEye,作为一款虚拟化技术仿真的专业工具,支持多核处理器仿真,可以通过硬件配置脚本为每个处理器核心创建包含有CPU独立资源(L1-Cache和寄存器)的模块。SkyEye采用统一的时钟调度机制来管理虚拟目标系统的时间,可以保证仿真的时序和真实目标系统是等比例的关系,确定性的时序状态和各处理器核心寄存器的实时状态监控可以帮助工程师进行多核时序的分析。处理器仿真时间和处理器寄存器监视如下图所示:

▲图3:处理器寄存器监视

另外,SkyEye还支持图形化构建目标系统,无需在意系统底层实现的细节。开发经验较少的工程师也能够快速上手并搭建复杂的硬件模型,进行软件的设计与开发。以P2020双核处理器目标系统搭建为例:

▲图4:P2020双核处理器搭建

工程师通过简单的拖拽便可快速搭建所需的虚拟目标系统,大大缩短产品研发周期,提高软件调试效率,解决多核时序分析的难题。

参考链接

https://www.embedded.com/ensuring-software-timing-behavior-in-critical-multicore-based-embedded-systems/


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • MATLAB函数重名问题解决方法及数据导入导出操作详解
    本文介绍了解决MATLAB函数重名的方法,并详细讲解了数据导入和导出的操作。包括使用菜单导入数据、在工作区直接新建变量、粘贴数据到.m文件或.txt文件并用load命令调用、使用save命令导出数据等方法。同时还介绍了使用dlmread函数调用数据的方法。通过本文的内容,读者可以更好地处理MATLAB中的函数重名问题,并掌握数据导入导出的各种操作。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
author-avatar
卝軎亟_621
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有