diff --git a/README.md b/README.md index bb028688584feb21c38f26f705ce18399eb456cc..2a3f81c34f883f183cb5d2f8502aac94807da505 100644 --- a/README.md +++ b/README.md @@ -57,97 +57,108 @@ 给 **[鸿蒙内核源码加注释](https://gitee.com/weharmony/kernel_liteos_a_note)** 过程中,整理出以下文章. -* (总目录) | 百万汉字注解 百篇博客分析[< csdn](https://blog.csdn.net/kuangyufei) [ | oschina >](https://my.oschina.net/weharmony) +* [(总目录) | 百万汉字注解 百篇博客分析 ](https://weharmony.gitee.io/总目录.html) **[< csdn](https://blog.csdn.net/kuangyufei) [ | oschina >](https://my.oschina.net/weharmony)** -### **故事篇** +### **故事叙述** -* (调度故事篇) | 用故事说内核调度 [< csdn](https://blog.csdn.net/kuangyufei/article/details/108745174) [ | oschina >](https://my.oschina.net/u/3751245/blog/4634668) +* [(调度故事篇) | 用故事说内核调度 ](https://weharmony.gitee.io/调度故事篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108745174) [ | oschina >](https://my.oschina.net/u/3751245/blog/4634668)** -* (内存主奴篇) | 用故事说内存管理 [< csdn](https://blog.csdn.net/kuangyufei/article/details/108723672) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802) +* [(内存主奴篇) | 用故事说内存管理 ](https://weharmony.gitee.io/内存主奴篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108723672) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802)** -* (源码注释篇) | 热爱是所有的理由和答案[< csdn](https://blog.csdn.net/kuangyufei/article/details/109251754) [ | oschina >](https://my.oschina.net/u/3751245/blog/4686747) +* [(源码注释篇) | 热爱是所有的理由和答案 ](https://weharmony.gitee.io/源码注释篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/109251754) [ | oschina >](https://my.oschina.net/u/3751245/blog/4686747)** -### **ARM汇编篇** +### **ARM架构** -* (系统调用篇) | 全盘解剖鸿蒙系统调用实现过程[< csdn](https://blog.csdn.net/kuangyufei/article/details/114285166) [ | oschina >](https://my.oschina.net/weharmony/blog/4967613) +* [(寄存器篇) | arm 37个寄存器一网打尽,不再神秘 ](https://weharmony.gitee.io/寄存器篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/114326994) [ | oschina >](https://my.oschina.net/weharmony/blog/4969487)** -* (工作模式篇) | 鸿蒙开机代码长啥样?[< csdn](https://blog.csdn.net/kuangyufei/article/details/114168567) [ | oschina >](https://my.oschina.net/weharmony/blog/4965052) +* [(系统调用篇) | 全盘解剖鸿蒙系统调用实现过程 ](https://weharmony.gitee.io/系统调用篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/114285166) [ | oschina >](https://my.oschina.net/weharmony/blog/4967613)** -* (汇编传参篇) | 汇编如何传递复杂的参数?[< csdn](https://blog.csdn.net/kuangyufei/article/details/113265990) [ | oschina >](https://my.oschina.net/u/3751245/blog/4927892) +* [(工作模式篇) | 鸿蒙开机代码长啥样? ](https://weharmony.gitee.io/工作模式篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/114168567) [ | oschina >](https://my.oschina.net/weharmony/blog/4965052)** -* (汇编基础篇) | CPU在哪里打卡上班 ?[< csdn](https://blog.csdn.net/kuangyufei/article/details/112986628) [ | oschina >](https://my.oschina.net/u/3751245/blog/4920361) +* [(汇编传参篇) | 汇编如何传递复杂的参数? ](https://weharmony.gitee.io/汇编传参篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113265990) [ | oschina >](https://my.oschina.net/u/3751245/blog/4927892)** -### **进程/线程篇** +* [(汇编基础篇) | CPU在哪里打卡上班? ](https://weharmony.gitee.io/汇编基础篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/112986628) [ | oschina >](https://my.oschina.net/u/3751245/blog/4920361)** -* (CPU篇) | 内核是如何描述CPU的 ?[< csdn](https://blog.csdn.net/kuangyufei/article/details/113782749) [ | oschina >](https://my.oschina.net/weharmony/blog/4952034) +### **进程线程** -* (并发并行篇) | 内核如何管理多个CPU?[< csdn](https://blog.csdn.net/kuangyufei/article/details/113516222) [ | oschina >](https://my.oschina.net/u/3751245/blog/4940329) +* [(CPU篇) | 内核是如何描述CPU的? ](https://weharmony.gitee.io/CPU篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113782749) [ | oschina >](https://my.oschina.net/weharmony/blog/4952034)** -* (调度机制篇) | 任务是如何被调度执行的?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108705968) [ | oschina >](https://my.oschina.net/u/3751245/blog/4623040) +* [(并发并行篇) | 内核如何管理多个CPU? ](https://weharmony.gitee.io/并发并行篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113516222) [ | oschina >](https://my.oschina.net/u/3751245/blog/4940329)** -* (调度队列篇) | 就绪队列对调度的作用[< csdn](https://blog.csdn.net/kuangyufei/article/details/108626671) [ | oschina >](https://my.oschina.net/u/3751245/blog/4606916) +* [(调度机制篇) | 任务是如何被调度执行的? ](https://weharmony.gitee.io/调度机制篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108705968) [ | oschina >](https://my.oschina.net/u/3751245/blog/4623040)** -* (任务管理篇) | 任务是内核调度的单元[< csdn](https://blog.csdn.net/kuangyufei/article/details/108621428) [ | oschina >](https://my.oschina.net/u/3751245/blog/4603919) +* [(调度队列篇) | 就绪队列对调度的作用 ](https://weharmony.gitee.io/调度队列篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108626671) [ | oschina >](https://my.oschina.net/u/3751245/blog/4606916)** -* (时钟任务篇) | 调度最大的动力来自哪里?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108603468) [ | oschina >](https://my.oschina.net/u/3751245/blog/4574493) +* [(任务管理篇) | 任务是内核调度的单元 ](https://weharmony.gitee.io/任务管理篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108621428) [ | oschina >](https://my.oschina.net/u/3751245/blog/4603919)** -* (进程管理篇) | 进程是内核资源管理单元[< csdn](https://blog.csdn.net/kuangyufei/article/details/108595941) [ | oschina >](https://my.oschina.net/u/3751245/blog/4574429) +* [(时钟任务篇) | 调度最大的动力来自哪里? ](https://weharmony.gitee.io/时钟任务篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108603468) [ | oschina >](https://my.oschina.net/u/3751245/blog/4574493)** -* (线程概念篇) | 是谁在不断的折腾CPU?[< csdn](https://blog.csdn.net/kuangyufei/article/details/112870193) [ | oschina >](https://my.oschina.net/u/3751245/blog/4915543) +* [(进程管理篇) | 进程是内核资源管理单元 ](https://weharmony.gitee.io/进程管理篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108595941) [ | oschina >](https://my.oschina.net/u/3751245/blog/4574429)** -* (进程概念篇) | 进程都管理了哪些资源?[< csdn](https://blog.csdn.net/kuangyufei/article/details/113395872) [ | oschina >](https://my.oschina.net/u/3751245/blog/4937521) +* [(线程概念篇) | 是谁在不断的折腾CPU? ](https://weharmony.gitee.io/线程概念篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/112870193) [ | oschina >](https://my.oschina.net/u/3751245/blog/4915543)** -### **通讯方式篇** +* [(进程概念篇) | 进程都管理了哪些资源? ](https://weharmony.gitee.io/进程概念篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113395872) [ | oschina >](https://my.oschina.net/u/3751245/blog/4937521)** -* (消息队列篇) | 进程间如何异步解耦传递大数据 ? [< csdn](https://blog.csdn.net/kuangyufei/article/details/113815355) [ | oschina >](https://my.oschina.net/weharmony/blog/4952961) +### **通讯方式** -* (事件控制篇) | 任务间一对多和多对多的同步方案 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113759481) [ | oschina >](https://my.oschina.net/weharmony/blog/4950956) +* [(消息队列篇) | 进程间如何异步解耦传递大数据 ? ](https://weharmony.gitee.io/消息队列篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113815355) [ | oschina >](https://my.oschina.net/weharmony/blog/4952961)** -* (信号量篇) | 信号量解决任务同步问题 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113744267) [ | oschina >](https://my.oschina.net/weharmony/blog/4949720) +* [(事件控制篇) | 任务间一对多和多对多的同步方案 ](https://weharmony.gitee.io/事件控制篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113759481) [ | oschina >](https://my.oschina.net/weharmony/blog/4950956)** + +* [(信号量篇) | 信号量解决任务同步问题 ](https://weharmony.gitee.io/信号量篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113744267) [ | oschina >](https://my.oschina.net/weharmony/blog/4949720)** -* (进程通讯篇) | 九大通讯方式一网打尽 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113700751) [ | oschina >](https://my.oschina.net/weharmony/blog/4947398) +* [(进程通讯篇) | 九大通讯方式一网打尽 ](https://weharmony.gitee.io/进程通讯篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113700751) [ | oschina >](https://my.oschina.net/weharmony/blog/4947398)** -* (互斥锁篇) | 互斥锁比自旋锁丰满许多 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113660357) [ | oschina >](https://my.oschina.net/weharmony/blog/4945465) +* [(互斥锁篇) | 互斥锁比自旋锁丰满许多 ](https://weharmony.gitee.io/互斥锁篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113660357) [ | oschina >](https://my.oschina.net/weharmony/blog/4945465)** -* (自旋锁篇) | 汇编到令人心碎的自旋锁 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113616250) [ | oschina >](https://my.oschina.net/weharmony/blog/4944129) +* [(自旋锁篇) | 汇编到令人心碎的自旋锁 ](https://weharmony.gitee.io/自旋锁篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113616250) [ | oschina >](https://my.oschina.net/weharmony/blog/4944129)** -### **内存篇** +### **虚实内存** -* (物理内存篇) | 伙伴算法是在卖标准猪肉块吗?[< csdn](https://blog.csdn.net/kuangyufei/article/details/111765600) [ | oschina >](https://my.oschina.net/u/3751245/blog/4842408) +* [(物理内存篇) | 伙伴算法是在卖标准猪肉块吗? ](https://weharmony.gitee.io/物理内存篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/111765600) [ | oschina >](https://my.oschina.net/u/3751245/blog/4842408)** -* (内存规则篇) | 内存管理到底在管什么?[< csdn](https://blog.csdn.net/kuangyufei/article/details/109437223) [ | oschina >](https://my.oschina.net/u/3751245/blog/4698384) +* [(内存规则篇) | 内存管理到底在管什么? ](https://weharmony.gitee.io/内存规则篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/109437223) [ | oschina >](https://my.oschina.net/u/3751245/blog/4698384)** -* (内存映射篇) | 什么是内存最重要的实现基础 ?[< csdn](https://blog.csdn.net/kuangyufei/article/details/109032636) [ | oschina >](https://my.oschina.net/u/3751245/blog/4694841) +* [(内存映射篇) | 什么是内存最重要的实现基础 ? ](https://weharmony.gitee.io/内存映射篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/109032636) [ | oschina >](https://my.oschina.net/u/3751245/blog/4694841)** -* (内存汇编篇) | 什么是虚拟内存的实现基础?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108994081) [ | oschina >](https://my.oschina.net/u/3751245/blog/4692156) +* [(内存汇编篇) | 什么是虚拟内存的实现基础? ](https://weharmony.gitee.io/内存汇编篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108994081) [ | oschina >](https://my.oschina.net/u/3751245/blog/4692156)** -* (内存分配篇) | 内存有哪些分配方式?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108989906) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802) +* [(内存分配篇) | 内存有哪些分配方式? ](https://weharmony.gitee.io/内存分配篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108989906) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802)** -* (内存管理篇) | 虚拟内存全景图是怎样的?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108821442) [ | oschina >](https://my.oschina.net/u/3751245/blog/4652284) +* [(内存管理篇) | 虚拟内存全景图是怎样的? ](https://weharmony.gitee.io/内存管理篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108821442) [ | oschina >](https://my.oschina.net/u/3751245/blog/4652284)** -* (内存主奴篇) | 紫禁城的主子和奴才如何相处?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108723672) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802) +* [(内存主奴篇) | 紫禁城的主子和奴才如何相处? ](https://weharmony.gitee.io/内存主奴篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108723672) [ | oschina >](https://my.oschina.net/u/3751245/blog/4646802)** -### **基础篇** +### **基础工具** -* (时间管理篇) | Tick是操作系统的基本时间单位 [< csdn](https://blog.csdn.net/kuangyufei/article/details/113867785) [ | oschina >](https://my.oschina.net/weharmony/blog/4956163) +* [(时间管理篇) | Tick是操作系统的基本时间单位 ](https://weharmony.gitee.io/时间管理篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113867785) [ | oschina >](https://my.oschina.net/weharmony/blog/4956163)** -* (原子操作篇) | 是哪两条汇编指令在为原子操作保驾护航 ? [< csdn](https://blog.csdn.net/kuangyufei/article/details/113850603) [ | oschina >](https://my.oschina.net/weharmony/blog/4955290) +* [(原子操作篇) | 是哪两条汇编指令在为原子操作保驾护航? ](https://weharmony.gitee.io/原子操作篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113850603) [ | oschina >](https://my.oschina.net/weharmony/blog/4955290)** -* (定时器机制篇) | 内核最高优先级任务是谁???[< csdn](https://blog.csdn.net/kuangyufei/article/details/113774260) [ | oschina >](https://my.oschina.net/weharmony/blog/4951625) +* [(定时器机制篇) | 内核最高优先级任务是谁??? ](https://weharmony.gitee.io/定时器机制篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/113774260) [ | oschina >](https://my.oschina.net/weharmony/blog/4951625)** -* (用栈方式篇) | 栈是构建底层运行的基础[< csdn](https://blog.csdn.net/kuangyufei/article/details/112534331) [ | oschina >](https://my.oschina.net/u/3751245/blog/4893388) +* [(用栈方式篇) | 栈是构建底层运行的基础 ](https://weharmony.gitee.io/用栈方式篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/112534331) [ | oschina >](https://my.oschina.net/u/3751245/blog/4893388)** -* (位图管理篇) | 为何进程和线程都是32个优先级?[< csdn](https://blog.csdn.net/kuangyufei/article/details/112394982) [ | oschina >](https://my.oschina.net/u/3751245/blog/4888467) +* [(位图管理篇) | 为何进程和线程都是32个优先级? ](https://weharmony.gitee.io/位图管理篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/112394982) [ | oschina >](https://my.oschina.net/u/3751245/blog/4888467)** -* (源码结构篇) | 内核500问你能答对多少?[< csdn](https://blog.csdn.net/kuangyufei/article/details/111938348) [ | oschina >](https://my.oschina.net/u/3751245/blog/4869137) +* [(源码结构篇) | 内核500问你能答对多少? ](https://weharmony.gitee.io/源码结构篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/111938348) [ | oschina >](https://my.oschina.net/u/3751245/blog/4869137)** -* (双向链表篇) | 谁是内核最重要结构体?[< csdn](https://blog.csdn.net/kuangyufei/article/details/108585659) [ | oschina >](https://my.oschina.net/u/3751245/blog/4572304) +* [(双向链表篇) | 谁是内核最重要结构体? ](https://weharmony.gitee.io/双向链表篇.html) **[< csdn](https://blog.csdn.net/kuangyufei/article/details/108585659) [ | oschina >](https://my.oschina.net/u/3751245/blog/4572304)** ### **主流站点** -感谢 `oschina`,`csdn`,`华为开发者论坛`, `51CTO`, `电子发烧友`,以及其他小伙伴通过自己的公众号对系列文章的转载和推荐,无以为报,唯有不断的深挖内核地基,输出更多文章,错漏之处请多见谅,会持续完善源码注解和文档内容,精雕细琢,尽全力打磨精品内容。文章输出站点: +感谢 `oschina`,`csdn`,`华为开发者论坛`, `51cto`, `电子发烧友`,以及其他小伙伴通过自己的公众号对系列文章的转载和推荐,无以为报,唯有不断的深挖内核地基,输出更多文章,错漏之处请多见谅,会持续完善源码注解和文档内容,精雕细琢,尽全力打磨精品内容。 + +**文章输出站点:** -**[csdn |](https://blog.csdn.net/kuangyufei)** **[开源中国 |](https://my.oschina.net/weharmony)** **[51cto |](https://harmonyos.51cto.com/column/34)** **[头条号 |](https://gitee.com/weharmony/docs/raw/master/pic/other/tt.png)** **[weharmony |](https://weharmony.gitee.io)** **[公众号](https://gitee.com/weharmony/docs/raw/master/pic/other/wxcode.png)** +* **[公众号](https://gitee.com/weharmony/docs/raw/master/pic/other/so1so.png)** +* **[oschina ](https://my.oschina.net/weharmony)** +* **[csdn ](https://blog.csdn.net/kuangyufei)** +* **[weharmony.gitee.io](https://weharmony.gitee.io)** +* **[weharmony.github.io](https://weharmony.github.io)** +* **[华为开发者论坛](https://developer.huawei.com/consumer/cn/forum/)** +* **[头条号](https://gitee.com/weharmony/docs/raw/master/pic/other/tt.png)** +* **[51cto](https://harmonyos.51cto.com/column/34)** ## **Fork Me** @@ -165,7 +176,7 @@ * 搜索 **`@note_good`** 是给源码点赞的地方 -### **新增zzz目录** +### **新增zzzz目录** * 中文加注版比官方版无新增文件,只多了一个zzz的目录,里面放了一些文件,它与内核代码无关,大家可以忽略它,取名zzz是为了排在最后,减少对原有代码目录级的侵入,zzz的想法源于微信中名称为AAA的那帮朋友,你的微信里应该也有他们熟悉的身影吧 :|P @@ -185,8 +196,4 @@ 百万汉字注解 >> 精读内核源码,中文注解分析, 深挖地基工程,大脑永久记忆,四大码仓每日同步更新[< gitee ](https://gitee.com/weharmony/kernel_liteos_a_note)[| github ](https://github.com/kuangyufei/kernel_liteos_a_note)[| csdn ](https://codechina.csdn.net/kuangyufei/kernel_liteos_a_note)[| coding >](https://weharmony.coding.net/public/harmony/kernel_liteos_a_note/git/files) -百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新[< oschina ](https://my.oschina.net/u/3751245/blog/4626852)[| csdn ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| weharmony >](https://weharmony.gitee.io/) - - - - +百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新[< oschina ](https://my.oschina.net/u/3751245/blog/4626852)[| csdn ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| weharmony >](https://weharmony.gitee.io/) \ No newline at end of file diff --git a/arch/arm/arm/include/arch_config.h b/arch/arm/arm/include/arch_config.h index 5a4e62cc7bac682cef32b86eb2e5f95f7bdfd3db..1a0b69ed7eca329f07ae96cb1965f5a05cf8b2d8 100644 --- a/arch/arm/arm/include/arch_config.h +++ b/arch/arm/arm/include/arch_config.h @@ -152,23 +152,23 @@ SPSR(saved program status register)程序状态保存寄存器. #endif #define OS_EXC_FIQ_STACK_SIZE 64 #define OS_EXC_IRQ_STACK_SIZE 64 -#define OS_EXC_SVC_STACK_SIZE 0x2000 -#define OS_EXC_STACK_SIZE 0x1000 +#define OS_EXC_SVC_STACK_SIZE 0x2000 //8K +#define OS_EXC_STACK_SIZE 0x1000 //4K -#define REG_R0 0 +#define REG_R0 0 //头号寄存器,常用于传首个参数和返回值 #define REG_R1 1 #define REG_R2 2 #define REG_R3 3 #define REG_R4 4 #define REG_R5 5 #define REG_R6 6 -#define REG_R7 7 +#define REG_R7 7 //特殊情况下用于保存系统调用号 #define REG_R8 8 #define REG_R9 9 #define REG_R10 10 -#define REG_R11 11 +#define REG_R11 11 //特殊情况下用于 FP寄存器 #define REG_R12 12 -#define REG_R13 13 +#define REG_R13 13 #define REG_R14 14 #define REG_R15 15 #define REG_CPSR 16 //程序状态寄存器(current program status register) (当前程序状态寄存器) diff --git a/zzz/git/push.sh b/zzz/git/push.sh index 737c472f9cd2d220b684a05af36c155ba35aa77b..eb2b4bff5c9d1e08d2bd140e921a91166f02c188 100644 --- a/zzz/git/push.sh +++ b/zzz/git/push.sh @@ -1,5 +1,5 @@ git add -A -git commit -m '热爱是所有的理由和答案 +git commit -m '(寄存器篇) | arm 37个寄存器一网打尽,不再神秘 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 https://weharmony.gitee.io '