Hi3516的SAMGR--系统服务框架子系统-12-阶段性总结 原创 精华

liangkz_梁开祝
发布于 2021-7-3 10:33
浏览
2收藏

Hi3516的SAMGR--系统服务框架子系统-12

阶段性总结

liangkz 2021.07.03

 

从《系统服务框架子系统》系列文章(见专栏文章列表)发布的6月初到现在的7月初,刚好一个月,基本上把鸿蒙的轻量系统和小型系统的 //foundation/distributedschedule/samgr_lite/  目录下的代码做了一个比较清晰的理解了,中间走过弯路,有过中断,也有半夜爬起来撸代码的时候,但基本上来看,还是值得的,累与成就感并存。

前期有段时间主要是在代码中埋大量的log,通过的整理和增减log来理解程序流程,理解的东西越多,需要的log就越少。

当对代码的理解卡在某个地方的时候,百度也不给力,真的是如鲠在喉很难受,一旦突破了关键点,顿时感觉醍醐灌顶,有如神助。

后面就是一边整理理解体系,一边制表/画图/写字,码字速度跟不上思维的速度了。

 

当然,还有不少细节的地方有待进一步挖掘和研究,估计还能挖出不少知识盲点,比如对接口的访问权限的使用;有些相关联的地方也有待延伸过去理解,比如ipc通信那边的ipc_lite;而broadcast service/feature在小型系统中的作用也还没有搞清楚(只看见Init,但是没看见真正调用过相关接口);但大体上,这个模块就先阶段性地结束了。

 

至于标准系统的这个子系统,我粗略对比了一下代码,感觉可能是使用了一套完全不一样的实现方法,并且是用C++来实现的,不仅仅是这个子系统,其他子系统/组件,也是这么个情况。比如上一篇提到的appspawn组件,小型系统是appspawn_lite,标准系统是appspawn_standard,一比较你会发现完全是两码事。

所以再回到//foundation/distributedschedule/目录下,

Hi3516的SAMGR--系统服务框架子系统-12-阶段性总结-鸿蒙开发者社区

轻量系统和小型系统跑的是 xxx_lite,标准系统跑的是 xxx,标准系统的还是C++实现的,很疑惑这代码的复用性和延续性,是不是有点问题?(有待未来的分析确认)。

 

 

不管怎么样,对于《系统服务框架子系统》系列文章,如果大家发现我有理解不到位或者理解错误的地方,欢迎指出来让我改正,以免误人子弟。感谢!

 

 

 

 

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2021-7-3 10:33:32修改
5
收藏 2
回复
举报
13条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

楼主持之以恒的心态值得学习,深夜撸码辛苦啦,也要注意身体呀.

回复
2021-7-5 10:09:37
liangkz_梁开祝
liangkz_梁开祝 回复了 红叶亦知秋
楼主持之以恒的心态值得学习,深夜撸码辛苦啦,也要注意身体呀.

没有深夜撸过代码的程序猿,不是好的攻城狮。

回复
2021-7-5 13:30:36
人生浪费指南
人生浪费指南

楼主有兴趣扒一下标准系统的SAMGR实现么,初看跟小型系统的设计不同,接口也都不一样,有点懵

回复
2021-7-14 20:24:05
liangkz_梁开祝
liangkz_梁开祝 回复了 人生浪费指南
楼主有兴趣扒一下标准系统的SAMGR实现么,初看跟小型系统的设计不同,接口也都不一样,有点懵

很想,但C++不是我的强项~~

我还是希望先集中精力把小型系统的软总线和驱动开发两大块先搞清楚。

1
回复
2021-7-14 20:34:26
qhzj1810
qhzj1810 回复了 人生浪费指南
楼主有兴趣扒一下标准系统的SAMGR实现么,初看跟小型系统的设计不同,接口也都不一样,有点懵

标准的samgr 不是手机的吗 手机的代码没有开源吧 你说的这个代码仓有路径吗 学习一下 谢谢

回复
2021-8-15 19:30:11
liangkz_梁开祝
liangkz_梁开祝 回复了 qhzj1810
标准的samgr 不是手机的吗 手机的代码没有开源吧 你说的这个代码仓有路径吗 学习一下 谢谢

标准系统是手机用的,开发分支,包含了所有代码:

 $repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify

 $repo sync

 

LTS分支目前还没有标准系统的代码,只有小型系统和轻量系统的代码:

$repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony_release_v1.1.0 --no-repo-verify
$repo sync

回复
2021-8-15 21:19:31
qhzj1810
qhzj1810 回复了 liangkz_梁开祝
标准系统是手机用的,开发分支,包含了所有代码: $repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify $repo sync LTS分支目前还没有标准系统的代码,只有小型系统和轻量系统的代码: $repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony_release_v1.1.0 --no-repo-verify$repo sync

感谢 受益匪浅

回复
2021-8-17 23:55:43
周利宾
周利宾

楼主,看了你的整个服务子系统的分析,写的非常好啊~想请教下:

如果只在mcu平台跑的话,后面第八章开始是不是都不适用MCU?

回复
2021-12-28 11:48:21
liangkz_梁开祝
liangkz_梁开祝 回复了 周利宾
楼主,看了你的整个服务子系统的分析,写的非常好啊~想请教下: 如果只在mcu平台跑的话,后面第八章开始是不是都不适用MCU?

“只在mcu平台跑的话”,我估计只能跑轻量系统,也就是只涉及2/3/4三篇的内容。

回复
2021-12-28 12:09:23
周利宾
周利宾 回复了 liangkz_梁开祝
“只在mcu平台跑的话”,我估计只能跑轻量系统,也就是只涉及2/3/4三篇的内容。

我也是这么理解的,多谢楼主!

还有你的log是跑真机跑出来的吗?有没有PC端的模拟区可以跑?

回复
2021-12-28 14:13:15
liangkz_梁开祝
liangkz_梁开祝 回复了 周利宾
我也是这么理解的,多谢楼主! 还有你的log是跑真机跑出来的吗?有没有PC端的模拟区可以跑?

是真的开发平台跑的log。

你没有平台的话,可以了解一下//vendor/ohemu/ 目录下的东西,看一下readme,操作试试看。

我没有试过qemu,不大清楚跑起来会是什么样子。

1
回复
2021-12-28 15:09:25
周利宾
周利宾

博主,又有个问题想跟你请教下:

我还是有理解service和feature的联系关系是啥,还有feature的作用是啥?

还有Iunknown的fun的作用?

能不能再讲讲?

回复
2021-12-29 10:26:51
liangkz_梁开祝
liangkz_梁开祝 回复了 周利宾
博主,又有个问题想跟你请教下: 我还是有理解service和feature的联系关系是啥,还有feature的作用是啥? 还有Iunknown的fun的作用? 能不能再讲讲?

service和feature的关系,可以简单类比为公司和公司内部各个职能部门之间的关系,

公司(service)提供与别的公司(service)进行交互的相关功能,如对外通信和对内分发信息指派任务的一些具体操作,而公司内部的职能部门(feature)则对具体的任务进行操作和实现,不同的职能部门可以实现不同的功能。

 

Iunknown 简单来说就是为了用C语言实现面向对象编程的多态特性,Iunknown 接口类似于C++/Java的虚基类,具体使用你可以网络搜索相关文章来了解一下。

 

也可以看

Hi3861的SAMGR--系统服务框架子系统-2-关键结构体分解

OHOS的系统服务框架子系统(SAMGR)代码解读--3--关键结构体的分解

这里的分析。

 

1
回复
2021-12-29 12:07:09
回复
    相关推荐