自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 鸿蒙系统驱动

2、如果需要基于HDF驱动框架外发驱动,可以初步参考如下指南: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/Readme-CN.md。1、鸿蒙系统驱动包括用户态和内核态两部分,用户态驱动范围包括HDI接口、基于HDF驱动框架的HDI服务、HDI参考实现和厂商对HDI的适配等内容,这部分是鸿蒙特有内容,只能基于HDF驱动框架构建。(1)使用基于HDF驱动框架的驱动模型,来开发外设驱动;

2024-10-14 16:29:53 58

原创 HDF驱动

用户态发送一个"echo"消息到内核态,内核态根据 命令表解析到 "echo" 与 一个打印"hello,world"的函数对应。这时候,内核态就会打印"hello,world",这是一个简单的逻辑描述,实际上会汲及到驱动消息的序列化与反顺序化,是否发布服务,内核是否发布对用户态公开等等,用户态驱动也绝非仅仅只收发驱动消息而已。从逻辑上来说,用户态驱动是需要与内核态驱动进行一个相互的过程,这个是需要用户根据实际的需求来适配,举一个简单的例子。内核态驱动,即放在内核中的驱动源码。

2024-10-12 17:54:45 141

原创 SOC系统--映射表概述

DMA操作通常包括从一个地址空间(源)到另一个地址空间(目标)的数据移动,这两个地址空间可能是内存的不同区域,也可能是内存与外设之间的数据交换。在SoC(System-on-a-Chip,系统级芯片)设计中,映射表(Mapping Tables)扮演着至关重要的角色,特别是在内存管理和硬件资源控制方面。例如,在一个具有多个处理器核的SoC中,DMA映射表可以帮助一个处理器核将数据直接发送到另一个处理器核的本地内存,或者从外部设备(如摄像头或网络接口)直接读取数据到内存,而无需CPU的直接参与。

2024-09-30 09:36:35 355

原创 OpenHarmony音频驱动audio适配方案

此参数使用的地方在 drivers\peripheral\audio\supportlibs\alsa_adapter\src\alsa_lib_common.c 中与 snd_ctl_card_info_get_id 得到的值进行校验。foundation\multimedia\audio_framework\services\audio_policy\server\src\audio_policy_server.cpp 中 SubscribeKeyEvents() 中监听物理按键。

2024-09-26 09:11:11 198

原创 OpenHarmony源码目录

目录名 描述 applications 应用程序样例,包括camera等 base 基础软件服务子系统集&硬件服务子系统集 build 组件化编译、构建和配置脚本 docs 说明文档 domains 增强软件服务子系统集 drivers 驱动子系统 foundation 系统基础能力子系统集 kernel 内核子系统 prebuilts 编译器及工具链子系统 test 测试子系统 third

2024-09-15 22:02:27 162

原创 全网最硬核讲解计算机的启动过程

都说开机后,BIOS 就开始运行自己的程序了,又硬件自检,又加载启动区的。我就不服了,为什么开机后是执行 BIOS 里的程序?为啥不是内存里的?为啥不是硬盘里的?好的,不要怀疑前置知识,CPU 的工作方式,就是不断从内存中取指令并执行,那为什么会说是执行 BIOS 里的程序呢?这就不得不说说内存映射了。

2024-09-14 21:51:10 612

原创 openharmony驱动

OpenHarmony采用多内核(Linux内核或者LiteOS)设计,支持系统在不同资源容量的设备部署。当相同的硬件部署不同内核时,如何能够让设备驱动程序在不同内核间平滑迁移,消除驱动代码移植适配和维护的负担,是OpenHarmony驱动子系统需要解决的重要问题。为了缩减驱动开发者的驱动开发周期,降低三方设备驱动集成难度,OpenHarmony驱动子系统支持以下关键特性和能力。弹性化的框架能力。

2024-09-10 16:34:16 1150

原创 OHOS HDF 图谱-1-驱动配置信息树状图

其中部署在内核态的hdf_hcs.hcb,会被加上ELF文件头、尾后重新封装为hdf_hcs_hex.o,链接进内核镜像中;驱动配置信息的管理,以HCS(HDF Configuration Source)文件的形式组织源代码,以Key-Value形式对设备驱动信息进行配置和记录,实现了配置信息与驱动代码的解耦。PS. 我对OHOS的驱动框架进行了整理,画了几张非常大的图,完整展示了驱动框架的工作流程和几乎所有的数据结构之间的关系,待我的书上市后,这些图全部都会在码云上开源,敬请期待。

2024-09-10 11:34:32 242

原创 HarmonyOS驱动加载过程分析

Device Manager遍历设备列表,当查找到对应驱动实现时,为设备创建Device对象实例,如果设备配置中的policy字段为需要对外发布驱动接口(SERVICE_POLICY_CAPACITY),那么驱动的Bind接口将首先被调用,用于关联设备和服务实例。我们添加的驱动是如何被执行的呢?Device Manager提供了统一的驱动管理,Device Manager启动时根据Device Information提供驱动设备信息加载相应的驱动Device Host,并控制Host完成驱动的加载。

2024-09-10 10:50:21 1174

原创 harmony 鸿蒙开源编译规范

【级别】建议【描述】在函数的声明或定义时,显式指明函数参数类型,编译器检查函数调用和定义之间参数类型的不匹配情况。【错误示例】源程序: “` #include <stdio.h> int func(param){相关文档:《SEI CERT C Coding Standard》DCL07-C. Include the appropriate type#### 二进制一致性##### G.C&C++.WARN.13 打开"-Wdate-time"选项,避免使用时间宏,确保二进制一致性。

2024-09-10 10:45:12 844

原创 OpenHarmony C&C++ 安全编程指南

【描述】自定义操作符的时候,new 和 delete 要配对定义,new[] 和 delete[] 要配对定义。自定义 new/delete 操作符的行为要与被替换的 new/delete 的行为一致。【反例】// 如果自定义了 operator new,必须同时自定义对应的 operator deletestruct S {... // 自定义操作【正例】struct S {... // 自定义操作... // 自定义操作默认的 new 操作符在内存分配失败时,会抛出异常,而使用了。

2024-09-10 10:43:55 1360

原创 harmony 鸿蒙OpenHarmony 32/64位可移植编程规范

【说明】基于可移植性要求,在32位和64位条件下,可变长度的数据类型可能导致兼容性错误,为简单清晰,要求采用归一清晰的数据类型进行定义。类型定义ILP32LP64PRINT使用场景及代替类型voidvoid,无类型,仅用于占位和通用指针定义char11%c对于字符串、数组直接使用原生charint8_t11%d对于1字节整型使用int8_t,uint8_tuint8_t11%u对于1字节整型使用int8_t,uint8_tint16_t22%d。

2024-09-10 10:40:44 613

原创 harmony 鸿蒙OpenHarmony HDF驱动编程规范

【说明】HdfDriverEntry对象是HDF驱动的入口,其中的三个方法指针均有各自的职责,开发者需按照方法职责来实现对应函数。.Bind = SampleDriverBind, // 职责:绑定驱动对外提供的服务接口到HDF.Init = SampleDriverInit, // 职责:初始化驱动自身的业务.Release = SampleDriverRelease, // 职责:释放驱动资源,发生异常时也会调用。

2024-09-10 10:39:23 436

原创 linux内核增加HDF驱动子系统

HDF驱动子系统是OpenHarmony重要的特色功能之一,其主要的功能是实现驱动程序在多内核多平台的物联网环境,实现一次驱动开发,多端部署。之前移植OHOS3.0使用了传统的linux驱动,比较遗憾,今天尝试将HDF驱动子系统加入编译框架。开始前先了解几个名词。HCS(HDF Configuration Source)是 HDF 驱动框架的配置描述源码,JSON存储。

2024-09-10 08:59:45 1140

原创 penHarmony硬件适配之HCS应用

在驱动实现中,使用 device_resource_if.h 中定义的接口对配置进行查询和读取,所在目录.\drivers\hdf_core\interfaces\inner_api\utils\device_resource_if.h。常用 API 介绍如下:HDF 框架结构庞杂,意义深远,值得每个底层开发者不断探索和改善。HCS仅仅是其中一个功能点,此文旨在抛砖引玉,深层了解还需要阅读专业文档和源码。

2024-09-10 08:55:13 503

原创 鸿蒙系统的微内核是什么?我为什么一直强调是微内核

但是5G时代,一个万物互联(Internet of Things, IoT)的时代,将有更多的小型智能设备接入互联网,低功耗、低内存、安全性成为了新的要求,在这些设备上跑宏内核的系统绝对不是好的选择,由此,微内核的热度又起来了。我们常说的Linux/UNIX就是基于宏内核的,内核提供了相当多的功能,包括驱动,调度器,地址空间管理,进程间通信,文件系统,虚拟文件系统,系统调用等,以Linux为例,其宏内核的代码量高达2700万行。也就是说,宏内核提供了大量的冗余功能,兼容了太多的硬件,代码量自然就大。

2024-09-05 21:36:19 896

原创 鸿蒙内核态代码

Kernel代码组成:OH内核态层 = 标准LTS Linux 内核 + 三方SoC芯片平台代码 + OH内核态基础代码 + OH内核态特性(如HDF)标准LTS Linux 内核三方SoC芯片平台代码OH内核态基础代码编译生成最终版本kernel代码主要脚本参考文档。

2024-09-05 10:44:20 410

原创 在鸿蒙(HarmonyOS)中,“components”和“parts”是两个不同的概念

总结来说,components主要用于构建用户界面,而parts则用于实现应用的具体功能。在鸿蒙(HarmonyOS)开发中,“components”和“parts”是两个不同的概念,它们在子系统中有不同的用途和作用。定义:在鸿蒙子系统中,components通常指的是组件(Component),是用于构建用户界面的基本元素。用途:components用于构建应用的UI界面,每个组件可以独立工作,也可以组合成更复杂的界面。定义:parts在鸿蒙子系统中通常指的是部件(Part),是用于实现特定功能的模块。

2024-09-05 09:11:10 332

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除