汽车MCU虚拟化--对中断虚拟化的思考(1)

目录

1.中断虚拟化的困惑

2.从R52入手

3.小结


1.中断虚拟化的困惑

在车控类控制器里,中断对于我们来说是非常宝贵的资源,可大幅提高系统实时性。

这些中断基本都属于实际物理硬中断(软中断另说),例如对一个按键按下的中断响应,对于CAN报文的接收中断响应,这些都已经玩的比较熟练了。

但当我发现MCU也能开始谈虚拟化的时候,中断开始变得有趣起来,我们以Type 1类Hypervisor为例,它结构如下图示:

假设现在系统出现一个物理中断,这个物理中断实际上是至少应该要分配给VM0-VM4中一个进行处理,由于VM是分时复用,问题就来了:

  • 中断应该由谁来进行分配?
  • 假设被分配到的VM此时还没有运行怎么办?
  • 假设被分配到的VM此时正在处理中断怎么办?

带着这些问题,我们来畅想一下关于虚拟化的中断处理,不一定准确,但先记录思考过程。

2.从R52入手

ARM Cortex-R52是Armv8-R架构,目前很多大厂用它来做MCU,目标区域控制器,原因除了高实时性之外,还有就是支持虚拟化。

该内核包含了三个异常等级EL0-EL2,其中EL2具有完整资源访问权限,主要运行Hypervisor;EL1除了不能访问Hypervisor相关寄存器其余均可访问,EL0权限有限;同时新增了两级MPU,为虚拟化奠定基础,其推荐用法如下:

关于中断R52使用GIC进行路由,概念如下:

  • SPI(Shared Peripheral Interrupts):由外设产生的中断,需路由给目标核
  • PPI(Private Peripheral Interrupts):内核内部产生的中断,如Timer;
  • SGI(Software Generated Interrupts):软件触发的中断,可以路由给不同Cluster的内核

那么当一个实际物理中断触发后,它应该给谁呢?

逻辑上讲,按照以前跑无虚拟化的AUTOSAR OS的方案,我们应该把直接把中断传给目标VM,如下图:

但是如果此时VM2没有运行,那这个中断如何处理?如果要从其他VM切换过来那意味着还得有个帮手来帮忙存储当前运行VM的上下文。如果一个物理中断是多个VM复用,这种方式就显得不合理了。

故我们可以在Hypervisor层级捕获物理中断,然后生成虚拟中断给到目标VM,如下图:

这样一看就比较合理了,事实上在R52里,可以看到针对中断虚拟化也是上述两种实现方式,与中断虚拟化相关的组件包括系统寄存器HCR(Hyp Configuration Register)、GIC(Generic Interrupt Controller)。

当我们设置HCR.IMO、HCR.FMO为1时,表示IRQ\FIQ将会在EL2等级下进行处理,

而EL2一般用于运行Hypervisor,故需要在Hypervisor里对IRQ\FIQ进行处理,即使此时VM还处于运行,也会立即跳转至EL2的异常向量中。

假设该物理IRQ需要路由给VM1,此时该怎么办呢?需要Hypervisor配置GIC CPU interface关于虚拟中断内容,如下图:

总结下来,中断虚拟化的流程基本如下:

  • 设置HCR.IMO\FMO等;
  • 物理中断产生被路由到Hypervisor
  • Hypervisor 配置GIC ICV()相关寄存器,产生虚拟中断;
  • 返回EL1 OS,OS从虚拟GIC相关寄存器读取中断信息,处理中断

3.小结

其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。

那么,作为车规MCU龙头的英飞凌在TC4xx是如何考虑中断虚拟化的呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的恒流开关电源 BUCK电路设计

1 前言 1.1课题研究意义 开关电源顾名思义,开关电源便是使用半导体开关器件(如晶体管、场效应管、可控硅闸流管等),经过控制电路,使半导体开关器件不停地“导通”和“关闭”,让半导体开关器件对输入的电压…

AI炒股-批量爬取网易财经的要闻板块

工作任务和目标&#xff1a;批量爬取网易财经的要闻板块 在class"tab_body current"的div标签中&#xff1b; 标题和链接在&#xff1a;<a href"https://www.163.com/dy/article/J2UIO5DD051188EA.html">华为急需找到“松弛感”</a> 第一步&…

短剧源码:打造个性化的在线短剧观看平台

随着短视频和短剧内容的兴起&#xff0c;越来越多的用户开始追求快节奏、高效率的娱乐方式。短剧源码的开发&#xff0c;为满足这一需求提供了技术基础。本文将详细介绍短剧源码的构成&#xff0c;以及如何通过这一源码打造个性化的在线短剧观看平台。 一、首页设计 首页是用…

【C++题解】1448. 随机体能测试

问题&#xff1a;1448. 随机体能测试 类型&#xff1a;循环应用&#xff0c;嵌套循环 题目描述&#xff1a; 学校想随机抽取一部分同学参加体能测试&#xff0c;看看同学们的体能怎么样。 张老师想了一个办法&#xff0c;找出学号中含有 1 的同学&#xff0c;让他们参加体能测…

并发和异步编程:详细概述

01 Concurrency and Asynchronous Programming: a Detailed Overview 并发和异步编程:详细概述 Asynchronous programming is one of those topics many programmers find confusing. You come to the point when you think you’ve got it, only to later realize that the …

162.二叉树:填充每个节点的下一个右侧节点指针(力扣)

代码解决 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _…

ipv6基础

地址 前缀子网主机位 PI法则3.14 前缀&#xff1a;3个16位 子网&#xff1a;1个16位 接口ID&#xff1a;4个16位 地址分类 未指定地址 ::/128 &#xff0c;类似于0.0.0.0 本地回环地址 ::1/128 &#xff0c;用于本地测试&#xff0c;类似于127.0.0.1 本地链路地址&#x…

利用GNSS IMU集成提高车道级定位精度

准确的定位对于很多不同的事情都是至关重要的。导航系统可以引导我们去某个地方&#xff0c;自动驾驶汽车可以利用这些数据在道路上安全行驶。尽管全球导航卫星系统(GNSS)在定位方面非常出色&#xff0c;但它们可能并不总是提供最准确的车道水平事实。解决这个问题的一个有希望…

如何矢将量数据转换为栅格数据

在我们分析GIS数据时&#xff0c;有时候也可能需要将矢量数据转换为栅格数据来使用&#xff0c;例如&#xff1a;使用AI图像识别技术进行GIS数据分析或导航的时候&#xff01;矢量数据就可能不满足需求了&#xff01; GIS数据转换器-矢量V5.0具有矢量数据转换为栅格数据的功能…

Python魔法之旅-魔法方法(07)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

linux部署运维1——centos7.9离线安装部署涛思taos2.6时序数据库TDengine

在实际项目开发过程中&#xff0c;并非一直都使用关系型数据库&#xff0c;对于工业互联网类型的项目来说&#xff0c;时序型数据库也是很重要的一种&#xff0c;因此掌握时序数据库的安装配置也是必要的技能&#xff0c;不过对于有关系型数据库使用的开发工作者来说&#xff0…

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤&#xff1a; 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 你需要从受信任的SSL证书颁发机构中选择一个&#xff0c;比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…

大数据之HIVE,一次HIVESQL执行的过程(四)

在hive中执行如下sql INSERT OVERWRITE TABLE XXX SELECT * from XXX 数据最终是怎么存储到hdfs上的过程 执行的过程当中,打印出如下的日志过程,本质上是一个在MapReduce中进行Shuffle的过程 所以下面就Shuffle的过程进行分析 Shuffle 描述的是数据从 Map 端到 Reduce 端的…

曾巩,散文的艺术与哲思

曾巩&#xff0c;字子固&#xff0c;世称南丰先生&#xff0c;南丰&#xff08;今江西&#xff09;人&#xff0c;生于北宋真宗天禧三年&#xff08;公元1019年&#xff09;&#xff0c;卒于北宋元丰六年&#xff08;公元1083年&#xff09;&#xff0c;享年64岁。他是中国北宋…

http协议及httpd安装组成

文章目录 一、http协议http协议通信过程http相关技术网站访问量HTTP工作机制HTTP协议版本HTTP请求访问的完整过程HTTP报文头部响应报文 二、httpd安装组成apache介绍和特点工作模式&#xff08; MPM multi-processing module &#xff09;Http相关文件Http编译安装httpd常见配置…

显示器与电脑如何分屏显示?

1.点击电脑屏幕右键--显示设置 2、然后找到屏幕---找到多显示器---选择扩展显示器

OpenAI 推出ChatGPT Edu,为高校定制版本

近日&#xff0c;OpenAI 宣布推出 ChatGPT Edu&#xff0c;这是一款专为高校打造的 ChatGPT 版本&#xff0c;旨在帮助学生、教师、研究人员和校园运营部门以负责任的方式部署和使用 AI。 ChatGPT Edu 由 GPT-4o 提供支持&#xff0c;具备强大的文本和图像推理能力&#xff0c;…

Java18新版本特性!

Java 18引入了多项新特性&#xff0c;主要包括默认UTF-8字符集、简单的Web服务器、栈步进API等。Java 18是Oracle在2022年发布的版本&#xff0c;其旨在通过一系列创新特性来提升开发效率与性能。下面将逐一探讨Java 18的主要新特性以及它们对开发者的具体影响&#xff1a; 默认…

7、css3实现边框不停地跑动效果

效果例图&#xff1a; 1、上html代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta …

文明互鉴促发展——2024“国际山地旅游日”主题活动在法国启幕

5月29日&#xff0c;2024“国际山地旅游日”主题活动在法国尼斯市成功举办。中国驻法国使领馆、法国文化旅游部门、地方政府、国际组织、国际山地旅游联盟会员代表、旅游机构、企业、专家、媒体等围绕“文明互鉴的山地旅游”大会主题和“气候变化与山地旅游应对之策”论坛主题展…