RK3568驱动指南|第七期-设备树-第59章 实例分析:CPU

news2025/2/25 0:10:33

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第七期_设备树_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第59章 实例分析:CPU

59.1 cpus节点

设备树的 cpus 节点是用于描述系统中的处理器的一个重要节点。它是处理器拓扑结构的顶层节点,包含了所有处理器相关的信息。下面将详细介绍设备树的 cpus 节点的各个方面。

节点结构:
cpus 节点是一个容器节点,其下包含了系统中每个处理器的子节点。每个子节点的名称通常为 cpu@X,其中 X 是处理器的索引号。每个子节点都包含了与处理器相关的属性,例如时钟频率、缓存大小等。

处理器属性:
cpu@X 子节点中的属性可以包括以下信息:

(1)device_type:指示设备类型为处理器("cpu")。

(2)reg:指定处理器的地址范围,通常是物理地址或寄存器地址。

(3)compatible:指定处理器的兼容性信息,用于匹配相应的设备驱动程序。

(4)clock-frequency:指定处理器的时钟频率。

(5)cache-size:指定处理器的缓存大小。

处理器拓扑关系:
除了处理器的基本属性,cpus 节点还可以包含其他用于描述处理器拓扑关系的节点,以提供更详细的处理器拓扑信息。这些节点可以帮助操作系统和软件了解处理器之间的连接关系、组织结构和特性。

cpu-map 节点:描述处理器的映射关系,通常在多核处理器系统中使用。

socket 节点:描述多处理器系统中的物理插槽或芯片组。

cluster 节点:描述处理器集群,即将多个处理器组织在一起形成的逻辑组。

core 节点:描述处理器核心,即一个物理处理器内的独立执行单元。

thread 节点:描述处理器线程,即一个物理处理器核心内的线程。

这些节点的嵌套关系可以在 cpus 节点下形成一个层次结构,反映了处理器的拓扑结构。上述这些节点会在后面的小节进行介绍。一个单核CPU设备树和一个四核CPU设备树示例如下所示:

单核CPU示例:

cpus {
    #address-cells = <1>;
    #size-cells = <0>;

    cpu0: cpu@0 {
        compatible = "arm,cortex-a7";
        device_type = "cpu";
        // 其他属性...
    };
}

多核CPU示例:

cpus {
    #address-cells = <1>;
    #size-cells = <0>;

    cpu0: cpu@0 {
        device_type = "cpu";
        compatible = "arm,cortex-a9";
    };

    cpu1: cpu@1 {
        device_type = "cpu";
        compatible = "arm,cortex-a9";
    };

    cpu2: cpu@2 {
        device_type = "cpu";
        compatible = "arm,cortex-a9";
    };

    cpu3: cpu@3 {
        device_type = "cpu";
        compatible = "arm,cortex-a9";
    };
}

cpus 节点是一个容器节点,包含了 cpu0 子节点。该节点使用了 #address-cells 和 #size-cells 属性来指定地址和大小的单元数量。

cpu0 子节点代表第一个处理器,具有以下属性:

compatible 属性指定了处理器的兼容性信息

device_type 属性指示设备类型为处理器。

你可以在此基础上继续添加其他属性来描述处理器的特性,如时钟频率、缓存大小等。

59.2 cpu-map、socket、cluster节点

cpu-map 节点是设备树中用于描述大小核架构处理器的映射关系的节点之一。它的父节点必须是 cpus 节点,而子节点可以是一个或多个 cluster 和 socket 节点。通过 cpu-map 节点,可以定义不同核心和集群之间的连接和组织结构。

socket 节点用于描述处理器插槽(socket)之间的映射关系。每个 socket 子节点表示一个处理器插槽,可以使用 cpu-map-mask 属性来指定该插槽使用的核心。通过为每个 socket 子节点指定适当的 cpu-map-mask,可以定义不同插槽中使用的核心。这样,操作系统和软件可以了解到不同插槽之间的核心分配情况。

cluster 节点用于描述核心(cluster)之间的映射关系。每个 cluster 子节点表示一个核心集群,可以使用 cpu-map-mask 属性来指定该集群使用的核心。通过为每个 cluster 子节点指定适当的 cpu-map-mask,可以定义每个集群中使用的核心。这样,操作系统和软件可以了解到不同集群之间的核心分配情况。

通过在 cpu-map 节点中定义 socket 和 cluster 子节点,并为它们指定适当的 cpu-map-mask,可以提供处理器的拓扑结构信息。这对于操作系统和软件来说非常有用,因为它们可以根据这些信息进行任务调度和资源分配的优化,以充分利用大小核架构处理器的性能和能效特性。

一个大小核架构的具体示例如下所示:

cpus {
    #address-cells = <2>;
    #size-cells = <0>;
    cpu-map {
        cluster0 {
            core0 {
                cpu = <&cpu_l0>;
            };
            core1 {
                cpu = <&cpu_l1>;
            };
            core2 {
                cpu = <&cpu_l2>;
            };
            core3 {
                cpu = <&cpu_l3>;
            };
        };
        cluster1 {
            core0 {
                cpu = <&cpu_b0>;
            };
            core1 {
                cpu = <&cpu_b1>;
            };
        };
    };

	cpu_l0: cpu@0 {
		device_type = "cpu";
		compatible = "arm,cortex-a53", "arm,armv8";
	};

	cpu_l1: cpu@1 {
		device_type = "cpu";
		compatible = "arm,cortex-a53", "arm,armv8";
	};

	cpu_l2: cpu@2 {
		device_type = "cpu";
		compatible = "arm,cortex-a53", "arm,armv8";
	};

	cpu_l3: cpu@3 {
		device_type = "cpu";
		compatible = "arm,cortex-a53", "arm,armv8";
	};

	cpu_b0: cpu@100 {
		device_type = "cpu";
		compatible = "arm,cortex-a72", "arm,armv8";
	};

	cpu_b1: cpu@101 {
		device_type = "cpu";
		compatible = "arm,cortex-a72", "arm,armv8";
	};
};

这个设备树描述了一个具有多个 CPU 核心的系统,包括四个 Cortex-A53 核心和两个 Cortex-A72 核心。下面是对设备树中各个部分的简要介绍:

#address-cells = <2>; 和 #size-cells = <0>;:这些属性指定了设备树中地址和大小的编码方式。

cpu-map:这个节点定义了 CPU 的映射关系。它包含了两个簇(clusters):cluster0 和 cluster1。cluster0 包含了四个核心:core0、core1、core2 和 core3,分别对应 cpu_l0、cpu_l1、cpu_l2 和 cpu_l3。cluster1 包含了两个核心:core0 和 core1,分别对应 cpu_b0 和 cpu_b1。

cpu_l0、cpu_l1、cpu_l2 和 cpu_l3:这些节点描述了 Cortex-A53 核心。它们具有相同的设备类型 cpu 和兼容性属性 "arm,cortex-a53", "arm,armv8"。

cpu_b0 和 cpu_b1:这些节点描述了 Cortex-A72 核心。它们具有相同的设备类型 cpu 和兼容性属性 "arm,cortex-a72", "arm,armv8"。

59.3 core、thread节点

"core" 和 "thread" 节点通常用于描述处理器核心和线程的配置。下面是对这两个节点的详细介绍:

Core 节点用于描述处理器的核心。一个处理器通常由多个核心组成,每个核心可以独立执行指令和任务。

Thread 节点用于描述处理器的线程。线程是在处理器核心上执行的基本执行单元,每个核心可以支持多个线程。

通过使用 Core 和 Thread 节点,设备树可以准确描述处理器的核心和线程的配置,例如可以使用设备树来描述一个具有16个核心的CPU,一个物理插槽,每个集群中有两个核心,每个核心有两个线程的设备树示例,具体设备树如下所示:

cpus {
    #address-cells = <2>;
    cpu-map {
        socket0 {
            cluster0 {
                core0 {
                    thread0 {
                        cpu = <&CPU0>;
                    };
                    thread1 {
                        cpu = <&CPU1>;
                    };
                };
                core1 {
                    thread0 {
                        cpu = <&CPU2>;
                    };
                    thread1 {
                        cpu = <&CPU3>;
                    };
                };
            };
            cluster1 {
                core0 {
                    thread0 {
                        cpu = <&CPU4>;
                    };
                    thread1 {
                        cpu = <&CPU5>;
                    };
                };
                core1 {
                    thread0 {
                        cpu = <&CPU6>;
                    };
                    thread1 {
                        cpu = <&CPU7>;
                    };
                };
            };
        };
        socket1 {
			cluster0 {
				core0 {
					thread0 {
						cpu = <&CPU8>;
					};
					thread1 {
						cpu = <&CPU9>;
					};
				};
				core1 {
					thread0 {
						cpu = <&CPU10>;
					};
					thread1 {
						cpu = <&CPU11>;
					};
				};
			};
			cluster1 {
				core0 {
					thread0 {
						cpu = <&CPU12>;
					};
					thread1 {
						cpu = <&CPU13>;
					};
				};
				core1 {
					thread0 {
						cpu = <&CPU14>;
					};
					thread1 {
						cpu = <&CPU15>;
					};
				};
			};
		};
    };
};

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

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

相关文章

Redis工具

GitHub - tanhuang2016/RedisDesktopManagerFX: 搞一个简单实用的Redis图形化工具

HDMI线EMI超标整改方案

HDMI端口辐射&#xff08;EMI&#xff09;超标解决方案_hdmi esd器件对 emi的影响-CSDN博客HDMI端口辐射&#xff08;EMI&#xff09;超标解决方案一、HDMI EMC设计要求&#xff1a;1、HDMI EMC设计原理图( 图 一 )2、HDMI元件选型及参数说明&#xff1a;&#xff08;图一所示&…

企业数字化建设有哪些路线可以选择?

企业数字化建设涉及利用数字技术来提高行业的效率、准确性和协作性。在选择企业实施数字化建设的路线时&#xff0c;应该考虑组织的需求和目标的各个方面。可以考虑以下一些路线&#xff1a; 1.项目管理软件&#xff1a;实施项目管理软件&#xff0c;可以更好地规划、调度和跟…

数据库 MySQL总结以及常见命令总结

一、数据库类型 关系型数据库&#xff1a;MYSQL 非关系型数据库&#xff1a;NoSQL、MongoDB、Cassandra、Dynamo 主流关系数据库&#xff1a; 商用数据库&#xff0c;例如&#xff1a;Oracle&#xff0c;SQL Server&#xff0c;DB2等&#xff1b; 开源数据库&#xff0c;例如…

音乐的数字未来:虚拟演唱会与TikTok的巅峰融合

在数字时代&#xff0c;音乐产业正在经历着革命性的变革。虚拟演唱会与TikTok的融合正引领着音乐的数字未来&#xff0c;为艺术家、粉丝和创作者带来了前所未有的互动性和娱乐体验。本文将深入探讨这一巅峰融合&#xff0c;以揭示音乐产业的新前景。 虚拟演唱会的崛起 虚拟演唱…

【机器学习】支持向量机(实战)

支持向量机&#xff08;实战&#xff09; 目录 一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、线性支持向量机&#xff08;核函数为线性核&#xff09;三、数据标准化的影响四、软间隔五、非线性支持向量机5.1 手动升维5.2 对比试验&#…

MySQL的索引原理

文章目录 什么是索引&#xff1f;索引的工作原理创建和管理索引索引类型最佳实践总结 &#x1f389;欢迎来到数据结构学习专栏~MySQL的索引原理 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;数据结…

MyBatis篇---第五篇

系列文章目录 文章目录 系列文章目录一、MyBatis 中见过什么设计模式&#xff1f;二、MyBatis 中比如 UserMapper.java 是接口&#xff0c;为什么没有实现类还能调用&#xff1f; 一、MyBatis 中见过什么设计模式&#xff1f; 二、MyBatis 中比如 UserMapper.java 是接口&#…

在10.24这个特殊的日子里,带你详细解读1024!

目录 1.前言 2.重识1024 3.庆祝1024 致谢 1.前言 作为一名程序员&#xff0c;我想大家对于1024这个数字并不陌生。因为 1024 是 2 的 10 次方&#xff0c;与计算机科学紧密相关&#xff0c;所以 10 月 24 日也被称为“程序员节”&#xff0c;这是一个属于每一个程序员…

黔院长 | 邀您一同共筑养生健康项目!

黔院长&#xff0c;作为一家有百年技术传承并致力于打造大健康产业的企业&#xff0c;为更好的践行“为健康而生&#xff0c;助天下无疾”的初心和使命&#xff0c;更好的让健康事业造福百姓&#xff0c;让更多的人能够从这份事业当中获益&#xff0c;现面向全国火热招商&#…

【JAVA学习笔记】35 - 类变量

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/static_ 一、类变量的引出 有一群小孩在玩堆雪人&#xff0c;不时有新的小孩加入&#xff0c;请问如何直到现在共有多少人在玩&#xff0c;编写程序解决 package com.yin…

docker版本的Jenkins安装与更新技巧

因为jenkins/jenkins镜像默认带的jenkins版本比较低&#xff0c;导致安装完以后&#xff0c;很多插件因为版本问题无法安装。以下是最权威&#xff0c;最方便的安装教程。 1. 创建本地挂载目录 mkdir -p /mnt/dockerdata/jenkins/home/2. 修改挂载目录权限 chown -R 1000:10…

PaddleX场景实战:PP-TS在电压预测场景上的应用

时间序列是按照时间发生的先后顺序进行排列的数据点序列&#xff0c;简称时序。时间序列预测即运用历史的多维数据进行统计分析&#xff0c;推测出事物未来的发展趋势。时间序列预测是最常见的时序问题之一&#xff0c;在很多行业都有其应用&#xff0c;且通常时序预测效果对业…

js如何解决跨域问题?

&#x1f642;博主&#xff1a;锅盖哒 &#x1f642;文章核心&#xff1a;js如何解决跨域问题? 目录 前言&#xff1a;跨域问题的本质 详解&#xff1a;跨域问题的原因和限制 跨域问题的限制包括&#xff1a; 用法&#xff1a;解决跨域问题的方法 1. JSONP&#xff08;J…

(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程&#xff0c;但是这些教程的输入都是一些点的集合&#xff0c;然后根据谱聚类的原理&#xff0c;其会每两个点计算一次亲密度&#xff08;可以认为两个点距离越大&#xff0c;亲密度越…

程序员节1024

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

期 货 分 仓,资 管 分 仓,跟单软件都有哪些特点?

期货分仓软件是一种用于期货交易的软件系统。通过该系统&#xff0c;机构可以在一个主账户中同时使用多个子账户操作多个期货合约&#xff0c;并且可以设置不同资金量的用户不同的开仓比例。 由于目前国内的期货市场对于国际市场的品种还处于不规范阶段&#xff1a;一方面是保证…

怎么去除视频水印?

当今社交媒体环境中&#xff0c;许多用户面临着怎么去除视频水印的挑战尤其是短视频领域的从业者&#xff0c;这些水印不仅影响了视频的美观度也限制了素材的流动性&#xff0c;为了解决这一问题许多人开始积极寻找有效的方法来去除水印&#xff0c;以便更灵活地使用视频内容&a…

经典卷积神经网络 - AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。当时&#xff0c;AlexNet在 ImageNet 大规模视觉识别竞赛中取得了优异的成绩&#xff0c;把深度学习模型在比赛中的正确率提升到一个前所未有的高度…

基于springboot实现广场舞团平台系统项目【项目源码+论文说明】计算机毕业设计

基于SPRINGBOOT实现广场舞团平台系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&am…