第一章 鸿蒙内核开发概述 1.1 鸿蒙系统有哪些内容? 鸿蒙系统,就相当于一套完整的PC软件系统。 ? Windows里含有: 简单地说,鸿蒙系统里含有 ① 电脑一开机,那些界面是谁显示的? 类似的,这个BIOS对应于鸿蒙里的bootloader。Bootloader的作用就是去Flash、SD卡等设备上读入鸿蒙内核,并启动它。 ④ Windows启动之后,我们就是聊QQ、玩游戏了,这些就是APP,它们存在磁盘上同样的,鸿蒙系统中也有各种APP,它们位于根文件系统上。 ①bootloader:用于启动鸿蒙内核Liteos-a②内核(含有驱动程序):提供进程管理、文件管理、硬件驱动等③ 根文件系统:系统运行必需的文件、程序④ APP:保存于根文件系统上 1.2 日常工作中开发流程是怎样 Bootloader、内核、APP等等软件,需要在Ubuntu中编译;但是阅读、修改这些源码时,在Windows下会比较方便。 所以,我们需要在Windows、Ubuntu上都存有源码。
1.1 鸿蒙系统有哪些内容? 鸿蒙系统,就相当于一套完整的PC软件系统。 Windows里含有: ① 电脑一开机,那些界面是谁显示的? 是BIOS,它做什么? 类似的,这个BIOS对应于鸿蒙里的bootloader。 Bootloader的作用就是去Flash、SD卡等设备上读入鸿蒙内核,并启动它。 ④ Windows启动之后,我们就是聊QQ、玩游戏了,这些就是APP,它们存在磁盘上 同样的,鸿蒙系统中也有各种APP,它们位于根文件系统上。 简单地说,鸿蒙系统里含有: ① bootloader:用于启动鸿蒙内核Liteos-a ②内核(含有驱动程序):提供进程管理、文件管理、硬件驱动等 ③ 根文件系统:系统运行必需的文件、程序 ④ APP: Bootloader、内核、APP等等软件,需要在Ubuntu中编译;但是阅读、修改这些源码时,在Windows下会比较方便。 所以,我们需要在Windows、Ubuntu上都存有源码。
elecfans_trackid=t_index 2.直播内容: 鸿蒙OS内核liteos-a 操作系统框架 鸿蒙OS内核liteos-a 框架分析 鸿蒙OS内核liteos-a 启动流程 鸿蒙OS 内核liteos-a 移植1:串口 鸿蒙OS内核liteos-a 移植2:MMU 鸿蒙OS内核liteos-a 移植3:中断体系 鸿蒙OS内核liteos-a 移植4:定时器 鸿蒙OS内核liteos-a 常见问题汇总 问1. liteos-a 和鸿蒙2.0有啥区别? 答: 鸿蒙是一套庞大的系统,它含有UI子系统、多媒体子系统等等。 鸿蒙支持多种内核:Linux、liteos-a。 鸿蒙也是一套完整的操作系统,Linux仅仅是鸿蒙支持的内核之一。 问2. 微内核是rtos或者uclinux之类的吗? 答: 微内核,并不是“微小的内核”。 但是liteos-a并不是对标安卓、对标Windows,鸿蒙才是对标安卓。鸿蒙是一个庞大的系统,liteos-a是鸿蒙支持的内核之一。
如果需要多个工作人员怎么办,就是通过fork,简单说就是复制一个,复制的前提是需要有一个,鸿蒙里就是KProcess,其他工作人员都是通过它fork的。 那用户怎么来的呢? 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......内核态根进程创建过程创建 以PID方式得到一个进程 ret = OsProcessCreateInit(processCB, OS_KERNEL_MODE, "KProcess", 0);// 初始化进程,最高优先级0,鸿蒙进程一共有 当任何进程或者中断异常进入内核后,都是使用相同的内核代码段描述符和内核数据段描述符,它们是__KERNEL_CS和__KERNEL_DS。这里要明确记得,内核数据段实际上就是内核态堆栈段。
[下载 source insight 4.0 破解版]可以豪不夸张的说理解LOS_DL_LIST及相关函数是读懂鸿蒙内核的关键。 前后指针(注者后续将比喻成一对左右触手)灵活的指挥着系统精准的运行,越是深入分析内核源码,越能感受到内核开发者对LOS_DL_LIST非凡的驾驭能力,笔者仿佛看到了无数双手前后相连,拉起了一个个双向循环链表 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript holds the waitLits to support wait/waitpid *///进程持有等待链表以支持wait/waitpid} LosProcessCB;解读pendList 个人认为它是鸿蒙内核功能最多的一个链表 waitpid系统调用为SysWait,具体看进程回收篇.双向链表是内核最重要的结构体,精读内核的路上它会反复的映入你的眼帘,理解它是理解内核运作的关键所在!
一个操作系统,最重要的部分无疑是内核。鸿蒙系统声称自研了内核,从之前开源的 OpenHarmony OS 代码中可以看到,是一款名为 LiteOS 的面向 IoT 领域构建的轻量级物联网操作系统。 目录则存放的是编译脚本和内核配置。 从中也可以看出,鸿蒙系统选用的是 linux 4.19.y LTS 版本。 在之前的文章 聊一聊鸿蒙的构建系统 中,我们知道鸿蒙采用了 GN 构建系统。 生成内核.config。
主子和奴才请想一个问题,内核本身也是程序要在内存运行, 用户程序一样也要在内存运行,大家都在一个窝里吃饭, 你凭什么就管我了.好像内核程序是主子,用户程序是奴才似的.哎! 其实用户进程就是内核的一个个奴才, 被捏的死死的. 按不住奴才那这主子就不合格,就不是一个稳定系统. 请想想实际内存就这么点大, 如何满足众多用户进程的需求? 内核空间和用户空间如何隔离? 内核这当家的主子真是不容易,这些都是他要解决的问题, 但欲戴其冠,必承其重.先说如果没有内存管理会怎样?那就是个奴才们能把主子给活活踩死, 想想主奴不分,吃喝拉撒睡都在一起,称兄道弟的想干啥? 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......举例说明TLB
鸿蒙轻内核使用Kconfig进行图形化配置,本文专门讲解下鸿蒙轻内核LiteOS-M和LiteOS-A的图形化配置方法。 本文首先简单介绍下kconfig的基础知识,接着介绍下如何使用图形化配置。 鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等)。 `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript /vendor/hisilicon/hispark_aries/config/release.config3、Kconfig高级语法Kconfig大部分工程师都了解,快速介绍几个鸿蒙轻内核中使用到的稍微高级的语法 olddefconfig等同于silentoldconfig,对于新符号使用默认值–savedefconfig <file>把当前最小的配置保持到文件<file>小结本文介绍了Kconfig的基础知识,和鸿蒙轻内核的图形化配置
本文将为大家介绍鸿蒙轻内核中的进程、线程、内存和网络四大基础功能,包括一些基础概念、实现功能和使用场景等,供想要深入了解鸿蒙操作系统的初学者学习参考。 OpenHarmony内核中的进程采用抢占式调度机制,支持时间片轮转调度方式和FIFO调度机制。 OpenHarmony内核每个进程内的线程独立运行、独立调度,当前进程内线程的调度不受其它进程内线程的影响。 OpenHarmony内核中的线程采用抢占式调度机制,同时支持时间片轮转调度和FIFO调度方式。 OpenHarmony内核的线程一共有32个优先级(0-31),最高优先级为0,最低优先级为31。 MREMAP_MAYMOVE:允许内核将映射重定位到新的虚拟地址。
`1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript NO修改内核中断。 内核提供了两种中断修改方式:使用厂商默认中断。 添加内核子系统添加完内核子系统后,可以编译出带有系统的工程。通过以下步骤添加内核子系统:在“config.json”中添加内核子系统。 轻量级系统的内核提供了一些特性,此步骤将指导如何查看、开启/关闭这些特性。内核特性:liteos_m提供了包括文件系统、backtrace在内的一系列内核特性开关。 }写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点
而宏内核,用户应用是通过系统调用直接来使用系统服务。所以微内核,消息传递是基本形态。基于这样的理解,RT-Thread目前是宏内核,更严谨些应该是Unikernel(内核与应用都运行在内核态)。 ——熊大 下面让我们重温俊小哥的微内核科普文章: ? 什么是微内核 微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。 而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中。上图右侧表示即是混合内核的架构。 其实微内核与混合内核,混合内核与宏内核之间并无十分明确的界限,一般情况下把最多只具备IPC(进程通信),进程调度,内存管理功能的内核称为微内核、把包含所有系统服务的内核称为宏内核、有少部分系统服务在用户态或者比微内核多一些系统服务的内核称为混合内核 本来第一代微内核的设计隔离了使内核安全性降低的系统服务,让系统服务漏洞不会影响内核,进而提高了内核安全性,可以说是关上了破坏系统的门, 但是第二代系统却又给攻击者开了个窗户;由于第二代微内核在内核中省去了关于安全性检查等步骤
为了试图解决这些挑战,人们开始尝试使用微内核的思想来设计系统内核。 什么是微内核? 微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。 而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中。 当然此时Mach内核还不算完全的微内核。而考虑到微内核可以更高效地利用多处理器计算机的处理器核心资源,人们期待着等Mach把系统服务都搬到内核之外后可以把运行效率损失降下来。 第二代微内核:解决性能问题 第二代微内核的主要代表是L3和L4,以及QNX系统使用的Neutrino内核。 本来第一代微内核的设计隔离了使内核安全性降低的系统服务,让系统服务漏洞不会影响内核,进而提高了内核安全性,可以说是关上了破坏系统的门, 但是第二代系统却又给攻击者开了个窗户;由于第二代微内核在内核中省去了关于安全性检查等步骤
而宏内核,用户应用是通过系统调用直接来使用系统服务。所以微内核,消息传递是基本形态。基于这样的理解,RT-Thread目前是宏内核,更严谨些应该是Unikernel(内核与应用都运行在内核态)。 ——熊大 下面让我们重温俊小哥的微内核科普文章: ? 什么是微内核 微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。 而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中。上图右侧表示即是混合内核的架构。 其实微内核与混合内核,混合内核与宏内核之间并无十分明确的界限,一般情况下把最多只具备IPC(进程通信),进程调度,内存管理功能的内核称为微内核、把包含所有系统服务的内核称为宏内核、有少部分系统服务在用户态或者比微内核多一些系统服务的内核称为混合内核 本来第一代微内核的设计隔离了使内核安全性降低的系统服务,让系统服务漏洞不会影响内核,进而提高了内核安全性,可以说是关上了破坏系统的门, 但是第二代系统却又给攻击者开了个窗户;由于第二代微内核在内核中省去了关于安全性检查等步骤
Linux内核,再加上基础OH内核态基础代码、以及HDF等OH内核态特性。 欢迎大家关注工粽号<程序猿百晓生>,0取以下学习清单:1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05 .鸿蒙开发面试真题(含参考答案) 6.TypeScript入门学习手册7.OpenHarmony 经典面试题(含参考答案)8.OpenHarmony设备开发入门【最新版】9.沉浸式剖析OpenHarmony 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......编译和运行HDF test.写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点
几点说明kernel_liteos_a_note | 中文注解鸿蒙内核 是在 OpenHarmony 的 kernel_liteos_a 基础上给内核源码加上中文注解的版本.与官方源码按月保持同步,同步历史如下 windows + docker 方式编译鸿蒙. 记录编译鸿蒙的过程,以备后续不用再去一大堆无效的误导式软文中搜寻芝麻大点有用的信息,那样真挺费时费心力.针对不同场景使用不同的内核,openharmony有两个开源版本。 标准系统版本,也叫(linux/L2/手机)版本,L2开源(2021/06/02),采用linux 4.19 内核,华为手机(HarmonyOS2.0)就是基于这个开源版本做的商业发行版本。 轻量和小型系统版本,也叫(liteos/L0~L1/嵌入式)版本,L0开源(2020/09/10),L1开源(2020/12/02),采用 lite-os-a/m内核,主要针对嵌入式设备。
很香的 Docker如果只是为了编译鸿蒙,初级的接触鸿蒙,docker是很香的,从第一次接触docker就对它爱不释手, 脏活累活它干了,少了太多的麻烦. docker 编译鸿蒙看编译环境篇就行了, L1 和 L2 都编译通过了.如果要深入的了解鸿蒙,比如调试鸿蒙的代码或编译工具,就需要另辟蹊径了.下图为调试编译工具hb 的过程,有了调试环境,鸿蒙很像光着屁屁的小孩,无限风光则尽收眼底.调试之前的准备个人喜欢做一劳永逸的事 安装脚本编译鸿蒙轻量级内核(L1/liteos)所需各种环境#2\. /path.sh# 下载源码包,目前鸿蒙轻量级内核最新源码包为code-v1.1.1-LTS.tar.gz,后续有更新请自行替换 mkdir -p /home/openharmonywget -P /home 看下是否环境变量写入成功编译鸿蒙轻量版(L0~L1/LiteOS)hb setturing@ubuntu:/home/openharmony/code-v1.1.1-LTS$# hb set[OHOS
鸿蒙轻内核M核源码分析系列十三(续) 消息队列QueueMail接口 之前分析过队列(Queue)的源代码,了解了队列初始化、队列创建、删除、队列读取写入等操作。 LOS_Schedule(); } else { LOS_IntRestore(intSave); } return LOS_OK; } ---- 小结 本文带领大家一起剖析了鸿蒙轻内核的队列模块的
1、FatFS文件系统结构体介绍会分2部分来介绍结构体部分,先介绍FatFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和FatFS相关的一些结构体。 defineFF_MIN_SS512#ifndef __LITEOS_M__#define FF_MAX_SS4096#else#define FF_MAX_SSFS_MAX_SS#endif对于适配LiteOS-M内核的开发板 `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......2.5 标签转换函数
# 第四步: 循环读取子系统内各控件的配置信息 # 此处以内核为例://build/lite/components/kernel.json" # "components" hi3518ev300", # "hi3516dv300", # ], # "adapted_kernel": [ "liteos_a" ], # 组件已适配的内核 (component_adapted_kernel == product_cfg.kernel_type && kernel_valid == false) { #内核检测是否已适配 import("//build/lite/config/subsystem/lite_subsystem.gni") #子系统模板函数 lite_subsystem("kernel") {#编译内核子系统 `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript
可以参考之前的系列文章,《鸿蒙轻内核M核源码分析系列十九 Musl LibC》中介绍了相关的接口,那些接口会调用VFS文件系统中操作接口,然后进一步调用LFS文件操作接口。 `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......3.1 挂载 写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点