接上一篇,添加的linux内核到openharmony,现在我们添加hdf驱动框架到linux内核,需要修改kernel/linux/patches/linux-5.4/t113_nand_linux_patch/目录中的hdf.patch文件diff--gita/arch/arm/kernel/vmlinux.lds.Sb/arch/arm/kernel/vmlinux.lds.Sindex23150c0f0..dce3220b7100644---a/arch/arm/kernel/vmlinux.lds.S+++b/arch/arm/kernel/vmlinux.lds.S@@-121,6
引言本文以小熊派BearPi-HM_Micro_small开发板上的一个LED灯为例,介绍如何基于HDF框架开发一个外设的驱动程序。在阅读本文之前,建议大家先阅读:《OpenHarmony驱动子系统概述》,对HDF框架有一个基本的了解。另外,在编写LED灯的驱动程序时,我们会用到很多由HDF框架提供的API。为了便于查阅这些API的用法,建议大家在阅读本文的同时,打开文章《HDF驱动框架的API》(1)、(2)、(3)。在这几篇文章中汇集了本文所有用到的API。当然,你也可以直接去查阅这些API的源码和官方说明文档。基于HDF框架进行设备驱动开发主要包括两部分工作:驱动配置和驱动实现。(1)
1概述在产品开发时就需要对不同厂家或者同一厂家的不同型号进行适配开发,就会增加开发者的开发难度。为了快速开发或者移植传感器驱动,基于HDF(HardwareDriverFoundation)驱动框架开发了Sensor(传感器)驱动模型。Sensor驱动模型主要为上层提供稳定接口能力,对驱动开发者提供开放的接口实现和抽象的配置接口能力。Sensor设备作为外接设备重要组成模块,Sensor驱动模型为上层Sensor服务系统提供稳定的Sensor基础能力接口,包括Sensor列表查询、Sensor启停、Sensor订阅及去订阅,Sensor参数配置等功能。传感器驱动模型总体框架如下图所示。 Sen
【鸿蒙OS开发入门】18-HDF驱动子系统:加速度计传感器Driver层代码分析一、如何添加速度计传感器驱动代码(代码、编译、配置)1、驱动代码实现2、驱动编译配置2.1linux编译宏控配置2.2liteos编译宏控配置3、设备配置描述二、加速度计传感器Driver层代码逻辑分析2.1driverLoader->LoadNode()方法:HdfDriverLoaderLoadNode()加载驱动bind()方法2.2driverEntry->Bind()方法:Bmi160BindDriver()分配并初始化驱动结构体g_bmi160DrvData2.3device->super.Attach
引言为了方便查阅,本文汇集了我在学习鸿蒙驱动子系统过程中,曾经遇到过的HDF驱动框架提供的API。同时,还加入了一些对这些API的个人理解和解读。另外,大家也可以去阅读这些API的源码或官方文档:https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073一、结构体1.1HdfDriverEntry结构体HdfDriverEntry可以称为HDF驱动入口结构体,代表设备驱动的入口。1、官方文档https://device.harmonyos.com/cn/docs/documentation/a
STM32F407霸天虎HAL库学习笔记——通过I2C驱动OLEDI2C知识概述一、软件准备二、硬件准备三、CubeMX配置四、Keiloled.holed.cfont.hmain.cI2C知识概述本次实验是使用I2C驱动0.9寸OLED屏幕,这里补充一下I2C通信的一些基础知识,先看一下物理层面上,I2C使用了两条总线SCL(串行时钟线),SDA(串行数据线)来进行通信,且I2C有三种传输模式:标准传输模式(100kbit/s)、快速传输模式(400kbit/s)、高速传输模式(3.4M/s),但是多数设备不支持高速传输模式,本次我使用到了快速传输模式。在上面的图中可以看出在一个I2C通讯总
目录1、现象2、原因3、解决方法4、相关博文1、现象 I2C死锁时表现为SCL为高,SDA一直为低。例如:1.1、正常情况该部分数据 正常情况slave返回一个byte数据:0x00(该字节8bit都是0)1.2、异常发生时该部分数据 出现该情况原因:因为此时从机正在发数据给主机,但是此时主机因为重启,所以clk被上拉电阻一直置为高。从机此时发送给主机的数据位刚好是低电平,若clk不为低,从机讲一直保持低电平数据(CLK为低:SDA改变数据;CLK为高:SDA数据保持)。 2、原因 在I2C主设备进行读写操作的过程中
OpenHarmonyHDF框架介绍OpenHarmonyHDF框架介绍HDF驱动框架框图HDF驱动框架工作原理HDF驱动框架工作原理框图:HDF驱动加载过程分析HDF驱动加载过程分析——驱动实现1HDF驱动加载过程分析——驱动实现2HDF驱动加载过程分析——获取驱动列表HDF驱动加载过程分析——获取设备列表HDF驱动加载过程分析——设备与驱动的匹配HDF驱动加载过程分析——加载过程流程图HDF驱动加载过程分析——总结参考资料链接OpenHarmonyHDF框架介绍OpenHarmony系统HDF驱动框架采用C语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的
I2C总线|I2C总线介绍目录I2C总线|I2C总线介绍I2C总线介绍I2C有如下特点:I2C总线术语I2C总线位传输IIC总线数据传输1.字节格式2.应答响应IIC总线寻址方式1.7位寻址2.10位寻址快速和高速模式1.快速模式2.高速模式I2C总线介绍I2C(Inter-IntergratedCircuit)总线(也称IIC或I2C)是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通行控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口少、控制方式简单,器件封装形式少、通信速率高等优点。I2C有如下特点:(1)两条总线线路:一条串行数据线(
我想将float的二维vector写入HDF5文件。我使用了以下代码(writeh5.cpp):#include#include#include#include#include#include#includeusingnamespaceH5;usingnamespacestd;intmain(void){intnrow=5;intncol=4;vector>vec2d;vec2d.resize(nrow,vector(ncol,0.0));srand((unsigned)time(0));typenamevector>::iteratorrow;typenamevector::iter