自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 市场巨变,移动开发行业即将迎来“第二春”?

随着鸿蒙生态的不断壮大,越来越多的企业开始加入其中,对鸿蒙OS开发工程师的需求也越来越迫切。年初时还只有200个APP宣布加入鸿蒙生态,而最近华为也已经官宣,已经有4000+多个应用加入鸿蒙,短短三个月就增加了20倍。对于那些有志于从事鸿蒙开发的人来说,这是一个难得的机会。随着越来越多的互联网企业加入到鸿蒙生态当中,随着鸿蒙强势崛起是不是暗示着。

2024-05-29 21:42:19 1113

原创 头部企业鸿蒙移动开发/架构岗位已开启招聘!

随着科技的飞速发展,操作系统的多样性和创新性不断增强,IT求职市场也在发生很多变化,鸿蒙操作系统(HarmonyOS)作为华为自主研发的全场景分布式操作系统,自推出以来就备受瞩目,有很多Android和IOS的开发者开始考虑转行,对于广大Android开发者而言,转向鸿蒙开发是一个不错的选择,但是毕竟是转行,这不仅意味着新的机遇,也伴随着不小的挑战,本文将探讨Android开发者转向鸿蒙开发所面临的机遇与挑战。

2024-05-20 21:48:57 1409

原创 IT行业“薪”风口,“薪”方向,你不妨试试~

近期,鸿蒙相关内容一直是IT行业热聊话题。先是徐大嘴宣布鸿蒙 Next版本不在兼容Android,然后就是各大互联网公司纷纷加入到鸿蒙原生开发的队列,再然后网传出鸿蒙开发岗位薪资与需求了突增,超出了一些传统开发岗位的需求与薪资水平!不少人心里有了入行鸿蒙开发的想法,但又想着大家都来学习,然后都往一个岗位进行竞争,内卷肯定会很严重,最后导致自己可能会有失业的风险!!!其实并非如此,下面我们来探讨一下鸿蒙开发后的几个就业方向:作为鸿蒙开发的核心人才,鸿蒙系统开发工程师是需求量最大的职位之一。他们负责开发、维护和

2024-05-15 22:42:32 839

原创 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

随着物联网和智能设备的快速发展,嵌入式开发和鸿蒙系统成为了当前技术领域的热门话题。鸿蒙系统作为华为推出的全场景分布式操作系统,旨在连接各种智能设备,提供无缝的跨设备体验。而南向开发则是鸿蒙系统中的一个重要方向,主要涉及设备内部嵌入式开发。那么,嵌入式开发是否适合做鸿蒙南向开发呢?本文将从几个方面进行探讨。

2024-05-08 22:55:07 834

原创 35K的鸿蒙音视频开发岗位面经分享~

一个月前,阿里云在官网音视频终端 SDK 栏目发布适配 HarmonyOS NEXT 的和 SDK,官宣 MediaBox 音视频终端 SDK 全面适配 HarmonyOS NEXT。此外,阿里云播放器 SDK 也在华为开发者联盟官网生态伙伴 SDK 专区同步上线,面向所有鸿蒙开发者免费开放。据悉,该产品是音视频领域首个适配 HarmonyOS NEXT 的 SDK。

2024-04-22 22:59:21 1557

原创 一份超详细的鸿蒙开发面经分享!上百道鸿蒙经典面试题整理~

鸿蒙操作系统是华为公司于2019年8月9日在东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。分布式技术:鸿蒙操作系统采用分布式技术,能够将不同的设备连接在一起,实现设备之间的数据共享和协同工作。微内核架构:鸿蒙操作系统采用微内核架构,具有更高的安全性和稳定性。全场景支持:鸿蒙操作系统支持多种设备,包括手机、平板、智能穿戴设备、智能家居、车载等,实现了全场景覆盖。开放生态:鸿蒙操作系统是一个开放的生态系统,支持第三方应用开发者加入,为用户提供更多的应用和服务。

2024-04-18 22:39:32 1202

原创 学鸿蒙开发的优劣势,你清楚吗?建议你了解一下!

随着科技的不断发展和智能设备的普及,鸿蒙系统作为华为自主研发的操作系统,正逐渐受到市场的关注。2024年,学鸿蒙开发是否有前途,成为了很多开发者=关心的问题。本文将从多个角度分析鸿蒙系统的发展前景,以及学习鸿蒙开发的优劣势,帮助读者做出更好的职业规划。

2024-04-15 21:30:35 1255

原创 鸿蒙让我赚到了第一笔桶金!年薪33.6W!

所谓抢滩鸿蒙,人才先行。鸿蒙系统火力全开后,抢人已成鸿蒙市场的主题词!

2024-04-11 22:37:06 812

原创 面试必问!鸿蒙开发中的FA模型和Stage模型是什么?他们分别有什么区别?

FA模型的特点是每个组件运行在自己的进程中,拥有独立的JS VM引擎实例,这使得组件之间相互隔离,但也带来了一定的内存占用。紧跟官方主推的Stage模型学习,未来可以参考的资料会越来越多,我们使用Stage模型开发出来的应用,可以很好的支持多设备和多窗口形态,并且性能也会表现得更好一些。:Stage模型重新定义了应用能力的边界,提供了特定场景的应用组件,规范化了后台进程管理,防止了恶意应用行为。是面向全场景的分布式操作系统,它通过创新的应用模型,为开发者提供了强大的应用开发框架。请举例说明其应用场景。

2024-04-08 21:26:04 1506

原创 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?

如果说一个开发要从零开始学习鸿蒙开发的相关技术,其实里面有很多东西都是需要去学习的,在这个学习的过程中,时间周期也会随着拉长。路线图将包含完全基于鸿蒙内核开发的应用,比如一次开发多端部署、自由流转、元服务、端云一体化等,多方位的学习内容让学生能够高效掌握鸿蒙开发,少走弯路,真正理解并应用鸿蒙的核心技术和理念!路线图包括ArkTS基础语法、鸿蒙应用APP开发、鸿蒙能力集APP开发、次开发多端部署开发、物联网开发等九大模块,六大实战项目贯穿始终,由浅入深,层层递进,深入理解鸿蒙开发原理。其实是大家没有去想过,

2024-03-30 22:47:56 862

原创 基于hispark_taurus开发板示例学习OpenHarmony编译构建系统(2)

产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、组件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}_。_产品解决方案也是一个特殊的组件。

2024-06-14 21:44:45 223 1

原创 基于hispark_taurus开发板示例学习OpenHarmony编译(1)

OpenHarmony开源站点提供了一个基于gn和ninja的支持OpenHarmony组件化开发的编译框架。详细信息可以参考该工具的开源站点 https://gitee.com/openharmony/build_lite 。如果想使用最新的编译工具hb,在一些bugfix或者hb工具新特性合入后,需要卸载重新安装。在OpenHarmony代码根目录下执行如下命令,先卸载再安装,并查询确认下版本号:

2024-06-14 20:54:26 367

原创 鸿蒙轻内核Kconfig使用笔记

Kconfig语言定义了一套完整的规则来表述配置项及配置项间的关系,详细内容可以参考Linux官方文档 Kconfig Language ,此处不赘述。鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等),官方主页为https://pypi.org/project/kconfiglib。

2024-06-14 14:19:37 524

原创 鸿蒙轻内核调测-内存调测-内存泄漏检测

内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。

2024-06-13 22:10:40 444

原创 鸿蒙轻内核调测-内存调测-内存信息统计

内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。

2024-06-13 21:27:32 470

原创 鸿蒙轻内核A核源码分析系列七 进程管理 (3)

本文记录下进程相关的初始化函数,如OsSystemProcessCreate、OsProcessInit、OsProcessCreateInit、OsUserInitProcess、OsDeInitPCB、OsUserInitProcessStart等。

2024-06-13 21:04:02 944

原创 鸿蒙轻内核A核源码分析系列七 进程管理 (2)

本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口,读读代码,做些记录。

2024-06-13 17:57:49 864

原创 鸿蒙轻内核A核源码分析系列七 进程管理 (1)

本文先熟悉下进程管理的概念、运行机制和编程接口。

2024-06-13 16:45:49 372

原创 鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)

在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。

2024-06-13 15:34:39 470

原创 鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)

在前面系列分析虚实映射时,涉及到了一些MMU协处理器与相关的汇编代码没有深入讲解。本文来专门分析那些协处理器与汇编代码。

2024-06-13 15:01:04 1023

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(7)虚实映射Flag属性

在学习函数LOS_ArchMmuMap()代码时,我们已经了解了虚拟内存如何映射到物理内存,在映射的时候,可以通过UINT 32 flags参数定一些标签属性信息。本节,我们具体了解下内存标签属性信息。先了解下MMU标签属性,然后看看映射内存区间时的映射虚实信息,最后了解下属性信息转换函数。

2024-06-13 14:32:56 1017

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(6)虚拟映射修改转移

函数LOS_ArchMmuChangeProt用于修改进程空间虚拟地址区间的映射保护属性,其中参数archMmu为进程空间的MMU结构体,vaddr为虚拟地址,count为映射的页数,flags为映射使用的新标签属性信息。其中函数名称中的Prot是英文Protect的简写。⑴处对参数进行校验,⑵处查询虚拟地址映射的物理地址,如果没有映射,则执行⑶把虚拟地址增加1个内存页大小继续修改下一个内存页的映射保护属性。如果存在映射,则执行⑷处代码。先解除当前内存页的映射,然后执行⑸使用新的映射属性重新映射,⑹处虚拟地

2024-06-12 21:09:25 665 1

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除

虚实映射解除函数LOS_ArchMmuUnmap解除进程空间虚拟地址区间与物理地址区间的映射关系,其中参数包含MMU结构体、解除映射的虚拟地址和解除映射的数量count,数量的单位是内存页数。 ⑴处函数OsGetPte1用于获取指定虚拟地址对应的L1页表项数据。⑵处计算需要解除的无效映射的数量,后文再详细分析该函数。如果页表项映射类型为L1 Section,并且虚拟地址1MiB对齐,映射的数量超过256,则执行⑶解除映射Section,后文详细分析函数OsUnmapSection。如果页表项映射类型为Pag

2024-06-12 20:26:27 1109

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(3)虚拟物理内存映射

从上文可知,用户程序加载启动时,会将代码段、数据段映射进虚拟内存空间,此时并没有物理页做实际的映射;程序执行时,如下图(图片来自OpenHarmony docs开源站点)粗箭头所示,CPU访问虚拟地址,通过MMU查找是否有对应的物理内存,若该虚拟地址无对应的物理地址则触发缺页异常,内核申请物理内存并将虚实映射关系及对应的属性配置信息写进页表,并把页表条目缓存至TLB,接着CPU可直接通过转换关系访问实际的物理内存;若CPU访问已缓存至TLB的页表条目,无需再访问保存在内存中的页表,可加快查找速度。本小节我们

2024-06-12 17:47:40 631

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(2)虚实映射初始化

在文件中的系统内存初始化函数会调用虚实映射初始化函数。该函数代码定义在文件,代码如下。⑴处函数使TLB失效,清理虚实映射缓存数据,涉及些cp15寄存器和汇编,后续再分析。⑵处函数切换到临时TTB。⑶处设置内核地址空间的映射。下面分别详细这些函数代码。

2024-06-12 15:59:06 309

原创 鸿蒙轻内核A核源码分析系列五 虚实映射(1)基础概念

虚实映射是指系统通过内存管理单元(Memory Management Unit,MMU)将进程空间的虚拟地址(VA)与实际的物理地址(PA)做映射,并指定相应的访问权限、缓存属性等。程序执行时,CPU访问的是虚拟内存,通过MMU找到映射的物理内存,并做相应的代码执行或数据读写操作。MMU的映射由页表(Page Table)来描述,页表保存虚拟地址和物理地址的映射关系以及访问权限等。每个进程在创建的时候都会创建一个页表,页表由一个个页表条目(Page Table Entry, PTE)构成,每个页表条目描述虚

2024-06-12 14:49:26 751

原创 鸿蒙轻内核A核源码分析系列四(3) 虚拟内存

本文分析虚拟内存管理的相关源代码,首先介绍虚拟内存管理的结构体、相关宏定义,接着会分析内核虚拟地址空间和用户进程虚拟地址空间如何初始化,然后分析虚拟内存区间常用操作包含查找、申请和释放等,最后分析动态内存堆的申请、释放接口的源代码,并简单介绍下内存区间预留接口源代码。搭建开发环境Windows 开发环境的搭建Ubuntu 开发环境搭建Linux 与 Windows 之间的文件共享……构建子系统启动流程子系统分布式任务调度子系统分布式通信子系统驱动子系统……

2024-06-12 13:47:42 797

原创 鸿蒙轻内核A核源码分析系列四(2) 虚拟内存

文件和定义了虚拟内存相关的宏。对于32位系统,虚拟进程空间大小为4GiB,鸿蒙轻内核当前支持32位系统。⑴和⑵定义了用户进程虚拟地址空间的开始地址和大小,⑶是用户虚拟进程空间的结束地址,接着定义的是用户虚拟进程空间的堆区、映射区的开始地址和大小。

2024-06-11 22:35:36 689

原创 鸿蒙轻内核A核源码分析系列四(1)虚拟内存进程空间编号

本文首先介绍了鸿蒙轻内核LiteOS-A的虚拟地址空间编号知识,然后详细分析进程空间编号的申请与释放操作。代码中涉及的位图操作函数,比如函数和,请参考之前的系列文章《鸿蒙轻内核A核源码分析系列二 数据结构-位图操作》。搭建开发环境Windows 开发环境的搭建Ubuntu 开发环境搭建Linux 与 Windows 之间的文件共享……构建子系统启动流程子系统分布式任务调度子系统分布式通信子系统驱动子系统……

2024-06-11 21:19:04 652

原创 鸿蒙原生开发——轻内核A核源码分析系列三 物理内存(2)

和申请物理内存页接口相对应着,释放物理内存页的接口有3个,分别用于满足不同的释放内存页需求。函数的传入参数为要释放物理页对应的内核虚拟地址空间中的虚拟内存地址和内存页数目。⑴处调用函数把虚拟内存地址转换为物理内存页结构体地址,然后⑵处把内存页的连续内存页数目设置为0。⑶处调用函数释放物理内存页。函数用于释放一个物理内存页,传入参数为要释放的物理页对应的物理页结构体地址。⑷处对引用计数自减,当小于等于0,表示没有其他引用时才进一步执行释放操作。该函数同样会调用函数释放物理内存页。函数。

2024-06-11 17:10:52 1146

原创 鸿蒙轻内核A核源码分析系列三 物理内存(1)

鸿蒙轻内核A核的物理内存采用了段页式管理,每个物理内存段被分割为物理内存页。在头文件中定义了物理内存页结构体,以及内存页数组及数组大小。物理内存页结构体LosVmPage可以和物理内存页一一对应,也可以对应多个连续的内存页,此时使用nPages指定内存页的数量。/**< 物理内存页节点,挂在VmFreeList空闲内存页链表上 *//**< 物理内存页内存开始地址*//**< 物理内存页引用计数 *//**< 物理内存页标记 *//**< 物理内存页所在的链表数组的索引,总共有9个链表 */

2024-06-11 16:18:17 656

原创 鸿蒙轻内核A核源码分析系列二 数据结构-位图操作

位操作模块提供对32位无符号整数数值的bit位进行操作,bit位取值为0-31,以0开始计算,从左向右,第0位,第1位。。。第31位等。⑴处定义的宏如下,也就是十进制31。如果传入的比特位pos大于31,会通过逻辑与运算截断,只取低5位,确保不会大于31,避免溢出。⑵处定义的位图掩码全是1。在文件中定义了常用的位操作相关的宏。宏根据参数x计算出需要操作第几个状态字,由于计算状态字的使用的是UINTPTR,状态字可以是32位、也可以是64位。后文,我们默认以32位进行讲解。宏传入的参数是位操作的开始bit。

2024-06-11 15:32:47 939

原创 鸿蒙轻内核A核源码分析系列一 数据结构-双向循环链表

在学习鸿蒙轻内核源代码的时候,常常会遇到一些数据结构的使用。如果没有掌握它们的用法,会导致阅读源代码时很费解、很吃力。本文会给读者介绍源码中重要的数据结构,双向循环链表。在讲解时,会结合数据结构相关绘图,培养读者们的数据结构的平面想象能力,帮助更好的学习和理解这些数据结构的用法。本文中所涉及的源码,以内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。

2024-06-11 14:44:41 415

原创 鸿蒙轻内核M核源码分析系列二十 Newlib C

以open函数的钩子函数_open为例来介绍newlib的钩子函数的调用过程。open()函数实现在newlib-cygwin\newlib\libc\syscalls\sysopen.c中,该函数会进一步调用函数_open_r,这是个可重入函数Reentrant Function,支持在多线程中运行。int ret;return ret;

2024-06-11 14:05:22 681

原创 抢人!抢人!抢人! IT行业某岗位已经开始抢人了!

所谓抢滩鸿蒙,人才先行。鸿蒙系统火力全开后,抢人已成鸿蒙市场的主题词!智联招聘数据显示,春节后首周,鸿蒙相关职位数同比增长163%,是去年同期的2.6倍,2023年9-12月鸿蒙相关职位数同比增速为33.8%!“供需增长3倍”向技术人才发出了明确的信号——鸿蒙技术成为市场新的风向标,先入局者先得利!小刘,今年32岁,双非本科非计算机专业。他的起点并不起眼,零基础自学编程,从iOS开发起步到自学Nodejs、Java、VUE、小程序开发等技术,从最基本的代码到复杂的系统架构,从0到1成为全栈开发程序员。

2024-06-07 22:20:17 670

原创 鸿蒙轻内核M核源码分析系列十九 Musl LibC

LiteOS-M内核LibC实现有2种,可以根据需求进行二选一,分别是musl libC和newlibc。本文先学习下Musl LibC的实现代码。文中所涉及的源码,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。LiteOS-M内核提供了和内核相关的文件系统、内存申请释放接口,其他接口可以直接使用Musl提供的。我们分别来看下内核提供的接口部分。

2024-06-07 21:17:54 820

原创 鸿蒙轻内核M核源码分析系列十八 Fault异常处理

本文先简单介绍下Fault异常类型,向量表及其代码,异常处理C语言程序,然后详细分析下异常处理汇编函数实现代码。文中所涉及的源码,以内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。

2024-06-07 20:34:15 527

原创 鸿蒙轻内核M核源码分析系列十七(3) 异常信息ExcInfo

在文件定义了异常信息的相关宏定义、枚举和结构体。如下所示的宏定义为各种异常信息的大小,可以参考下面的异常信息存储区域分布图进行直观的理解,前4字节保存异常信息存储区域的大小,然后分别是异常上下文、任务、队列,中断寄存器,任务切换,内存分配情况的数据信息,最后4字节保存的是异常类型的最大值。异常上下文存储区域的详细分布如下图所示,保存异常信息类型和信息大小,然后分别存储ExcInfo和上下文信息。其他异常信息类似,不再提供。

2024-06-07 17:38:15 754

原创 鸿蒙轻内核M核源码分析系列十七(2) 异常钩子函数的注册操作

本文中所涉及的源码,以内核为例,均可以在开源站点https://gitee.com/openharmony/kernel_liteos_m 获取。鸿蒙轻内核异常钩子模块代码主要在目录下。异常钩子函数的注册、解注册、异常钩子类型定义在。

2024-06-07 15:59:44 1256

原创 鸿蒙轻内核M核源码分析系列十七(1) 异常钩子函数类型介绍

本文中所涉及的源码,以内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。鸿蒙轻内核异常钩子模块代码主要在目录下。

2024-06-07 15:04:53 699

空空如也

空空如也

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

TA关注的人

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