
鸿蒙内核
文章平均质量分 95
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
移植案例与原理 - startup子系统之syspara_lite系统属性部件 (2)
系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名等,同时提供设置/读取系统属性的接口。在《移植案例与原理 - startup子系统之syspara_lite系统属性部件》中,我们介绍了移植开发板时如何适配系统属性部件syspara_lite,并介绍了相关的运行机制原理。本文主要介绍如何使用syspara_lite系统原创 2024-07-28 22:21:31 · 402 阅读 · 0 评论 -
移植案例与原理 - startup子系统之syspara_lite系统属性部件
系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名等,同时提供设置/读取系统属性的接口。本文介绍下移植开发板时如何适配系统属性部件syspara_lite,并介绍下相关的运行机制原理。系统属性部件syspara_lite包含系统参数特性syspara_lite和token。系统属性部件syspara_lite定义在bu原创 2024-07-28 21:52:50 · 998 阅读 · 0 评论 -
鸿蒙轻内核M核源码分析系列二一 05 文件系统FatFS
快速记录下各个操作接口,对每个接口的用途用法不再描述。可以参考之前的系列文章,《鸿蒙轻内核M核源码分析系列十九 Musl LibC》中介绍了相关的接口,那些接口会调用VFS文件系统中操作接口,然后进一步调用FatFS文件操作接口。原创 2024-07-28 21:27:26 · 328 阅读 · 0 评论 -
鸿蒙轻内核M核源码分析系列二一 04 文件系统FatFS
会分2部分来介绍结构体部分,先介绍FatFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和FatFS相关的一些结构体。原创 2024-07-28 20:33:34 · 957 阅读 · 0 评论 -
鸿蒙轻内核M核源码分析系列二一 03 文件系统LittleFS
函数LfsAllocFd()设置文件信息数组元素信息。参数fileName为文件路径信息,传出参数fd为文件描述符即数组索引。遍历文件信息数组,遍历到第一个未使用的元素标记其为已使用状态,设置文件路径信息,把数组索引赋值给文件描述符fd,返回文件信息元素指针地址。如果遍历失败,返回NULL。函数LfsFreeFd()为函数LfsAllocFd()的反向操作,根据文件描述符设置对应的数组元素为未使用状态,并把路径信息等设置为NULL。原创 2024-07-28 19:51:33 · 993 阅读 · 0 评论 -
鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS
会分2部分来介绍结构体部分,先介绍LittleFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和LittleFS相关的一些结构体。原创 2024-07-26 22:03:24 · 411 阅读 · 0 评论 -
鸿蒙轻内核M核源码分析系列二一 01 虚拟文件系统VFS
在文件components\fs\vfs\fs_operations.h中定义了VFS虚拟文件系统操作涉及的结构体。⑴处的struct MountOps结构体封装了挂载相关的操作,包含挂载、卸载和文件系统统计操作。原创 2024-07-26 21:37:52 · 631 阅读 · 0 评论 -
基于hispark_taurus开发板示例学习OpenHarmony编译构建系统(2)
产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、组件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}_。_产品解决方案也是一个特殊的组件。原创 2024-07-26 21:00:17 · 782 阅读 · 0 评论 -
基于hispark_taurus开发板示例学习OpenHarmony编译(1)
OpenHarmony开源站点提供了一个基于gn和ninja的支持OpenHarmony组件化开发的编译框架。详细信息可以参考该工具的开源站点 https://gitee.com/openharmony/build_lite 。如果想使用最新的编译工具hb,在一些bugfix或者hb工具新特性合入后,需要卸载重新安装。在OpenHarmony代码根目录下执行如下命令,先卸载再安装,并查询确认下版本号:原创 2024-07-26 20:27:01 · 692 阅读 · 0 评论 -
鸿蒙轻内核Kconfig使用笔记
Kconfig语言定义了一套完整的规则来表述配置项及配置项间的关系,详细内容可以参考Linux官方文档 Kconfig Language ,此处不赘述。鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等),官方主页为https://pypi.org/project/kconfiglib。原创 2024-07-26 17:27:02 · 431 阅读 · 0 评论 -
鸿蒙轻内核调测-内存调测-内存泄漏检测
内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。原创 2024-07-26 15:53:58 · 351 阅读 · 0 评论 -
鸿蒙轻内核调测-内存调测-内存信息统计
内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。原创 2024-07-26 15:08:32 · 422 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列七 进程管理 (3)
本文记录下进程相关的初始化函数,如OsSystemProcessCreate、OsProcessInit、OsProcessCreateInit、OsUserInitProcess、OsDeInitPCB、OsUserInitProcessStart等。原创 2024-07-26 14:35:52 · 969 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列七 进程管理 (2)
本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口,读读代码,做些记录。原创 2024-07-26 13:49:20 · 826 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列七 进程管理 (1)
本文开始继续分析OpenHarmony LiteOS-A内核的源代码,接下来会分析进程和任务管理模块。原创 2024-07-25 22:13:55 · 1017 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)
在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。原创 2024-07-25 21:19:14 · 840 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)
在前面系列分析虚实映射时,涉及到了一些MMU协处理器与相关的汇编代码没有深入讲解。本文来专门分析那些协处理器与汇编代码。原创 2024-07-25 17:05:59 · 880 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列五 虚实映射(7)虚实映射Flag属性
在学习函数LOS_ArchMmuMap()代码时,我们已经了解了虚拟内存如何映射到物理内存,在映射的时候,可以通过UINT 32 flags参数定一些标签属性信息。本节,我们具体了解下内存标签属性信息。先了解下MMU标签属性,然后看看映射内存区间时的映射虚实信息,最后了解下属性信息转换函数。原创 2024-07-25 16:36:49 · 891 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列五 虚实映射(6)虚拟映射修改转移
函数LOS_ArchMmuChangeProt用于修改进程空间虚拟地址区间的映射保护属性,其中参数archMmu为进程空间的MMU结构体,vaddr为虚拟地址,count为映射的页数,flags为映射使用的新标签属性信息。原创 2024-07-25 15:25:22 · 490 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除
虚实映射解除函数LOS_ArchMmuUnmap解除进程空间虚拟地址区间与物理地址区间的映射关系,其中参数包含MMU结构体、解除映射的虚拟地址和解除映射的数量count,数量的单位是内存页数。原创 2024-07-25 14:50:43 · 628 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列五 虚实映射(3)虚拟物理内存映射
从上文可知,用户程序加载启动时,会将代码段、数据段映射进虚拟内存空间,此时并没有物理页做实际的映射;程序执行时,如下图(图片来自OpenHarmony docs开源站点)粗箭头所示,CPU访问虚拟地址,通过MMU查找是否有对应的物理内存,若该虚拟地址无对应的物理地址则触发缺页异常,内核申请物理内存并将虚实映射关系及对应的属性配置信息写进页表,并把页表条目缓存至TLB,接着CPU可直接通过转换关系访问实际的物理内存;若CPU访问已缓存至TLB的页表条目,无需再访问保存在内存中的页表,可加快查找速度。本小节我们原创 2024-07-25 14:03:20 · 316 阅读 · 0 评论 -
2024 鸿蒙开发市场现状与前景~
最近,InfoQ 发布了《中国开发者画像洞察研究报告2024》,报告多次提及鸿蒙开发,本文就来简单看看鸿蒙开发的现状。HarmonyOS 在市场份额上实现了显著飞跃,从2023年一季度的 8% 猛增至 2024 年一季度的 17%,成功超越 iOS,跃居中国手机操作系统市场第二位。同时,鸿蒙生态设备数量已突破9亿大关,汇聚了超过254万的开发者群体。鸿蒙系统从底层内核到上层应用,包括文件系统、编程语言等,均实现了全面自研,构建起坚实的技术壁垒。原创 2024-07-24 22:35:04 · 15908 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列五 虚实映射(1)基础概念
虚实映射是指系统通过内存管理单元(Memory Management Unit,MMU)将进程空间的虚拟地址(VA)与实际的物理地址(PA)做映射,并指定相应的访问权限、缓存属性等。程序执行时,CPU访问的是虚拟内存,通过MMU找到映射的物理内存,并做相应的代码执行或数据读写操作。MMU的映射由页表(Page Table)来描述,页表保存虚拟地址和物理地址的映射关系以及访问权限等。每个进程在创建的时候都会创建一个页表,页表由一个个页表条目(Page Table Entry, PTE)构成,每个页表条目描述虚原创 2024-07-24 21:37:20 · 806 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列四(3) 虚拟内存
本文分析虚拟内存管理的相关源代码,首先介绍虚拟内存管理的结构体、相关宏定义,接着会分析内核虚拟地址空间和用户进程虚拟地址空间如何初始化,然后分析虚拟内存区间常用操作包含查找、申请和释放等,最后分析动态内存堆的申请、释放接口的源代码,并简单介绍下内存区间预留接口源代码。搭建开发环境Windows 开发环境的搭建Ubuntu 开发环境搭建Linux 与 Windows 之间的文件共享……构建子系统启动流程子系统分布式任务调度子系统分布式通信子系统驱动子系统……原创 2024-07-24 21:08:20 · 990 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列四(2) 虚拟内存
文件和定义了虚拟内存相关的宏。对于32位系统,虚拟进程空间大小为4GiB,鸿蒙轻内核当前支持32位系统。⑴和⑵定义了用户进程虚拟地址空间的开始地址和大小,⑶是用户虚拟进程空间的结束地址,接着定义的是用户虚拟进程空间的堆区、映射区的开始地址和大小。原创 2024-07-24 20:36:47 · 1055 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列四(1)虚拟内存进程空间编号
本文首先介绍了鸿蒙轻内核LiteOS-A的虚拟地址空间编号知识,然后详细分析进程空间编号的申请与释放操作。代码中涉及的位图操作函数,比如函数和,请参考之前的系列文章《鸿蒙轻内核A核源码分析系列二 数据结构-位图操作》。搭建开发环境Windows 开发环境的搭建Ubuntu 开发环境搭建Linux 与 Windows 之间的文件共享……构建子系统启动流程子系统分布式任务调度子系统分布式通信子系统驱动子系统……原创 2024-07-24 17:32:06 · 790 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列三 物理内存(2)
和申请物理内存页接口相对应着,释放物理内存页的接口有3个,分别用于满足不同的释放内存页需求。函数的传入参数为要释放物理页对应的内核虚拟地址空间中的虚拟内存地址和内存页数目。⑴处调用函数把虚拟内存地址转换为物理内存页结构体地址,然后⑵处把内存页的连续内存页数目设置为0。⑶处调用函数释放物理内存页。函数用于释放一个物理内存页,传入参数为要释放的物理页对应的物理页结构体地址。⑷处对引用计数自减,当小于等于0,表示没有其他引用时才进一步执行释放操作。该函数同样会调用函数释放物理内存页。函数。原创 2024-07-24 16:36:09 · 836 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列三 物理内存(1)
鸿蒙轻内核A核的物理内存采用了段页式管理,每个物理内存段被分割为物理内存页。在头文件中定义了物理内存页结构体,以及内存页数组及数组大小。物理内存页结构体LosVmPage可以和物理内存页一一对应,也可以对应多个连续的内存页,此时使用nPages指定内存页的数量。/**< 物理内存页节点,挂在VmFreeList空闲内存页链表上 *//**< 物理内存页内存开始地址*//**< 物理内存页引用计数 *//**< 物理内存页标记 *//**< 物理内存页所在的链表数组的索引,总共有9个链表 */原创 2024-07-24 15:46:14 · 1081 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列二 数据结构-位图操作
在进一步分析之前,本文我们先来熟悉下OpenHarmony鸿蒙轻内核提供的位操作模块,在互斥锁等模块对位操作有使用。位操作是指对二进制数的bit位进行操作。程序可以设置某一变量为状态字,状态字中的每一bit位(标志位)可以具有自定义的含义。原创 2024-07-24 14:31:31 · 978 阅读 · 0 评论 -
鸿蒙轻内核A核源码分析系列一 数据结构-双向循环链表
在学习OpenHarmony鸿蒙轻内核源代码的时候,常常会遇到一些数据结构的使用。如果没有掌握它们的用法,会导致阅读源代码时很费解、很吃力。本文会给读者介绍源码中重要的数据结构,双向循环链表Doubly Linked List。在讲解时,会结合数据结构相关绘图,培养读者们的数据结构的平面想象能力,帮助更好的学习和理解这些数据结构的用法。原创 2024-07-24 14:05:07 · 727 阅读 · 0 评论 -
OpenHarmony 特性解析——硬件资源池化架构介绍
本期,我们通过介绍 OpenHarmony 的硬件资源池化框架,为大家揭晓 OpenHarmony 是如何实现多设备协同的。原创 2024-07-08 17:55:53 · 1161 阅读 · 0 评论 -
OpenHarmony源码解析之电话子系统——通话流程
OpenAtom OpenHarmony(以下简称“OpenHarmony”)电话子系统为 OS 提供了基础的无线通信能力。支持 TD-LTE/FDD-LTE/TD-SCDMA/WCDMA/EVDO/CDMA1X/GSM 等网络制式的通信模块,能够提供高速的无线数据传输、互联网接入等业务,具备语音、短信、彩信、SIM 卡等功能。以下行文如无特别说明,所述说均指 OpenHarmony 系统(OpenHarmony 3.0 LTS版本)。原创 2024-07-08 15:41:29 · 774 阅读 · 0 评论 -
OpenHarmony 实战开发——分布式DeviceProfile
OpenAtom OpenHarmony(以下简称“OpenHarmony”)作为分布式操作系统,让多个设备之间能够相互感知,进而整合成一个超级终端。从而实现设备与设备之间取长补短、相互帮助,为用户提供自然流畅的分布式体验。原创 2024-07-08 14:52:19 · 1149 阅读 · 0 评论 -
OpenHarmony 实战开发——使用分布式菜单创建点餐神器
• 通过 @CustomDialog 装饰器来创建自定义弹窗,使用方式可参考 自定义弹窗;• 规则弹窗效果如下,弹窗组成由一个 Image 和两个 Text 竖向排列组成;原创 2024-07-08 14:15:55 · 753 阅读 · 0 评论 -
OpenHarmony 实战开发——ArkUI容器类API介绍
在 ArkUI 开发框架中,提供了线性和非线性两类容器类,共 14 种,每种容器都有自身的特性及使用场景。下面,我们将为大家一一道来。1.1线性容器类线性容器类底层主要通过数组实现,包括 ArrayList、Vector、List、LinkedList、Deque、Queue、Stack 七种。线性容器类 API,充分考虑了数据访问的速度,实现了运行时(Runtime)通过一条指令就可以完成增删改查等操作。ArrayList 即动态数组,可用来构造全局的数组对象。原创 2024-07-08 14:13:27 · 723 阅读 · 0 评论 -
OpenHarmony 实战开发——ArkUI canvas组件
canvas 是 ArkUI 开发框架里的画布组件,常用于自定义绘制图形。因为其轻量、灵活、高效等优点,被广泛应用于 UI 界面开发中。本期,我们将为大家介绍 ArkUI 开发框架中 canvas 组件的使用。原创 2024-07-07 21:40:38 · 904 阅读 · 0 评论 -
OpenHarmony 实战开发——图形框架解析
众所周知,动画是系统和应用与用户交互的重要环节。动画效果的好坏会直接影响用户的体验。动画效果依赖图形系统,华为作为 OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源项目贡献者,自主研发了一套以统一渲染为基础、高性能动效引擎为驱动的图形系统——OpenHarmony 图形栈。原创 2024-07-07 20:58:08 · 1156 阅读 · 0 评论 -
OpenHarmony标准设备应用开发(三)——分布式数据管理
本章是 OpenHarmony 标准设备应用开发的第三篇文章,将会在前面两章的基础上给大家讲解分布式数据管理在多台设备间,当数据出现变动时,通过订阅的方式,实现多台设备间的数据同步更新。原创 2024-07-07 20:28:26 · 919 阅读 · 0 评论 -
OpenHarmony标准设备应用开发(二)——布局、动画与音乐
本章是 OpenHarmony 标准设备应用开发的第二篇文章。我们通过知识体系新开发的几个基于 OpenHarmony3.1 Beta 标准系统的样例:分布式音乐播放、传炸弹、购物车等样例,分别介绍下音乐播放、显示动画、动画转场(页面间转场)三个进阶技能。首先我们来讲如何在 OpenHarmony 中实现音乐的播放。原创 2024-07-05 23:19:24 · 753 阅读 · 0 评论 -
OpenHarmony标准设备应用开发实战(一)——HelloWorld
本文主要内容包括三个方面:1. 应用编译环境准备;2. Hello Openharmony 页面编写;3. 安装应用到标准设备上面。下面就让我们从零开始学习 OpenHarmony 标准设备应用开发。原创 2024-07-05 22:53:04 · 1140 阅读 · 0 评论