汽车ECU的虚拟化技术初探(四)--U2A内存管理

这篇具有很好参考价值的文章主要介绍了汽车ECU的虚拟化技术初探(四)--U2A内存管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.内存管理概述

2. 内存保护功能

2.1 SPID

2.2 Slave Guard

3.小结


1.内存管理概述

为了讲清楚U2A 在各种运行模式、特权模式下的区别,其实首先应该搞清楚不同模式下可以操作的寄存器有哪些。

但是看到这个寄存器模型就头大。

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

再加上之前没有研究过G4MH的内核,所以这里暂且留个坑。

我们还是来看看继续往下看,先来看看内存管理。

U2A是没有MMU的,那么它是如何实现虚拟化所需要的MMU机制的呢?

MPU,大家见得多了,memory protection unit,用于防止未授信程序、突发异常事件等访问系统资源,来保证整个MCU的正常运行。

在U2A的虚拟化模式中,MPU还被细分成了三个块内容,如下:

  • Layered Memory Protection
  • Memory Protection Setting Bank Function
  • Memory Protection Setting High Speed Save and Return Function

2. 内存保护功能

我们这里先来看看功能安全,44章节功能安全 44.5 memory protection,了解常规模式下面memory protection的功能。 

  • Memory访问控制

        通过设置保护区域的上下边界进行访问控制

  • CPU运行模式的访问管理

        通过CPU中的几个状态位用于控制对资源的访问,并且根据每个程序的可靠性级别,将这些位组合使用以执行适当的保护

  • 通过SPID进行保护

        使用SPID (system protection identifier)来检查区域是否匹配。

根据芯片手册介绍,Memory Protection整体架构如下:

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

该内存保护架构由几部分组成:SPID模块、每个核里的MPU、外设的Slave Guard以及memory的Slave Guard。

  • MPU:所有CPU均通过MPU进行访问权限控制,它们不会发起访问MPU禁止的地址的相关请求;
  • Slave Guard:在总线层面上保护指定的memory或者外设,防止未授权访问;可以看到针对不同外设、memory有不同的guard。例如PE Guard(针对CPU内部RAM的保护)、CRG(针对Cluaster RAM保护)、针对外设的PG。
  • SPID:System Protection identifier,是一种软件任务的标识符,它分两种情况:一种主机内部自带SPID寄存器,可以直接配置,例如DMA、CPU(也叫PE,proces element);另一种是在SPID模块里配置。

2.1 SPID

我们首先来看SPID,有如下功能:

  • 每个总线主机的SPID可以软件灵活配置;
  • 一个SPID可以分配给一个主机或者多个主机
  • 通过SPIDMASK来限制主机的使用
  • SPID的配置可以上锁,冷复位或系统复位解锁,就和英飞凌SMU一样,配好了就锁住。

那么具体应该怎么使用呢?先看框图:

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

SPID寄存器用于配置bus master,比较分散的是,CPU、DTS/DMAC和MAU等主机的SPID寄存器配置是在自己模块内部配置,如Gb Ether等SPID值的配置就是在在SPID模块内部,如上图所示。

首先我们来看总共有多少个寄存器可以用于配置SPID。我们继续来看示例:

在默认情况下,每一个Bus Master的SPID值如下:

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

注意,最左侧这一列就相当于给主机分配一个ID值,这个与英飞凌TC3xx固定Master Tag ID还是有所区别。从上图我们可以看到,在U2A中作为master看待的外设、内核总计15个,总计32个寄存器可以配置ID值,默认状态下Reserved的是4-16、18、20、21、30共计17个寄存器,

但是可不可以把这些reserved分配给其他同一个主机呢,答案是肯定的,如下:

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

进一步,可不可以把一个SPID分配给多个外设呢,当然也是可以的,如下图:

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

上图中,RHSIF0\FlexRay\Ether均使用了24这个SPID,CPU2占据了FlexRay1 22这个SPID。

 那么要给Bus Master分配 SPID,需要按照如下步骤:

  1. 设置SPIDKCPROT寄存器使能SPID寄存器配置功能;
  2. 设置SPID掩码寄存器(BMnSPIDMSK)定义每个bus master可以定义的SPID值
  3. 设置SPID掩码锁存寄存器保证SPID掩码寄存器不被修改;
  4. 根据SPID掩码寄存器设置SPID寄存器的值;
  5. 设置SPIDKCPROT寄存器关闭SPID寄存器配置功能;
  6. 配置内存保护/保护设置,以防止由SPID和其他标识符识别的错误访问。

那么配置了SPID,是不是就可以保证访问限制。不然,还需要Slave Guard的配置。

2.2 Slave Guard

从系统架构图,我们可以看到不同种类的Guard Type。

车载ecu管理系统,闲言碎语,汽车,虚拟化,U2A

  • PEG

PE Guard,用于每个PE(Process Element)控制Local RAM和INTC1是否可以被其他bus master访问

  • CRG

Cluster RAM Guard,用于 Inter-VM 通信或者Cluster RAM的访问

  • PG

Peripheral Guard,用于保护外设访问保护

那么需要slave guard属性配置如下:

优先级 保护属性 内容
High SEC 使能后,禁止non-secure主机访问
... DBG 使能后,允许debug主机访问目标slave
UM 该属性关闭后,user mode下所有主机都不能访问slave
SPID[m] 使能后,与该slave定义的SPID相等的master SPID就可访问该slave
WG 使能后,master就可以写目标slave
Low RG 使能后,master就可以读目标slave

 具体每个Slave Guard我们后面再讲。

3.小结

可以看到,U2A的内存保护设计还是很灵活的,目前在用法上仅仅使用了MPU。

后续如果有用到SPID了,我再详细描述。文章来源地址https://www.toymoban.com/news/detail-806735.html

到了这里,关于汽车ECU的虚拟化技术初探(四)--U2A内存管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《存储IO路径》专题:IO虚拟化初探

    大家好,欢迎来到今天的科技小课堂。今天我们要聊聊的是一项非常有趣且实用的技术——I/O虚拟化(Input/Output Virtualization,简称IOV)。想象一下,如果把物理硬件资源比作一道丰盛的大餐,那么IOV就是那位神奇的魔术师,能把这道大餐变成无数个小餐,让每个人都能够享受

    2024年02月11日
    浏览(27)
  • 云计算虚拟化技术与开发-------虚拟化技术应用第一章内容(虚拟化技术概念、虚拟化特征、虚拟化目的、半虚拟化和全虚拟化特点和区别、虚拟化实现的三种结构的特点和区别)

    目录 虚拟化技术第一章主要内容 虚拟化技术的概念: 虚拟化的特征:         虚拟化的目的: 虚拟化与云计算的关系: 半虚拟化和全虚拟化的特点和区别:  虚拟化实现的三种结构的特点和区别:         虚拟化(Virtualization)是把物理资源转变为逻辑上可以管理

    2024年02月03日
    浏览(36)
  • 虚拟化技术 — Libvirt 异构虚拟化管理组件

    Libvirt 是目前使用最为广泛的异构虚拟化管理工具,由 libvirt API 函数库、libvirtd Daemon 这 2 个关键部分组成,还具有一个默认命令行管理工具 virsh。 https://libvirt.org/ Libvirt 采用了面向驱动的架构设计,北向提供了统一的虚拟化资源管理 API,南向通过不同的驱动程序来对接异构

    2024年02月03日
    浏览(30)
  • 虚拟化技术 — 虚拟机计算

    NUMA CPU 的主要优势是: 高内存带宽 :每一个 NUMA Node 内部有专用的内存总线访问本地内存,而所有 NUMA Nodes 之间使用共享总线访问远端内存。假设:一个具有 4 个 NUMA Nodes 的系统,每一个 Node 内部有 1GB/s 的存储带宽,同时共享总线也具有 1GB/s 的带宽。如果所有的 Core 总是使

    2024年02月04日
    浏览(40)
  • 【云计算学习教程】云计算虚拟化技术和容器技术详解_云计算虚拟化技术与容器技术

    这跟交通网络很相似,连接两个城市的交通网络具备的第一个功能就是汽车从一个城市到达另一个城市;第二个功能是控制到底走哪条线路最好。前者就是由公路组成的交通网络,后者就是交通控制系统。 下面我们再来看看传统的网络设备(比如一台路由器)的逻辑分层结构

    2024年04月22日
    浏览(39)
  • 云计算虚拟化技术与开发-------虚拟化技术应用第五章内容(纯软件/半虚拟化/直接分配三种I/O虚拟化方案的对比、virtio实现I/O半虚拟化的原理、气球技术的作用和原理、V2V在线迁移的特点)

    目录 第五章:KVM高级功能讲解 纯软件/半虚拟化/直接分配三种I/O虚拟化方案的对比 I/O 全虚拟化 I/O 半虚拟化 I/O 直通或透传技术  virtio实现I/O半虚拟化的原理 气球技术的作用和原理  V2V在线迁移的特点、作用及KVM中的运行步骤 KVM虚拟化的安全技术架构 QEMU monitor的基本使用

    2024年02月07日
    浏览(38)
  • 虚拟化技术 — VirtIO 虚拟设备接口标准

    VirtIO 由 Rusty Russell 开发,最初是为了支持自己开发的 lguest Hypervisor,其设计目标是在虚拟化环境下提供与物理设备相近的 I/O 功能和性能,并且避免在虚拟机中安装额外的驱动程序。基于这一目标,后来通过开源的方式将 VirtIO 延伸为一种虚拟化设备接口标准,并广泛的支持

    2023年04月25日
    浏览(28)
  • 存储虚拟化技术

    1、存储虚拟化简介 存储领域国际权威机构存储网络工业协会(SNIA)给出的存储虚拟化的定义是“通过将存储系统/子系统的内部功能从应用程序、计算服务器和网络资源中进行抽象、隐藏或隔离,实现独立于应用程序、网络的存储与数据管理”。 存储虚拟化是指将 SAN 中的各

    2024年02月07日
    浏览(28)
  • 虚拟化技术课程实践

    实验目的及要求 实验目的 :基于课程中讲授的虚拟化基本原理和技术,掌握虚拟化环境的搭建方法,熟悉了解一些典型的虚拟化平台的命令。 实验要求 :在Ubuntu操作系统下使用KVM和QUME创建虚拟机镜像、启动虚拟机。 实验环境 VMware Workstation 16 Pro 装有 Ubuntu14.04 操作系统的

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包