Harmony鸿蒙南向驱动开发-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;
}

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五一出游 请带上我。必备全家桶。出游变成搬家。千里快递员,这样的人就不要带了。学习过后,你会使用这些句子了吗?

五一出游,即劳动节假期出游,需要准备的物品会根据旅行的目的地、天气状况、交通方式和个人习惯有所不同。以下是一个基本的全家桶必备物品清单: 一、 证件类: 身份证驾驶证(如果自驾)护照/港澳通行证/台…

递归、搜索与回溯算法:递归

递归 在解决⼀个规模为n的问题时,如果满⾜以下条件,我们可以使⽤递归来解决: a. 问题可以被划分为规模更⼩的⼦问题,并且这些⼦问题具有与原问题相同的解决⽅法。 b. 当我们知道规模更⼩的⼦问题(规模为 n - 1&…

MySQL事务、主从、分库分表常见面试题

文章目录 1.事务的特性2.并发事务问题,如何解决,默认隔离级别3.undo log和redo log的区别4.事务中的隔离性是如何保证的(解释一下MVCC)5.主从同步原理6.分库分表 1.事务的特性 2.并发事务问题,如何解决,默认…

Windows部署ChatGLM3步骤

一、环境要求 硬件 内存:> 16GB 显存: > 13GB(4080 16GB) 软件 python 版本推荐3.10 - 3.11 transformers 库版本推荐为 4.36.2 torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能 二、部署步骤 1、新建pytho…

无缝集成:使用Spring Boot和Vue实现头像上传与回显功能

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

乡村振兴多元共治,共绘乡村新蓝图:政府引领、企业助力、村民参与

乡村振兴是一项复杂而艰巨的任务,需要从多个角度进行考虑。以下是从不同身份出发对乡村振兴建设的思考: 1、政府领导的角度: 政府是乡村振兴的主要推动者和组织者。在制定和实施乡村振兴战略时,政府需要注重规划引领,科…

【webrtc】源码下载与编译

目录 下载 下依赖 内存需求 !! 参考文章 : 下载 (1) windows ,centos上都会报错 (2) ubuntu A : 在git上设置代理 B fetch通过 ubuntu的界面 proxy设置了代理 这将会拉取webRTC源码,且额外加了a…

群晖虚拟机搭建Synology Drive并实现Obsidian笔记异地多端同步

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…

目标检测——瓷砖瑕疵检测数据集

一、重要性及意义 瓷砖瑕疵检测在瓷砖制造和质量控制过程中具有极其重要的地位,其重要性和意义主要体现在以下几个方面: 首先,瓷砖瑕疵检测是确保产品质量的关键环节。瓷砖作为家居装修中不可或缺的材料,其表面质量直接影响到装…

关于ABP 新增表,dbfirst模式

下面的代码是基于abp生成的项目,项目名:Store 1.在Domain结尾的项目中通过EF工具生成数据实体: Scaffold-DbContext Data Source服务器IP;Initial Catalog数据库;User Idsa;Password密码;EncryptFalse; Microsoft.EntityFrameworkCore.SqlS…

【React】React Hooks

useState useState 向组件中添加状态变量 状态是只读的,不可以直接修改 对于对象类型的状态变量,应该传递一个新的对象来更改 需要对象展开,并重新赋值,进行增加或者修改。 如果需要删除,则使用 filter。 import { …

Android MTK 屏下指纹的调试过程记录

Demo链接 -----> https://download.csdn.net/download/u011694328/89118346 一些品牌手机都有了屏下指纹的功能,还算是个比较新颖的功能,最近有项目需要使用屏下指纹, 使用的是汇顶(Goodix)的指纹方案&#xff0c…

学习笔记之——3DGS-SLAM系列代码解读

最近对一系列基于3D Gaussian Splatting(3DGS)SLAM的工作的源码进行了测试与解读。为此写下本博客mark一下所有的源码解读以及对应的代码配置与测试记录~ 其中工作1~5的原理解读见博客: 学习笔记之——3D Gaussian Splatting及其在SLAM与自动…

jupyter python paramiko 网络系统运维

概述 通过使用jupyter进行网络运维的相关测试 设备为H3C 联通性测试 import paramiko import time import getpass import re import os import datetimeusername "*****" password "*****" ip "10.32.**.**"ssh_client paramiko.SSHCli…

【JSON2WEB】14 基于Amis的CRUD开发30分钟速成

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

docker安装Jenkins,CI/CD,代码发布,环境维护,测试神器

文章目录 前言创建文件夹设置权限docker-compose.yaml文件安装启动docker 查看网站获取密码方式1获取密码方式2 初始化jenkins 前言 Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署…

2024最新高频渗透测试面试题,啃完直通大厂

2024的金三银四即将结束,不知道大家有没有找到心仪的工作呀,今天给大家整理了100道渗透测试面试题,都是今年被问到的高频题目 第一套渗透面试题 什么是渗透测试?它的目的是什么?渗透测试的五个阶段是什么?…

免重装系统,直接把家庭版升级为专业版!

前言 前段时间有小伙伴找小白重装系统。一般在重装系统之前,我都会问对方:为什么要重装系统? 结果她和我说:家庭版不好用,想要重装成专业版。感觉专业版更好一些,听起来好像也更厉害一些。 嗯……这个理由…

npm i -g nodemon 遇到的下载卡住及运行权限问题解决记录

一、下载nodemon原因 nodemon作用:用node环境运行js文件时可以实时刷新运行出结果 (即修改js代码后不需再手动重新运行js文件) 二、下载卡住 reify:semver:timing reifyNode:node_modules/nodemon Completed 卡住位置:reify:semver: timing reifyNode…

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信: 文章提供整体代码、解释、测试效果截图、整体测试工程下载: 主要包含的知识有:下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…