0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

北京迅为电子 ? 2025-03-11 14:13 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

wKgZPGfP1EyACEVCAAaxZvHsmZ4328.png

?

【本文摘自】【北京迅为】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驱动框架架构如图所示:

?

wKgZPGfP1EyASA4wAADCmqz2aOk226.png

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平台无关。

平台驱动框架支持的设备类型包括但不限于:ADCDAC、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配置使用流程图如下图所示:

?

wKgZO2fP1EyAR03wAAAVxqxdALM687.png

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

(1)保留关键字

wKgZO2fP1EyACd3fAAA3VII8UZI718.png

(2)基本结构

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

属性

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

attribute_name = value;

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HDF框架
    +关注

    关注

    0

    文章

    10

    浏览量

    2924
  • OpenHarmony
    +关注

    关注

    30

    文章

    3858

    浏览量

    18789
  • 迅为电子
    +关注

    关注

    0

    文章

    68

    浏览量

    188
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3568开发板驱动指南Linux中通用SPI设备驱动

    RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 ?2930次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南Linux中通用SPI设备<b class='flag-5'>驱动</b>

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验
    的头像 发表于 05-26 15:39 ?898次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南GPIO子<b class='flag-5'>系统</b>三级节点操作函数实验

    鸿蒙OpenHarmony南向/北向快速开发教程-RK3568开发板

    -修改产品信息 P20_源码定制-关闭自动息屏 P21_源码定制-修改开机logo和动画 P22_新建运行北向应用 RK3568开发板同时也支持更多
    发表于 07-23 10:44

    RK3568开发板OpenHarmony配置HDF驱动控制LED-新增 topeet子系统

    程序目录 ├── led_driver.c:内核 LED HDF 驱动程序 └── Makefile:内核 LED HDF
    发表于 01-13 15:59

    RK3568开发板OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

    接下来编译 LED 驱动,该驱动用于在基于华为设备框架HDF)的系统中控制 LED 灯的开关,完整代码如下所示: 更多内容可以关注:
    发表于 01-17 15:13

    RK3568开发板OpenHarmony实操HDF驱动控制LED-添加内核编译

    编译内核时将该 HDF 驱动编译到镜像中,接下来编写驱动编译脚本 Makefile,代码如下所示: 加入编译体系,填加模块目录到 drivers/h
    发表于 01-22 10:35

    基于RK3568开发板的嵌入式学习之Linux驱动视频

    基于RK3568开发板的嵌入式学习之Linux驱动视频
    的头像 发表于 05-19 16:30 ?1422次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>基于<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>的嵌入式学习之Linux<b class='flag-5'>驱动</b>视频

    RK3568开发板驱动开发指南-输入子系统

    RK3568开发板驱动开发指南-输入子系统
    的头像 发表于 02-23 15:11 ?1638次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>指南-输入子<b class='flag-5'>系统</b>

    北京RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+

    北京RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 ?1105次阅读
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>嵌入式学习之Linux<b class='flag-5'>驱动</b>全新更新-CAN+

    【技术分享】RK3568开发板使用TFTP加载内核设备树

    【技术分享】RK3568开发板使用TFTP加载内核设备树
    的头像 发表于 02-21 14:04 ?754次阅读
    【技术分享】<b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>使用TFTP加载<b class='flag-5'>内核</b>设备树

    北京】iTOP-RK3568OpenHarmony系统南向驱动开发GPIO基础知识

    北京】iTOP-RK3568OpenHarmony系统南向
    的头像 发表于 03-06 11:23 ?669次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】iTOP-<b class='flag-5'>RK3568OpenHarmony</b><b class='flag-5'>系统</b><b class='flag-5'>南向</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>GPIO基础知识

    北京iTOP-RK3568开发板OpenHarmony系统南向驱动开发实操-HDF驱动配置LED

    北京iTOP-RK3568开发板OpenHarmony
    的头像 发表于 03-14 14:41 ?759次阅读
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>系统</b><b class='flag-5'>南向</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实操-<b class='flag-5'>HDF</b><b class='flag-5'>驱动</b>配置LED

    北京】iTOP-RK3568开发板OpenHarmony系统南向驱动开发-第4章 UART基础知识

    北京】iTOP-RK3568开发板OpenHarmony
    的头像 发表于 03-17 15:50 ?531次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>系统</b><b class='flag-5'>南向</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-第4章 UART基础知识

    北京】iTOP-RK3568开发板鸿蒙OpenHarmony系统南向驱动开发实操-HDF驱动配置UART

    北京】iTOP-RK3568开发板鸿蒙OpenHarmony
    的头像 发表于 03-25 11:02 ?766次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>鸿蒙<b class='flag-5'>OpenHarmony</b><b class='flag-5'>系统</b><b class='flag-5'>南向</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实操-<b class='flag-5'>HDF</b><b class='flag-5'>驱动</b>配置UART

    RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    RK3568开发板驱动指南GPIO子系统GPIO子系统
    的头像 发表于 05-29 14:05 ?497次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南GPIO子<b class='flag-5'>系统</b>GPIO子<b class='flag-5'>系统</b>API函数的引入