提交 e1b86dfe 编写于 作者: 鸿蒙内核源码分析's avatar 鸿蒙内核源码分析

Merge branch 'master' of codechina.csdn.net:kuangyufei/kernel_liteos_a_note into master

......@@ -5,7 +5,7 @@
.config*
cscope*
tags
#.vscode
.vscode
*.o
.idea
*.img
......@@ -23,7 +23,4 @@ platform/board.ld
apps/init/init
apps/shell/shell
lib/libc/musl
zzz/pic/代码目录结构.png
zzz/pic/compile_success.png
zzz/md/node_modules
zzz/md/docs/.vuepress/dist
[鸿蒙内核源码注释中文版 【 Gitee仓 ](https://gitee.com/weharmony/kernel_liteos_a_note)|[ CSDN仓 ](https://codechina.csdn.net/kuangyufei/kernel_liteos_a_note)|[ Github仓 ](https://github.com/kuangyufei/kernel_liteos_a_note)|[ Coding仓 】](https://weharmony.coding.net/public/harmony/kernel_liteos_a_note/git/files)精读内核源码,中文注解分析.深挖地基工程,构建底层网图.
[鸿蒙源码分析系列篇 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)[| HarmonyOS 】](https://weharmony.github.io/)问答式导读, 生活式比喻, 表格化说明, 图形化展示, 层层剥开内核神秘外衣.
[鸿蒙源码分析系列篇 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)[| HarmonyOS 】](https://weharmony.gitee.io/)问答式导读, 生活式比喻, 表格化说明, 图形化展示, 层层剥开内核神秘外衣.
---
......@@ -28,17 +28,17 @@
在每个模块的.c文件开始位置先对模块功能做整体的介绍,例如异常接管模块注解如图所示:
![在这里插入图片描述](https://gitee.com/weharmony/kernel_liteos_a_note/raw/master/zzz/pic/other/ycjg.png)
![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/ycjg.png)
注解过程中查阅了很多的资料和书籍,在具体代码处都附上了参考链接.
而函数级注解会详细到重点行,甚至每一行, 例如申请互斥锁的主体函数,不可谓不重要,而官方注释仅有一行,如图所示
![在这里插入图片描述](https://gitee.com/weharmony/kernel_liteos_a_note/raw/master/zzz/pic/other/sop.png)
![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/sop.png)
另外画了一些字符图方便理解,直接嵌入到头文件中,比如虚拟内存的全景图,因没有这些图是很难理解虚拟内存是如何管理的.
![在这里插入图片描述](https://gitee.com/weharmony/kernel_liteos_a_note/raw/master/zzz/pic/other/vm.png)
![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/vm.png)
- ### **理解内核的三个层级**
......@@ -52,43 +52,43 @@
- ### **鸿蒙源码分析系列篇**
- [鸿蒙源码分析系列(总目录) | 持续更新中... 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)|[ HarmonyOS 】](https://weharmony.github.io)
- [鸿蒙源码分析系列(总目录) | 持续更新中... 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)|[ HarmonyOS 】](https://weharmony.gitee.io)
* [|- 鸿蒙内核源码分析(用栈方式篇) | 栈是构建底层运行的基础 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/112534331) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4893388)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(用栈方式篇).html)
* [|- 鸿蒙内核源码分析(用栈方式篇) | 栈是构建底层运行的基础 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/112534331) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4893388)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(用栈方式篇).html)
* [|- 鸿蒙内核源码分析(位图管理篇) | 为何进程和线程都是32个优先级? 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/112394982) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4888467)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(位图管理篇).html)
* [|- 鸿蒙内核源码分析(位图管理篇) | 为何进程和线程都是32个优先级? 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/112394982) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4888467)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(位图管理篇).html)
* [|- 鸿蒙内核源码分析(源码结构篇) | 内核500问你能答对多少? 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/111938348) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4869137)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(源码结构篇).html)
* [|- 鸿蒙内核源码分析(源码结构篇) | 内核500问你能答对多少? 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/111938348) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4869137)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(源码结构篇).html)
* [|- 鸿蒙内核源码分析(物理内存篇) | 伙伴算法是在卖标准猪肉块吗?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/111765600) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4842408)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(物理内存篇).html)
* [|- 鸿蒙内核源码分析(物理内存篇) | 伙伴算法是在卖标准猪肉块吗?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/111765600) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4842408)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(物理内存篇).html)
* [|- 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109437223) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4698384)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存规则篇).html)
* [|- 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109437223) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4698384)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存规则篇).html)
* [|- 鸿蒙内核源码分析(源码注释篇) | 精读内核源码有哪些好处?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109251754) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4686747)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(源码注释篇).html)
* [|- 鸿蒙内核源码分析(源码注释篇) | 精读内核源码有哪些好处?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109251754) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4686747)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(源码注释篇).html)
* [|- 鸿蒙内核源码分析(内存映射篇) | 虚拟内存-物理内存是如何映射的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109032636) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4694841)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存映射篇).html)
* [|- 鸿蒙内核源码分析(内存映射篇) | 虚拟内存-物理内存是如何映射的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/109032636) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4694841)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存映射篇).html)
* [|- 鸿蒙内核源码分析(内存汇编篇) | 什么是虚拟内存的实现基础?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108994081) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4692156)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存汇编篇).html)
* [|- 鸿蒙内核源码分析(内存汇编篇) | 什么是虚拟内存的实现基础?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108994081) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4692156)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存汇编篇).html)
* [|- 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108989906) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4646802)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存分配篇).html)
* [|- 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108989906) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4646802)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存分配篇).html)
* [|- 鸿蒙内核源码分析(内存管理篇) | 鸿蒙虚拟内存全景图是怎样的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108821442) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4652284)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存管理篇).html)
* [|- 鸿蒙内核源码分析(内存管理篇) | 鸿蒙虚拟内存全景图是怎样的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108821442) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4652284)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存管理篇).html)
* [|- 鸿蒙内核源码分析(内存概念篇) | 虚拟内存虚在哪里?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108723672) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4646802)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(内存概念篇).html)
* [|- 鸿蒙内核源码分析(内存概念篇) | 虚拟内存虚在哪里?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108723672) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4646802)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(内存概念篇).html)
* [|- 鸿蒙内核源码分析(必读故事篇) | 西门和金莲的那点破事【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108745174) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4634668)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(必读故事篇).html)
* [|- 鸿蒙内核源码分析(必读故事篇) | 西门和金莲的那点破事【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108745174) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4634668)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(必读故事篇).html)
* [|- 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108705968) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4623040)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(调度机制篇).html)
* [|- 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108705968) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4623040)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(调度机制篇).html)
* [|- 鸿蒙内核源码分析(调度队列篇) | 就绪队列对调度的作用【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108626671) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4606916)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(调度队列篇).html)
* [|- 鸿蒙内核源码分析(调度队列篇) | 就绪队列对调度的作用【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108626671) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4606916)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(调度队列篇).html)
* [|- 鸿蒙内核源码分析(任务管理篇) | 任务是内核调度的单元【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108621428) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4603919)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(任务管理篇).html)
* [|- 鸿蒙内核源码分析(任务管理篇) | 任务是内核调度的单元【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108621428) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4603919)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(任务管理篇).html)
* [|- 鸿蒙内核源码分析(时钟任务篇) | 触发调度最大的动力来自哪里?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108603468) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4574493)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(时钟管理篇).html)
* [|- 鸿蒙内核源码分析(时钟任务篇) | 触发调度最大的动力来自哪里?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108603468) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4574493)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(时钟管理篇).html)
* [|- 鸿蒙内核源码分析(进程管理篇) | 进程是内核资源管理单元【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108595941) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4574429)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(进程管理篇).html)
* [|- 鸿蒙内核源码分析(进程管理篇) | 进程是内核资源管理单元【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108595941) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4574429)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(进程管理篇).html)
* [|- 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108585659) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4572304)|[ HarmonyOS 】](https://weharmony.github.io/guide/鸿蒙内核源码分析(双向链表篇).html)
* [|- 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体?【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108585659) [| OSCHINA ](https://my.oschina.net/u/3751245/blog/4572304)|[ HarmonyOS 】](https://weharmony.gitee.io/guide/鸿蒙内核源码分析(双向链表篇).html)
- ### **通过fork及时同步最新注解内容**
......@@ -106,10 +106,6 @@
搜索 **[@note_good]()** 是给源码点赞的地方
- ### **新增的zzz目录是干什么的?**
中文加注版比官方版无新增文件,只多了一个zzz的目录,里面放了一些文件,它与内核代码无关,大家可以忽略它,取名zzz是为了排在最后,减少对原有代码目录级的侵入,zzz的想法源于微信中名称为AAA的那帮朋友,你的微信里应该也有他们熟悉的身影吧 :|P
- ### **参与贡献**
1. Fork 本仓库 >> 新建 Feat_xxx 分支 >> 提交代码注解 >> [新建 Pull Request](https://gitee.com/weharmony/kernel_liteos_a_note/pull/new/weharmony:master...weharmony:master)
......@@ -117,7 +113,7 @@
### **喜欢就关注下吧,您的关注真的很重要**
![在这里插入图片描述](https://gitee.com/weharmony/kernel_liteos_a_note/raw/master/zzz/pic/other/wxcode.png)
![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/wxcode.png)
作者邮箱:weharmony@126.com
......@@ -127,4 +123,4 @@
[鸿蒙内核源码注释中文版 【 Gitee仓 ](https://gitee.com/weharmony/kernel_liteos_a_note)|[ CSDN仓 ](https://codechina.csdn.net/kuangyufei/kernel_liteos_a_note)|[ Github仓 ](https://github.com/kuangyufei/kernel_liteos_a_note)|[ Coding仓 】](https://weharmony.coding.net/public/harmony/kernel_liteos_a_note/git/files)精读内核源码,中文详细注解.深挖地基工程,构建底层网图.
[鸿蒙源码分析系列篇 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)[| HarmonyOS 】](https://weharmony.github.io/)问答式导读, 生活式比喻, 表格化说明, 图形化展示, 层层剥开内核神秘外衣.
[鸿蒙源码分析系列篇 【 CSDN ](https://blog.csdn.net/kuangyufei/article/details/108727970)[| OSCHINA ](https://my.oschina.net/u/3751245/blog/4626852)[| HarmonyOS 】](https://weharmony.gitee.io/)问答式导读, 生活式比喻, 表格化说明, 图形化展示, 层层剥开内核神秘外衣.
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false
\ No newline at end of file
/*
*
* Automatically generated file; DO NOT EDIT.
* Huawei LiteOS Configuration
*
*/
#define LOSCFG_DRIVERS_HDF_PLATFORM_WATCHDOG 1
#define LOSCFG_KERNEL_LITEIPC 1
#define LOSCFG_SECURITY_CAPABILITY 1
#define LOSCFG_DRIVERS_USB_ETHERNET 1
#define LOSCFG_NET_LWIP_SACK 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_I2C 1
#define LOSCFG_ASLR 1
#define LOSCFG_FS_FAT_VIRTUAL_PARTITION 1
#define LOSCFG_FS_FAT_VOLUMES 16
#define LOSCFG_DRIVERS_HDF_LCD 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_SDIO 1
#define LOSCFG_ENABLE_MAGICKEY 1
#define LOSCFG_KERNEL_SMP_CORE_NUM 2
#define LOSCFG_DRIVERS 1
#define LOSCFG_PLATFORM_ADAPT 1
#define LOSCFG_KERNEL_PIPE 1
#define LOSCFG_DRIVERS_MEM 1
#define LOSCFG_CC_STACKPROTECTOR_STRONG 1
#define LOSCFG_DRIVERS_MTD_SPI_NOR_HIFMC100 1
#define LOSCFG_COMPILER_CLANG_LLVM 1
#define LOSCFG_DRIVERS_USB_SERIAL 1
#define LOSCFG_DRIVERS_HDF 1
#define LOSCFG_BASE_CORE_HILOG 1
#define LOSCFG_NET_LWIP_SACK_2_1 1
#define LOSCFG_FS_VFS 1
#define LOSCFG_KERNEL_DYNLOAD 1
#define LOSCFG_COMPAT_POSIX 1
#define LOSCFG_DRIVERS_USB 1
#define LOSCFG_KERNEL_VDSO 1
#define LOSCFG_COMPAT_BSD 1
#define LOSCFG_FILE_MODE 1
#define LOSCFG_DRIVERS_USB_DEVICE_CLASS_DRIVERS 1
#define LOSCFG_PLATFORM "hi3516dv300"
#define LOSCFG_PLATFORM_BSP_GIC_V2 1
#define LOSCFG_DRIVERS_HDF_TP_5P5_GT911 1
#define LOSCFG_PLATFORM_ROOTFS 1
#define LOSCFG_KERNEL_CPPSUPPORT 1
#define LOSCFG_HW_RANDOM_ENABLE 1
#define LOSCFG_ARCH_CORTEX_A7 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_RTC 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_UART 1
#define LOSCFG_FS_FAT 1
#define LOSCFG_DRIVERS_HIETH_SF 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_HISI_SDK 1
#define LOSCFG_FS_NFS 1
#define LOSCFG_ARCH_ARM_VER "armv7-a"
#define LOSCFG_FS_FAT_DISK 1
#define LOSCFG_DRIVERS_USB_HOST_XHCI 1
#define LOSCFG_IRQ_USE_STANDALONE_STACK 1
#define LOSCFG_ENABLE_OOM_LOOP_TASK 1
#define LOSCFG_ARCH_ARM_AARCH32 1
#define LOSCFG_KERNEL_EXTKERNEL 1
#define LOSCFG_DRIVERS_USB_MASS_STORAGE 1
#define LOSCFG_DRIVERS_MTD_SPI_NOR 1
#define LOSCFG_DRIVERS_HDF_INPUT 1
#define LOSCFG_DRIVERS_HDF_PLATFORM 1
#define LOSCFG_FS_PROC 1
#define LOSCFG_ARCH_CPU "cortex-a7"
#define LOSCFG_DRIVERS_RANDOM 1
#define LOSCFG_ARCH_ARM_V7A 1
#define LOSCFG_LIB_ZLIB 1
#define LOSCFG_DRIVERS_SD 1
#define LOSCFG_DRIVERS_HI3881 1
#define LOSCFG_SECURITY_VID 1
#define LOSCFG_ARCH_FPU "neon-vfpv4"
#define LOSCFG_DRIVERS_MTD 1
#define LOSCFG_ARCH_FPU_VFP_D32 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_GPIO 1
#define LOSCFG_PLATFORM_HI3516DV300 1
#define LOSCFG_ARCH_ARM 1
#define LOSCFG_DRIVERS_USB_RNDIS_HOST 1
#define LOSCFG_FS_JFFS 1
#define LOSCFG_DRIVERS_HIEVENT 1
#define LOSCFG_KERNEL_SMP 1
#define LOSCFG_ARCH_FPU_VFP_NEON 1
#define LOSCFG_DRIVERS_EMMC 1
#define LOSCFG_DRIVERS_USB_WIRELESS 1
#define LOSCFG_KERNEL_SMP_LOCKDEP 1
#define LOSCFG_CPUP_INCLUDE_IRQ 1
#define LOSCFG_KERNEL_SMP_TASK_SYNC 1
#define LOSCFG_FS_FAT_CACHE 1
#define LOSCFG_DRIVERS_HDF_LCD_ICN9700 1
#define LOSCFG_DRIVERS_MMC 1
#define LOSCFG_SECURITY 1
#define LOSCFG_FS_VFS_BLOCK_DEVICE 1
#define LOSCFG_FS_RAMFS 1
#define LOSCFG_DRIVERS_HDF_WIFI 1
#define LOSCFG_DRIVERS_USB_HID_CLASS 1
#define LOSCFG_DRIVERS_USB_4G_MODEM 1
#define LOSCFG_LIB_LIBC 1
#define LOSCFG_FS_FAT_CHINESE 1
#define LOSCFG_DRIVERS_NETDEV 1
#define LOSCFG_KERNEL_CPUP 1
#define LOSCFG_DRIVERS_HDF_USB 1
#define LOSCFG_DRIVERS_VIDEO 1
#define LOSCFG_ARCH_FPU_VFP_V4 1
#define LOSCFG_DRIVERS_EMMC_HS200 1
#define LOSCFG_DRIVERS_HDF_PLATFORM_SPI 1
#define LOSCFG_DRIVERS_USB_HOST_DRIVER 1
#git fetch
git pull origin master
#git pull --rebase origin master
git add -A
git commit -m '将markdown部分移到https://gitee.com/weharmony/docs
搜索 @note_pic 可查看绘制的全部字符图
搜索 @note_why 是尚未看明白的地方,有看明白的,请Pull Request完善
搜索 @note_thinking 是一些的思考和建议
搜索 @note_#if0 是由第三方项目提供不在内核源码中定义的极为重要结构体,为方便理解而添加的。
搜索 @note_good 是给源码点赞的地方
https://weharmony.github.io/
公众号: 鸿蒙内核源码分析
'
git push origin master
git push gitee_origin master
git push github_origin master
git push coding_origin master
#git remote add github_origin git@github.com:kuangyufei/kernel_liteos_a_note.git
#git remote add gitee_origin git@gitee.com:weharmony/kernel_liteos_a_note.git
#git remote add origin git@codechina.csdn.net:kuangyufei/kernel_liteos_a_note.git
#git remote add coding_origin git@e.coding.net:weharmony/harmony/kernel_liteos_a_note.git
python ../../build/lite/build_ext_components.py --path=/harmony/kernel/liteos_a --prebuilts=sh\ build.sh\ hi3516dv300\ clang\ release --command=make\ clean\ OUTDIR=/harmony/out/ipcamera_hi3516dv300/obj/kernel/liteos_a\ \&\&\ make\ rootfs\ VERSION=\"OpenHarmony\ 1.0\"\ -j\ 16\ OUTDIR=/harmony/out/ipcamera_hi3516dv300/obj/kernel/liteos_a
\ No newline at end of file
#include <stdio.h>
#include <stdarg.h>
#include "turing.h"
LITE_OS_SEC_TEXT UINTPTR LOS_Align(UINTPTR addr, UINT32 boundary)
{
if ((addr + boundary - 1) > addr) {
return (addr + boundary - 1) & ~((UINTPTR)(boundary - 1));
} else {
return addr & ~((UINTPTR)(boundary - 1));
}
}
void b(){
UINT8 w[3]={0};
PTE_T pte1BasePtr = 0x11100000;
VADDR_T vaddr = 0x80738903;
PTE_T l1Entry = pte1BasePtr + vaddr >> MMU_DESCRIPTOR_L1_SMALL_SHIFT;
printf("pte1BasePtr ad: %x\n",&pte1BasePtr);
printf("w[1] ad: %x\n",&w[1]);
printf("vaddr: %x\n",(MMU_DESCRIPTOR_L1_SMALL_SIZE >> 12));
printf("l1Entry: %x\n",l1Entry);
printf("MMU_DESCRIPTOR_L1_SMALL_MASK:%x\n",MMU_DESCRIPTOR_L1_SMALL_MASK);
printf("MMU_DESCRIPTOR_L1_SMALL_FRAME:%x\n",MMU_DESCRIPTOR_L1_SMALL_FRAME);
printf("pa: %x\n",MMU_DESCRIPTOR_L1_SECTION_ADDR(l1Entry) + (vaddr & (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1)));
}
void a(){
printf("BITMAP_BITS_PER_WORD %d\n",BITMAP_BITS_PER_WORD);
printf("BITMAP_NUM_WORDS %d\n",BITMAP_NUM_WORDS(1UL << 8));
}
void round1(){
int a = 0xFF;
//printf("a>> %d\n",a>>3);
//printf("a/ %d\n",a/8);
printf("ROUNDUP %d,%d,%d\n", ROUNDUP(7,4) ,ROUNDUP(8,4) ,ROUNDUP(9,4));
printf("ROUNDDOWN %d,%d,%d\n", ROUNDDOWN(7,4),ROUNDDOWN(8,4),ROUNDDOWN(9,4));
printf("ROUNDOFFSET %d,%d,%d\n", ROUNDOFFSET(7,4),ROUNDOFFSET(8,4),ROUNDOFFSET(9,4));
}
void arg_test(int i, ...)
{
int j=0,k=0;
va_list arg_ptr;
va_start(arg_ptr, i);
printf("&i = %p\n", &i);//打印参数i在堆栈中的地址
printf("arg_ptr = %p\n", arg_ptr);//打印va_start之后arg_ptr地址
printf("%d %d %d\n", i, j, k);
j=va_arg(arg_ptr, int);
printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
printf("%d %d %d\n", i, j, k);
printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
k=va_arg(arg_ptr, int);
printf("%d %d %d\n", i, j, k);
printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
/*这时arg_ptr应该比参数i的地址高sizeof(int)个字节,即指向下一个参数的地址,如果已经是最后一个参数,arg_ptr会为NULL*/
va_end(arg_ptr);
printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
printf("%d %d\n", i, j);
}
int main()
{
int size = 4097;
size = LOS_Align(size, PAGE_SIZE);//必须对齐
printf("sizeof(int) %d\n",size);
//round1();
//arg_test(99, 4,8,9);
//size = sizeof(LOS_DL_LIST) << OS_TSK_SORTLINK_LOGLEN;
//printf("LOS_DL_LIST %d\n",sizeof(LOS_DL_LIST *));
//printf("size %d\n",size);
return 0;
}
// gcc -o main main.c
//armv7-a clang (trunk)
#include <stdio.h>
#include <math.h>
int square(int a,int b){
return a*b;
}
int fp(int b)
{
int a = 1;
return square(a+b,a+b);
}
int main()
{
int sum = 1;
for(int a = 0;a < 100; a++){
sum = sum + fp(a);
}
return sum;
}
\ No newline at end of file
//编译器: armv7-a clang (trunk)
square(int, int):
sub sp, sp, #8 @sp减去8,意思为给square分配栈空间,只用2个栈空间完成计算
str r0, [sp, #4] @第一个参数入栈
str r1, [sp] @第二个参数入栈
ldr r1, [sp, #4] @取出第一个参数给r1
ldr r2, [sp] @取出第二个参数给r2
mul r0, r1, r2 @执行a*bR0,返回值的工作一直是交给R0
add sp, sp, #8 @函数执行完了,要释放申请的栈空间
bx lr @子程序返回,等同于mov pc,lr,即跳到调用处
fp(int):
push {r11, lr} @r11(fp)/lr入栈,保存调用者main的位置
mov r11, sp @r11用于保存sp,函数栈开始位置
sub sp, sp, #8 @sp减去8,意思为给fp分配栈空间,只用2个栈空间完成计算
str r0, [sp, #4] @先保存参数值,放在SP+4,此时r0中存放的是参数
mov r0, #1 @r0=1
str r0, [sp] @再把1也保存在SP的位置
ldr r0, [sp] @SP的值给R0
ldr r1, [sp, #4] @SP+4的值给R1
add r1, r0, r1 @执行r1=a+b
mov r0, r1 @r0=r1,r0,r1传参
bl square(int, int)@mov lr, pc mov pc square(int, int)
mov sp, r11 @函数执行完了,要释放申请的栈空间
pop {r11, lr} @弹出r11lr,lr是专用标签,弹出就自动复制给lr寄存器
bx lr @子程序返回,等同于mov pc,lr,即跳到调用处
main:
push {r11, lr} @r11(fp)/lr入栈,保存调用者的位置
mov r11, sp @r11用于保存sp,函数栈开始位置
sub sp, sp, #16 @sp减去8,意思为给main分配栈空间,只用2个栈空间完成计算
mov r0, #0 @初始化r0
str r0, [r11, #-4] @作用是保存SUM的初始值
str r0, [sp, #8] @sum将始终占用SP+8的位置
str r0, [sp, #4] @a将始终占用SP+4的位置
b .LBB1_1 @跳到循环开始位置
.LBB1_1: @循环开始位置入口
ldr r0, [sp, #4] @取出a的值给r0
cmp r0, #99 @99比较
bgt .LBB1_4 @大于99,跳出循环 mov pc .LBB1_4
b .LBB1_2 @继续循环,直接 mov pc .LBB1_2
.LBB1_2: @符合循环条件入口
ldr r0, [sp, #8] @取出sum的值给r0,sp+8用于写SUM的值
str r0, [sp] @先保存SUM的值,SP的位置用于读SUM
ldr r0, [sp, #4] @r0用于传参,取出A的值给r0作为fp的参数
bl fp(int) @mov lr, pcmov pc fp(int)
mov r1, r0 @fp的返回值为r0,保存到r1
ldr r0, [sp] @取出SUM的值
add r0, r0, r1 @计算新sum的值,R0保存
str r0, [sp, #8] @将新sum保存到SP+8的位置
b .LBB1_3 @无条件跳转,直接 mov pc .LBB1_3
.LBB1_3: @完成a++操作入口
ldr r0, [sp, #4] @SP+4中记录是a的值,赋给r0
add r0, r0, #1 @r0增加1
str r0, [sp, #4] @把新的a值放回SP+4里去
b .LBB1_1 @跳转到比较 a < 100
.LBB1_4: @循环结束入口
ldr r0, [sp, #8] @最后SUM的结果给R0,返回值的工作一直是交给R0
mov sp, r11 @函数执行完了,要释放申请的栈空间
pop {r11, lr} @弹出r11lr,lr是专用标签,弹出就自动复制给lr寄存器
bx lr @子程序返回,跳转到lr处等同于 MOV PC, LR
\ No newline at end of file
typedef unsigned int UINTPTR;
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned int UINT32;
typedef unsigned long PTE_T;
typedef unsigned long VADDR_T;
#define IS_ALIGNED(a, b) (!(((UINTPTR)(a)) & (((UINTPTR)(b)) - 1)))
#define PAGE_SIZE (0x1000U) // 页大小4K
#define ROUNDUP(a, b) (((a) + ((b) - 1)) & ~((b) - 1))
#define ROUNDDOWN(a, b) ((a) & ~((b) - 1))
#define ROUNDOFFSET(a, b) ((a) & ((b) - 1))
#define MMU_DESCRIPTOR_L1_SMALL_SIZE 0x100000 //1M
#define MMU_DESCRIPTOR_L1_SMALL_MASK (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1)
#define MMU_DESCRIPTOR_L1_SMALL_FRAME (~MMU_DESCRIPTOR_L1_SMALL_MASK)
#define MMU_DESCRIPTOR_L1_SMALL_SHIFT 20
#define MMU_DESCRIPTOR_L1_SECTION_ADDR(x) ((x) & MMU_DESCRIPTOR_L1_SMALL_FRAME)
#define OS_TSK_HIGH_BITS 3U
#define OS_TSK_LOW_BITS (32U - OS_TSK_HIGH_BITS) //29
#define OS_TSK_SORTLINK_LOGLEN OS_TSK_HIGH_BITS //3U
#define BITMAP_BITS_PER_WORD (sizeof(UINTPTR) * 8)
#define BITMAP_NUM_WORDS(x) (((x) + BITMAP_BITS_PER_WORD - 1) / BITMAP_BITS_PER_WORD)
#ifndef LITE_OS_SEC_TEXT
#define LITE_OS_SEC_TEXT /* __attribute__((section(".text.sram"))) */
#endif
typedef struct LOS_DL_LIST {
struct LOS_DL_LIST *pstPrev; /**< Current node's pointer to the previous node */
struct LOS_DL_LIST *pstNext; /**< Current node's pointer to the next node */
} LOS_DL_LIST;
//--------------------------------------------------------------------------------------------------------------------
#define HEAP_CAST(t, exp) ((t)(exp))
#define HEAP_ALIGN 4
#define HEAP_TAIL_NODE_SIZE_THRESHOLD 1024
#define ALIGNE(sz) (((sz) + HEAP_ALIGN - 1) & (~(HEAP_ALIGN - 1)))
#define OS_MEM_ALIGN(value, align) (((UINT32)(UINTPTR)(value) + (UINT32)((align) - 1)) & \
(~(UINT32)((align) - 1)))
#define OS_MEM_ALIGN_FLAG 0x80000000
#define OS_MEM_SET_ALIGN_FLAG(align) ((align) = ((align) | OS_MEM_ALIGN_FLAG))
#define OS_MEM_GET_ALIGN_FLAG(align) ((align) & OS_MEM_ALIGN_FLAG)
#define OS_MEM_GET_ALIGN_GAPSIZE(align) ((align) & (~OS_MEM_ALIGN_FLAG))
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册