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

目录

1.引入

2.TC4xx如何实现中断虚拟化

3.小结


1.引入

其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客

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

2.TC4xx如何实现中断虚拟化

TC4xx的内核为TC1.8,支持虚拟化功能,

每个核有三套独立硬件资源HRHV、HRA、HRB,可支持最大8个VM,其中VM0运行hypervisor,VM1运行实时虚拟机,VM2-7运行其他VM,如下图所示:

图 15

  • HRVH -- Hypervisor hardware resource(VM0)
  • HRA -- Real time virtual machine hardware resource (VM1)
  • HRB -- Other virtual machine hardware resource (VM2-7)

上面提到,既然每个核支持最大8个VM,那么针对中断的处理也有对应8套资源,这里我们回到开头那几个问题:

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

首先来看图说话,如下:

正常时间片为2000us,VM1占用500us,VM2占用1000us,VM3占用500us;

当VM2正在运行时,此时来了一个VM1的中断,该中断可以抢占VM2的时间,所以此时Hyperviosr需要将VM2的上下文保存,并切换到VM1,让其完成ISR处理,然后恢复现场VM2继续运行;

当VM3正在运行时,此时来了一个VM2的中断,但它不可抢占VM3的时间,所以需要VM3运行完毕后切换到VM2的ISR进行处理,当然这里也挤压了VM1的时间。

TC4xx是如何实现上述功能的呢?

在他们的设计中,每个中断SRN都可以被拓展分配给1个VM;每个VM都有自己独立的中断状态控制寄存器,包括当前VM中断系统是否使能(简称VMIE)、当前VM的优先级(简称VMCP)、Pending中断优先级(简称VMPIP);

为了实现运行VM在收到其他VM中断时可被抢占,新增了抢占阈值寄存器,简称THR,好玩的就来了。

假设当前正在运行VM1,此时来了一个VM0的中断,如果此时进来的Pending中断优先级高于VM0配置的抢占阈值,同时高于VM0的当前优先级,那么Hypervisor就需要进行上下文切换,返回到VM0处理中断,伪代码如下:

cpp 复制代码
if (INT.VM_coming == current VM)
{
        if ((VMPIP > VM_coming.VMCP) && (VM_coming.IE )
        {
               isr_routine();
        }
        else
        {
                Keep INT Pending
        }
}
else (INT.vm_coming == VM0 )
{
        if ((VMPIP > VM0.VMCP) && (VMPIP > VM0.THR)

        {
            Switch to HRHV    
            isr_routine();
        }
        else

        {
            Keep INT Pending
        }
}

同理,如果当前VM0、VM1、VM2同时运行,也需要执行上述步骤,只是在VM2如果要抢占VM1时,需要在Hypervisor模式下首先保存VM1的上下文到HRA,然后切换到HRB,让VM2进行中断处理。

本质上,这样的机制和透传很像,只是我们可以通过Hypervisor配置每个VM的中断状态控制器寄存器、抢占阈值寄存器来实现中断实时性的控制, 例如:

当我们把阈值配置为最大时,此时谁也无法进行抢占(Trap除外),只能得到时间片走完;如果阈值配置为最小,那就是直接透传,这时候性能最优。

3.小结

上面几节内容,记录了我对于中断虚拟化的思考过程。

其实在车载领域,特别是座舱域,仪表和中控是肯定要跑虚拟化的,目前用的最多是QNX Hypervisor,它关于CPU虚拟化、内存虚拟化、中断虚拟化、虚拟机通信等的视线对于目前MCU上Hypervisor应该是有借鉴意义。

相关推荐
炸膛坦客14 分钟前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
华清远见IT开放实验室5 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
wuhanzhanhui6 小时前
视觉革命与主动安全:2026武汉汽车电子展会定档,看芯片如何定义驾驶
安全·汽车
AI的探索之旅7 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
茯苓gao7 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
GeekArch8 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
Freedom_my9 小时前
STM32项目3
stm32·单片机·嵌入式硬件
国科安芯9 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
wuhanzhanhui11 小时前
从高强钢到碳纤维!2026武汉汽车材料轻量化制造技术展会,重塑未来造车新范式
大数据·汽车·制造
小李不困还能学11 小时前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器