RK3568驱动指南|第七期-设备树-第58章 实例分析:时钟

news2024/12/25 1:12:00

瑞芯微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主板


第58章 实例分析:时钟

时钟(Clock)用于描述硬件设备和系统中的时钟源以及时钟相关的配置和连接关系。时钟在计算机系统中起着至关重要的作用,用于同步和定时各种硬件设备的操作。时钟可以分为两个主要角色:时钟生产者(clock provider)和时钟消费者(clock consumer)。

时钟生产者(Clock Provider):

定义:时钟生产者是负责生成和提供时钟信号的硬件或软件模块。它可以是时钟控制器、PLL、时钟发生器等。

设备树节点:时钟生产者在设备树中以时钟节点的形式表示。

时钟节点属性:

(1)clock-cells:该属性用于指定时钟编号的位数。它是一个整数值,表示时钟编号的位数。通常情况下,当 clock-cells 为 0 时表示一个时钟,为 1 表示多个时钟。具体示例如下所示:

示例1:单个时钟
osc24m: osc24m {
    compatible = "clock";
    clock-frequency = <24000000>;
    clock-output-names = "osc24m";
    #clock-cells = <O>;
};

示例2:多个时钟
clock: clock {
    #clock-cells = <1>;
    clock-output-names = "clock1", "clock2";
};

(2)clock-frequency 属性是设备树中用于指定时钟频率的属性。它用于描述时钟节点所提供的时钟信号的频率,使用 Hertz (Hz) 作为单位。对于时钟生产者节点,clock-frequency 属性表示该节点生成的时钟信号的频率。它用于描述时钟控制器、晶振、PLL 等产生时钟信号的硬件或软件模块的输出频率,例如指定时钟频率为24000000的具体示例如下所示: 

3assigned-clocks 和 assigned-clock-rates 是设备树中用于描述多路时钟的属性,通常一起使用。

assigned-clocks 属性用于标识时钟消费者节点所使用的时钟源。它是一个整数数组,每个元素对应一个时钟编号。时钟编号是指时钟生产者节点(如时钟控制器)所提供的时钟源的编号。通过在时钟消费者节点中使用 assigned-clocks 属性,可以指定该节点所需的时钟源。

assigned-clock-rates 属性用于指定每个时钟源的时钟频率。它是一个整数数组,每个元素对应一个时钟源的频率。时钟频率以 Hz (赫兹) 为单位表示。assigned-clock-rates 属性的元素数量和顺序应与 assigned-clocks 属性中的时钟编号相对应。

关于assigned-clocks 和 assigned-clock-rates 属性的一个具体示例如下所示:

cru: clock-controller@fdd20000 {
    #clock-cells = <1>;
    assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru ACLK_RKVDEC_PRE>;
    assigned-clock-rates = <32768>, <300000000>;
};

(4)clock-indicesclock-indices 属性用于指定时钟消费者节点所使用的时钟源的索引值。它是一个整数数组,每个元素对应一个时钟源的索引。

时钟索引是指时钟生产者节点(如时钟控制器)所提供的时钟源的编号。通过在时钟消费者节点中使用 clock-indices 属性,可以明确指定该节点所需的时钟源,并按照特定的顺序进行匹配。一个clock-indices示例如下所示:

scpi_dvfs: clocks-0 {
    #clock-cells = <1>;
    clock-indices = <0>, <1>, <2>;
    clock-output-names = "atlclk", "aplclk", "gpuclk";
};

scpi_clk: clocks-1 {
    #clock-cells = <1>;
    clock-indices = <3>;
    clock-output-names = "pxlclk";
};

在第一个节点中"atlclk", "aplclk", "gpuclk"三个时钟源的索引就分别被设置为了0、1、2,在第二个节点中"pxlclk"时钟源的索引值被设置为了3.

(5)assigned-clock-parents 属性用于指定时钟消费者节点所使用的时钟源的父时钟源。它是一个时钟源引用的数组,每个元素对应一个父时钟源的引用。在时钟的层次结构中,某些时钟源可能是其他时钟源的父时钟源,即它们提供时钟信号给其他时钟源作为输入。通过在时钟消费者节点中使用 assigned-clock-parents 属性,可以明确指定该节点所需的父时钟源,并按照特定的顺序进行匹配。一个实际的 assigned-clock-parents 属性例子如下所示:

clock: clock {
    assigned-clocks = <&clkcon 0>, <&pll 2>;
    assigned-clock-parents = <&pll 2>;
    assigned-clock-rates = <115200>, <9600>;
};

上述设备树表示了一个名为 clock 的时钟消费者节点,具有以下属性:

assigned-clocks 属性指定了该节点使用的时钟源,引用了两个时钟源节点:clkcon 0 和 pll 2。

assigned-clock-parents 属性指定了这些时钟源的父时钟源,引用了 pll 2 时钟源节点。

assigned-clock-rates 属性指定了每个时钟源的时钟频率,分别是 115200 和 9600。

时钟消费者(Clock Consumer):

定义:时钟消费者是依赖时钟信号的硬件设备或模块。它们通过引用时钟生产者节点提供的时钟源来获取时钟信号。

设备树节点:时钟消费者在设备树中的节点中使用属性来引用时钟生产者的时钟源。

时钟消费者属性:

(1)clocks:该属性用于指定时钟消费者节点所需的时钟源。它是一个整数数组,每个元素是一个时钟编号,表示时钟消费者需要的一个时钟源。

(2)clock-names:可选属性,用于指定时钟消费者节点所需时钟源的名称。它是一个字符串数组,与 clocks 数组一一对应,用于提供时钟源的描述性名称。

一个时钟消费者示例如下所示:

clock: clock {
    clocks = <&cru CLK_VOP>;
    clock-names = "clk_vop";
};

clocks 属性指定了该节点使用的时钟源,引用了 cru 节点中的 CLK_VOP 时钟源。

clock-names 属性指定了时钟源的名称,这里是 "clk_vop"。


 

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

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

相关文章

laravel框架介绍(一)

laravel框架是一套简洁&#xff0c;优雅的PHPWeb开发框架。

蓝鹏精准测量系统 助力圆钢负公差轧制

关键字: 钢材下差生产, 负公差轧制, 负公差带肋钢筋, 盘螺负公差率, 成品负公差范围 负公差轧制是指很多产品是按照尺寸公差交货。如果产品公差标或厂标&#xff0c;则可认为产品尺寸精度满足交货要求。 根据国家标准GB/T702-2008《钢材冷拔、冷拉和冷拔锻造用圆钢》的规定&…

免费旋转视频

上一篇&#xff1a;安卓开发测试用视频链接分享了几个免费的视频链接。 平时解bug&#xff0c;测试同事拍的视频&#xff0c;方向可能是倒着的。怎么把视频旋转到正确的方向了&#xff1f;分享一种免费的方法。 下载windows movie maker,下载地址&#xff1a;https://www.top…

JAVA基础-String StringBuffer 和 StringBuilder 类(9)

目录 String创建字符串字符串长度连接字符串创建格式化字符串String 方法 **StringBuilder**StringBuffer String 创建字符串 String s1 "Runoob"; // String 直接创建 String s2 "Runoob"; // String 直接创建 String s3 s…

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理

目录 内存管理概念 内存的基础知识 什么是内存&#xff1f;有何作用&#xff1f; 补充知识:几个常用的数量单位 指令的工作原理 三种装入方式 绝对装入 可重定位装入 动态重定位 从写程序到程序运行 链接的三种方式 总结 内存管理的概念 内存保护 内存空间的扩充 覆盖技…

创新智能环境带来无线通信与感知的新视角

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。25年来&#xff0c;微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式&#xff0c;并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来&#xff0c;微软亚洲研究院致力于创造具有…

【java零基础入门到就业】第三天:HelloWorld程序的常见问题和java环境变量的配置

1、java编写程序的常见问题 1.1、 BUG的由来 BUG的由来&#xff1a; "Bug"一词最初是用来形容计算机系统中的硬件故障或软件错误的。据说这个词最早出现在1947年&#xff0c;由于一只飞蛾飞进了哈佛大学的马克Ⅱ计算机中&#xff0c;导致计算机出现故障。后来&#…

仿第八区2023年app免签封装/苹果签名/分发平台系统

描述 封装应用程序直接通过访问数据来操作&#xff0c;直接像网页直接打开一样被访问&#xff0c;这与h5连接访问相同&#xff0c;所以封装应用程序的大部分也在网页端被h5系统封装&#xff0c;从而控制了网页访问手机的硬件参数和手机的权限控制。封装app基本上是以h5页面的格…

(零基础学习)Neo4j+Spring boot 自行定义属性

前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成&#xff0c;键名是字符串。属性值是要么是原始值&#xff0c;要么是原始值类型的一个数组。比如String&#xff0c;int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…

建筑模板的厚度对价格有多大影响?

建筑模板的厚度对价格有一定的影响&#xff0c;以下是关于建筑模板厚度对价格影响的一些信息&#xff1a; 1. 厚度与价格的关系&#xff1a; - 建筑模板的厚度越大&#xff0c;通常价格也会相应增加。这是因为生产厚度较大的模板需要更多的原材料和工艺成本。 - 厚度较薄的建筑…

Virtualbox Manjaro kde虚拟机系统闪烁

过程 https://blog.csdn.net/weixin_44220976/article/details/133954801 有次更新了Manjaro虚拟机系统之后发生闪烁 • 不操作不闪烁 • 鼠标光标悬浮到桌面的文件、文件夹上&#xff0c;所有文件、文件夹图标消失&#xff0c;变成&#xff1a; 只有悬浮位置有个半透明的框 …

股票价格预测 | Python实现基于LSTM的股票预测模型(keras)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 今儿举一个案例,围绕 LSTM(Long Short-Term Memory)神经网络的原理,展示如何使用Python和深度学习库Keras构建LSTM模型,以及如何使用这个模型来预测时间序列数据。 以股票价格预测为例,这是LSTM在金…

LABVIEW 安装教程(超详细)

目录 LabVIEW2017&#xff08;32/64位&#xff09;下载地址&#xff1a; 一 .简介 二.安装步骤&#xff1a; LabVIEW2017&#xff08;32/64位&#xff09;下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1eSGB_3ygLNeWpnmGAoSwcQ 密码&#xff1a;gjrk …

DataX-web安装部署和使用

DataX-web的环境准备 MySQL (5.5) 必选&#xff0c;对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件&#xff0c;替换文件在do…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多&#xff0c;在以前线下店是学生、学者们经常去的场所&#xff0c;每到周末人流不绝&#xff0c;但随着互联网发展以及客户消费升级&#xff0c;如今线下书店人流量非常少&#xff0c;除了头部品牌可以支撑外&#xff0c;中小品牌几乎很难生存。 同时加之…

智慧公厕:打造无人值守的公共厕所运营管理服务

智慧公厕是在"厕所革命"的背景下产生的物联网应用解决方案&#xff0c;结合物联网高精尖技术的中期科技智慧厕所&#xff0c;是智慧城市公共厕所应用解决方案的代表。它提供了一系列监测应用功能&#xff0c;包括监测公厕内部人体活动状态、人体存在状态、空气质量情…

【论文笔记】Far3D: Expanding the Horizon for Surround-view 3D Object Detection

原文链接&#xff1a;https://arxiv.org/pdf/2308.09616.pdf 1. 引言 目前的环视图图像3D目标检测方法分为基于密集BEV的方法和基于稀疏查询的方法。前者需要较高的计算量&#xff0c;难以扩展到长距离检测。后者全局固定的查询不能适应动态场景&#xff0c;通常会丢失远距离…

进阶课1——声纹识别

声纹识别是一种生物识别技术&#xff0c;也称为说话人识别&#xff0c;包括说话人辨认和说话人确认两种技术。该技术通过将声信号转换成电信号&#xff0c;再使用计算机进行识别&#xff0c;不同的任务和应用会使用不同的声纹识别技术&#xff0c;例如在缩小刑侦范围时可能需要…

如何使用积分系统增强用户留存?会员积分体系建设方式介绍

为什么别人家的积分系统能够成功吸引并维护10万个忠实粉丝&#xff0c;而你的积分系统却鲜有人问津&#xff1f;本文将详细解释积分系统如何与会员体系相互关联&#xff0c;以激发会员的复购和升级行为。 想要做好用户留存&#xff0c;互动交流是至关重要的一部分。企业需要灵…

Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)

案例&#xff1a;求1~100之间&#xff0c;所有偶数的和 思考&#xff1a; 先套用原有基础模式&#xff0c;之后再思考其他的。 其实就是在之前文章 Python--练习&#xff1a;使用while循环求1..100的和-CSDN博客 的基础上&#xff0c;再判断如果获取到里面的全部偶数&#…