北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

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

【本文摘自】【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发

【相关视频】OpenHarmony学习开发系列教程(第1期 北向基础篇一)

OpenHarmony学习开发系列教程(第2期 南向基础篇一)

第2章 内核HDF驱动框架架构

本篇实战我们将要配置HDF驱动控制LED,在配置之前,我们首先要明白什么是HDF,以及HDF驱动开发的相关概念。

2.1 驱动架构

下面的视频——OpenHarmony功能框架

P2_OpenHarmony功能框架_哔哩哔哩_bilibili中提到了HDF(Hardware Driver Foundation)。接下来我们了解一下什么是HDF。

HDF(Hardware Driver foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载,驱动服务管理和驱动消息机制。旨在构建统一的驱动架构平台,为驱动开发者提供更精准,更高效的开发环境,力求做到一次开发,多系统部署。

HDF驱动架构采用C 语言面向对象编程模型构建,通过平台解耦,内核解耦,来达到兼容不同内核,统一平台底座的目的。HDF驱动框架架构如图所示:

HDF驱动架构主要组成部分:

HDI(Hardware Device Interface,硬件设备统一接口)层:通过规范化的设备接口标准,为系统提供统一、稳定的硬件设备操作接口。

HDF驱动框架:提供统一的硬件资源管理、驱动加载管理、设备节点管理、设备电源管理以及驱动服务模型等功能,需要包含设备管理、服务管理、DeviceHost、PnPManager等模块。

统一的配置界面:支持硬件资源的抽象描述,屏蔽硬件差异,可以支撑开发者开发出与配置信息不绑定的通用驱动代码,提升开发及迁移效率,并可通过HC-Gen等工具快捷生成配置文件。

操作系统抽象层(OSAL,Operating System Abstraction Layer):提供统一封装的内核操作相关接口,屏蔽不同系统操作差异,包含内存、锁、线程、信号量等接口。

平台驱动:为外设驱动提供Board硬件(如:I2C/SPI/UART总线等平台资源)操作统一接口,同时对Board硬件操作进行统一的适配接口抽象以便于不同平台迁移。

外设驱动模型:面向外设驱动,提供常见的驱动抽象模型,主要达成两个目的,提供标准化的器件驱动,开发者无需独立开发,通过配置即可完成驱动的部署;提供驱动模型抽象,屏蔽驱动与不同系统组件间的交互,使得驱动更具备通用性。

2.2 平台驱动

OpenHarmony平台驱动(Platform Driver)是为平台设备(Platform Device)提供驱动支持的接口,帮助系统和外设之间的互通。这里的平台设备包括总线接口(如I2C、UART)以及特定硬件资源(如GPIO、RTC等)。平台驱动框架是OpenHarmony驱动框架的核心部分,基于HDF驱动框架、操作系统适配层和驱动配置管理,提供一个统一的标准模型,帮助开发者实现各类平台设备驱动。

平台驱动框架的主要特点包括:

统一的平台设备访问接口:为平台设备操作提供统一的接口,屏蔽不同硬件平台(SoC)和操作系统(OS)的差异。

统一的适配接口:为平台设备驱动提供统一的接口,让开发者只需关注硬件控制,而无需关心设备管理或其他公共流程。

提供公共能力:提供设备注册、管理、访问控制等功能,且与特定SoC平台无关。

平台驱动框架支持的设备类型包括但不限于:ADC、DAC、GPIO、HDMI、I2C、I3C、MIPI_CSI、MIPI_DSI、MMC、Pin、PWM、Regulator、RTC、SDIO、SPI、UART、WatchDog等。

2.3 外设驱动

OpenHarmony在HDF驱动框架和平台驱动框架的基础上,为外设设备提供了标准化的驱动模型。这些驱动模型可以帮助开发者减少重复开发工作,并提供统一的抽象层,屏蔽了驱动与系统其他组件之间的复杂交互,使得驱动更加通用、易于移植。

目前,OpenHarmony支持的外设设备类型包括但不限于:音频(Audio)、摄像头(Camera)、编解码器(Codec)、人脸识别(Face_auth)、指纹识别(Fingerprint_auth)、LCD屏幕(LCD)、灯光控制(Light)、运动传感器(Motion)、引脚认证(Pin_auth)、传感器(Sensor)、触摸屏(Touchscreen)、USB、用户认证(User_auth)、振动器(Vibrator)、无线局域网(WLAN)等。

2.4 HCS简介

HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。HC-GEN(HDF Configuration Generator) 是HCS配置转换工具,可以将HDF配置文件转换为软件可读取的文件格式。在高性能环境中,HCS经过HC-GEN编译生成HCB(HDF Configuration Binary)二进制文件,HDF驱动框架中的HCS Parser模块会从HCB文件中重建配置树,HDF驱动模块使用HCS Parser提供的配置读取接口获取配置内容。HCB配置使用流程图如下图所示:

接下来介绍一下HCS的语法,HCS配置语法保留了以下关键字。

(1)保留关键字

(2)基本结构

HCS主要分为属性(Attribute)和节点(Node)两种结构。

属性

属性是最小的配置单元,表示一个独立的配置项,语法格式如下:

attribute_name = value;

attribute_name:由字母、数字、下划线组成,且必须以字母或下划线开头,字母区分大小写。

value:可以是以下几种类型:

数字常量:支持二进制、八进制、十进制、十六进制,具体类型参考数据类型部分。

字符串:使用双引号("")括起来。

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

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

相关文章

爬取动态数据,爬取持久化数据

1. 动态内容与静态内容的区别 动态内容通常指通过 JavaScript 渲染或异步加载的数据。静态内容则是页面加载时直接可见的内容,通常通过 HTML 直接获取。很多现代网站都使用 JavaScript 动态渲染页面内容(例如 AJAX 请求)。 头条网站的热榜内…

rdiff-backup备份

目录 1. 服务器备份知识点 1.1 备份策略 1.2 备份步骤和宝塔面板简介 1.3 CentOS7重要目录 2. 备份工具 2.1 tar -g 备份演示 2. rsync 备份演示 3. rdiff-backup 备份演示 4. 差异和优缺点 3. rdiff-backup安装和使用 3.1 备份命令rdiff-backup 3.2 恢复命令--…

【6】字典树学习笔记

前言 WFLS 2023 寒假集训 Day2 大纲里字典树在数据结构里,但是个人认为应该属于字符串,就把它放到字符串里了 字典树 字典树,又称Trie树,字母树。每个顶点代表一个字符,从根节点到叶子节点的路径上所有的节点的字符…

Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案

在自动化和智能制造领域,机器人技术的应用越来越广泛,而涂胶和点胶作为生产过程中的重要环节,也逐渐实现了自动化和智能化。Aim Robotics作为一家专注于机器人技术的公司,其推出的电动胶枪为这一领域带来了高效、灵活且易于操作的…

Camel AI Owl + 阿里云QWQ 本地部署

在 Windows 环境下,部署 Camel AI Owl 并集成阿里云百炼 DeepSeek-R1 API。通过循序渐进的详细说明,你将轻松完成从环境配置到系统落地的全过程。 目录 环境准备Windows 下创建虚拟环境并安装依赖部署 Camel AI Owl配置阿里云百炼 DeepSeek-R1 API测试与…

基于django+pytorch(Faster R-CNN)的钢材缺陷识别系统

一、训练数据来源以及数据标注 数据来源于阿里云天池实验室公开数据集中的铝型材缺陷检测数据集APDDD 数据标注通过labelme进行标注,图片所有标注以转化为矩形标注,存放成json格式。 二、模型训练方式及结果 缺陷识别模型基于Faster R-CNN ResNet5…

Linux网络编程——UDP网络通信的简单实现

目录 UDP网络通信 简单的udpServer实现 头文件 封装udp服务 1、私有成员 2、构造函数和析构函数 3、 udp服务器初始化 4、udp服务器运行 5、完整代码 简单的udpClient实现 UDP实现最简单的公共聊天 完整代码 inet_ntoa()相关问题 UDP网络通信 在正式实现UDP网络通…

【Prometheus】层层解析prometheus如何监控k8s核心组件

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【JavaEE】多线程进阶(2)

【JavaEE】多线程进阶(2) 一、JUC(java.util.concurrent) 的常⻅类1.1 Callable 接⼝1.2 ReentrantLock1.3 原子类原子类的特性:常见原子类:原子类的实例: 1.4 线程池1.5 信号量 Semaphore代码实例 1.6 CountDownLatch…

SpringBoot 如何调用 WebService 接口

前言 调用WebService接口的方式有很多&#xff0c;今天记录一下&#xff0c;使用 Spring Web Services 调用 SOAP WebService接口 一.导入依赖 <!-- Spring Boot Web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId…

从Manus到OpenManus:多智能体协作框架如何重构AI生产力?

文章目录 Manus&#xff1a;封闭生态下的通用AI智能体OpenManus&#xff1a;开源社区的闪速复刻挑战与未来&#xff1a;框架落地的现实边界当前局限性未来演进方向 OpenManus使用指南1. 环境配置2. 参数配置3. 替换搜索引擎4. 运行效果 协作框架开启AI生产力革命 Manus&#xf…

1.5 双指针专题:有效三⻆形的个数(medium)

1.题目链接 611. 有效三角形的个数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/valid-triangle-number/submissions/609232447/ 2.题目描述 给定⼀个包含⾮负整数的数组 nums &#xff0c;返回其中可以组成三⻆形三条边的三元组个数。 ⽰例 1: 输…

大数据学习(59)-DataX执行机制

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…

《面向对象程序设计-C++》实验一 熟悉Visual C++开发环境及上机过程

一、实验目的 了解和使用VC集成开发环境&#xff1b;熟悉VC环境的基本命令和功能键&#xff1b;熟悉常用的功能菜单命令&#xff1b;学习使用VC环境的帮助&#xff1b;学习完整的C程序开发过程&#xff1b;理解简单的C程序结构。 二、实验内容 使用Visual C 6.0集成环境来编…

Chebykan wx 文章阅读

文献筛选 [1] 神经网络&#xff1a;全面基础 [2] 通过sigmoid函数的超层叠近似 [3] 多层前馈网络是通用近似器 [5] 注意力是你所需要的 [6] 深度残差学习用于图像识别 [7] 视觉化神经网络的损失景观 [8] 牙齿模具点云补全通过数据增强和混合RL-GAN [9] 强化学习&#xff1a;一…

2025解决软件供应链安全,开源安全的版本答案:SCA+SBOM

GitHub&#xff1a; https://github.com/XmirrorSecurity/OpenSCA-cli/ Gitee&#xff1a; https://gitee.com/XmirrorSecurity/OpenSCA-cli/ OpenSCA官网&#xff1a; https://opensca.xmirror.cn/ 根据Sonatype 发布的《软件供应链现状》报告&#xff0c;其中强调软件供…

Linux 系统负载过高的排查思路

技术探讨&#xff1a;Linux系统负载过高的排查思路 在Linux服务器运行过程中&#xff0c;如果系统负载过高&#xff0c;可能会导致性能下降和服务不稳定。以下是针对Linux系统负载过高问题的排查思路和解决方法&#xff1a; 1. 查看系统负载&#xff1a; 使用uptime或top命令查…

typora高亮方案+鼠标侧键一键改色

引言 在typora里面有一个自定义的高亮, <mark></mark>>但是单一颜色就太难看了, 我使用人工智能, 搜索全网艺术家, 汇集了几种好看的格式,并且方便大家侧键一键 调用, 是不是太方便啦 ! 示例 午夜模式 春意盎然 深海蓝调 石墨文档 秋日暖阳 蜜桃宣言 使用方法 …

自然语言处理文本分析:从词袋模型到认知智能的进化之旅

清晨&#xff0c;当智能音箱准确识别出"播放周杰伦最新专辑"的模糊语音指令时&#xff1b;午间&#xff0c;企业舆情系统自动标记出十万条评论中的负面情绪&#xff1b;深夜&#xff0c;科研人员用GPT-4解析百万篇论文发现新材料线索——这些场景背后&#xff0c;是自…

基于SSM+Vue+uniapp的考研交流(带商城)小程序+LW示例参考

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…