OpenHarmony平台驱动使用(二),CLOCK

news2025/7/21 3:02:11

OpenHarmony平台驱动使用(二)


CLOCK

概述

功能简介

CLOCK,时钟是系统各个部件运行的基础,以CPU时钟举例,CPU 时钟是指 CPU 内部的时钟发生器,它以频率的形式工作,用来同步和控制 CPU 内部的各个操作。

CLOCK接口定义了完成CLOCK操作的通用方法集合,包括:

  • CLOCK设备管理:打开或关闭时钟设备。

  • CLOCK速率控制:读取或设置时钟速率。

  • CLOCK门控:使能或去使能时钟。

  • CLOCK父时钟管理:获取或者设置父时钟。

基本概念

设备的时钟信号是指在电子设备中用于同步和控制各个模块或组件操作的信号。它是设备内部的一个基本信号源,用于确保设备的正常运行和数据传输的准确性。

运作机制

在HDF框架中,同类型设备对象较多时(可能同时存在十几个同类型配置器),如果采用独立服务模式则需要配置更多的设备节点,且相关服务会占据更多的内存资源。相反,采用统一服务模式可以使用一个设备服务作为管理器,统一处理所有同类型对象的外部访问(这会在配置文件中有所体现),实现便捷管理和节约资源的目的。CLOCK模块接口适配模式采用统一服务模式。

使用指导

场景介绍

CLOCK提供芯片级别的时钟管理:时钟功能可用于控制芯片内部的时钟分频、时钟倍频、时钟源选择和时钟门控等操作。通过合理的时钟管理,可以提高芯片的能效,并确保各个功能部件的正确协调和协同工作。

接口说明

CLOCK模块提供的主要接口如表1所示,具体API详见//drivers/hdf_core/framework/include/platform/clock_if.h。

表 1 CLOCK驱动API接口功能介绍

接口名接口描述返回值描述特殊情况说明
DevHandle ClockOpen(uint32_t number);打开Clock设备NULL:获取失败,设备句柄:获取成功
int32_t ClockClose(DevHandle handle);关闭Clock设备零:关闭成功,非零:关闭失败
int32_t ClockEnable(DevHandle handle);使能Clock零:使能成功,非零:使能失败
int32_t ClockDisable(DevHandle handle);去使能Clock零:去使能成功,非零:去使能失败
int32_t ClockSetRate(DevHandle handle, uint32_t rate);设置时钟速率零:设置时钟速率成功,非零:设置失败失败请检查传入的rate对应的Clock是否支持
int32_t ClockGetRate(DevHandle handle, uint32_t *rate);获取时钟速率零:获取成功,非零:获取失败
int32_t ClockSetParent(DevHandle child, DevHandle parent);设置父时钟零:设置父成功,非零:设置父失败父时钟重复设置时不报错,直接返回成功
DevHandle ClockGetParent(DevHandle handle);获取父时钟零:获取父成功,非零:获取父失败

开发步骤

使用CLOCK设备的一般流程如图2所示。

图 2 CLOCK使用流程图

CLOCK使用流程图

使用实例

本例拟对RK3568开发板上CLOCK设备进行简单的读取操作,基本硬件信息如下:

  • SOC:RK3568。

本例程对各个接口进行调用测试

示例如下:

#include "clock_if.h"          // CLOCK标准接口头文件
#include "hdf_log.h"         // 标准日志打印头文件
#define CLOCK_NUM 1

static int32_t TestCaseClock(void)
{
    int ret = 0;
    DevHandle handle = NULL;
    DevHandle parent = NULL;
    uint32_t rate = 0;
 
    handle = ClockOpen(CLOCK_NUM);
    if (handle == NULL) {
        HDF_LOGE("Failed to open CLOCK_NUM %d \n", CLOCK_NUM);
        return HDF_FAILURE;
    }

    ret = ClockEnable(handle);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("Failed to ClockEnable ret = %d \n",ret);
        return ret;
    }
   

    ret = ClockGetRate(handle, &rate);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("Failed to ClockGetRate ret = %d \n",ret);
        return ret;
    }
    
    ret = ClockSetRate(handle, set_rate);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("Failed to ClockSetRate ret = %d \n",ret);
        return ret;
    }

    ret = ClockDisable(handle);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("Failed to ClockDisable ret = %d \n",ret);
        return ret;
    }

    parent = ClockGetParent(handle);    
    if (parent != NULL) {
        ret = ClockSetParent(handle, parent);
        ClockClose(parent);
    } else {
        HDF_LOGE("Failed to ClockGetParent ret = %d \n",ret);
    }
    
    ret = ClockClose(handle);
    return ret;
}

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

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

相关文章

我们是如何为 ES|QL 重建自动补全功能的

作者:来自 Elastic Drew Tate Elasticsearch 拥有许多新功能,可以帮助你根据使用场景构建最佳搜索方案。浏览我们的示例笔记本了解更多内容,开始免费试用云服务,或者立即在本地机器上尝试 Elastic。 对于我们开发者来说&#xff0…

MATLAB在逐渐被Python淘汰吗

MATLAB在学术研究、工程仿真、数值计算等传统领域仍占据一席之地,但Python因其开源免费、生态丰富、易于集成的优势,正在快速崛起,逐步蚕食MATLAB的市场份额。尤其在人工智能、数据分析和科学计算等领域,Python的优势愈发明显。例…

Git 使用规范

Git 使用规范 一、版本控制的核心原则 🧭二、分支策略(Branch Strategy) 🌿2.1 分支类型与命名规范2.2 可视化流程图 三、提交信息规范(Commit Message)✍️3.1 提交格式3.2 Type 类型说明 四、Tag 版本规范…

代码随想录第43天:图论4(最小生成树、拓扑排序)

一、冗余的边II(Kamacoder 109) from collections import defaultdict# 并查集 - 查找根节点(路径压缩) def find(fa, x):if fa[x] ! x:fa[x] find(fa, fa[x])return fa[x]# 并查集 - 合并两个集合,返回是否合并成功 …

AI智能体|扣子(Coze)搭建【自动生成超高质量PPT】工作流

各位好久不见,你的失踪人口又回来了,已经超过一周的时间没有进行文章的更新了。 没更新的这段时间,主要还是因为工作上的调整以及身体生病所导致的停更,具体以后再说。 我们先讲今天的主要主题,使用 Coze 智能体一键生…

文档处理的相关工具

目前网页端的文档,可以通过沉浸式翻译来进行翻译阅读和学习。 但是某些文献只有pdf下载的版本,所以需要一个免费的针对pdf的翻译工具。 保留公式和图片格式。 推荐一个pdf翻译的工具,可以自己部署使用。如果需要word版本,后面讨论…

java基础(面向对象进阶高级)内部类

内部类 内部类概述、成员内部类 (了解) 内部类创建对象: 一定要继承外部类对象,才能创建内部类对象。 拓展:成员内部类访问外部类的成员特点: 成员内部类中,是否可以直接访问外部类的实例成员?? 当然可以啊&#x…

使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来

使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来 1. 效果图2. 源码3. 全量源码及运动图片资源参考主要分为 目录下图片解析及读取;拼九宫格图片出来,可以自由配置(m*n)取决于自己有多少张运动图片遍历图片并进行运动…

小白的进阶之路系列之七----人工智能从初步到精通pytorch自动微分优化以及载入和保存模型

本文将介绍Pytorch的以下内容 自动微分函数 优化 模型保存和载入 好了,我们首先介绍一下关于微分的内容。 在训练神经网络时,最常用的算法是反向传播算法。在该算法中,根据损失函数相对于给定参数的梯度来调整参数(模型权重)。 为了计算这些梯度,PyTorch有一个内置…

创建型模式之 Builder (生成器)

创建型模式之 Builder (生成器) 摘要: 本文介绍了生成器(Builder)设计模式,属于创建型模式之一。该模式通过将复杂对象的构建与表示分离,使同一构建过程能创建不同表现形式。文章以小米汽车不同配置版本为例说明了模式…

智能物资出入库管控系统

概述 智能物资管理系统利用RFID自动识别技术,物联网技术、人脸识别、指纹、指静脉生物识别技术,应用于军械装备的管理,可实时准确采集军械装备编配、 储存、供应、使用等数据,实时掌握军械装备物资的分布及数量 状况。细化管理到…

机器学习-线性回归基础

一、什么是回归 依据输入x写出一个目标值y的计算方程,求回归系数的过程就叫回归。简言之:根据题意列出方程,求出系数的过程就叫做回归。 回归的目的是预测数值型的目标值y,分类的目的预测标称型的目标值y。 二、线性回归 2.1线性…

[Vue组件]半环进度显示器

[Vue组件]半环进度显示器 纯svg实现&#xff0c;不需要其他第三方库&#xff0c;功能简单&#xff0c;理论上现代浏览器都能支持 封装组件 所有参数都选填&#xff0c;进度都可选填 <template><div class"ys-semiring"><div class"svg-container…

科技赋能建筑行业,智能楼宇自控系统崭露头角成发展新势力

在科技浪潮席卷全球的时代背景下&#xff0c;传统建筑行业正面临着前所未有的变革压力。随着城市化进程加快&#xff0c;建筑规模与复杂度不断攀升&#xff0c;能源消耗、运营效率、用户体验等问题日益凸显。智能楼宇自控系统凭借物联网、大数据、人工智能等前沿技术&#xff0…

白杨SEO:做AI搜索优化的DeepSeek、豆包、Kimi、百度文心一言、腾讯元宝、通义、智谱、天工等AI生成内容信息采集主要来自哪?占比是多少?

大家好&#xff0c;我是白杨SEO&#xff0c;专注SEO十年以上&#xff0c;全网SEO流量实战派&#xff0c;AI搜索优化研究者。 在开始写之前&#xff0c;先说个抱歉。 上周在上海客户以及线下聚会AI搜索优化分享说各大AI模型的联网搜索是关闭的&#xff0c;最开始上来确实是的。…

显示docker桌面,vnc远程连接docker

目录 相关概念&#xff1a; 实现步骤&#xff1a; 1.启动docker容器 2.安装x11 3.Docker 容器中安装一个完整的图形桌面&#xff08;XFCE&#xff09;和 VNC 远程桌面服务器&#xff08;TightVNC&#xff09; 4.配置vncservice 5.本地安装VNC Viewer连接VNC Viewer下载地…

腾讯云国际站性能调优

全球化业务扩张中&#xff0c;云端性能直接决定用户体验与商业成败。腾讯云国际站通过资源适配、网络优化与存储革新&#xff0c;为企业提供全链路调优方案。 ​​资源精准适配​​ 实例选型需与业务场景深度耦合&#xff0c;计算优化型实例加速AI训练效率3倍&#xff0c;内存…

深入解析操作系统内核与用户空间以及内核态与用户态转换

用户空间和内核空间的划分是现代操作系统的基础&#xff0c;对应用程序网络模型的设计和优化有着深远的影响。 内核空间与用户空间的分工 现代操作系统为了保证系统的稳定性和安全性&#xff0c;将虚拟内存空间划分为用户空间和内核空间。 一、用户空间 用户空间是用户程序…

每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++

P8662 [蓝桥杯 2018 省 AB] 全球变暖 - 洛谷 (luogu.com.cn) DFS #include<iostream> using namespace std; int n, res; char a[1005][1005]; bool vis[1005][1005]; bool flag; int dx[4] { 0,0,1,-1 }; int dy[4] { 1,-1,0,0 }; void dfs(int x, int y) {vis[x][y]…

【JVM】初识JVM 从字节码文件到类的生命周期

初识JVM JVM&#xff08;Java Virtual Machine&#xff09;即 Java 虚拟机&#xff0c;是 Java 技术的核心组件之一。JVM的本质就是运行在计算机上的一个程序&#xff0c;通过软件模拟实现了一台抽象的计算机的功能。JVM是Java程序的运行环境&#xff0c;负责加载字节码文件&a…