Brick

注解Linux kernel,获得《程序逻辑抽取器》活动进行中

下载PLEA

华为鸿蒙微内核之我见

前日对鸿蒙微内核(Huawei LiteOS Kernel是轻量级的实时操作系统)进行了抽取,抽取后做了“简单”了解,总感觉有些话要说。

第一个就是内核中包含中文注释(arch/arm/arm-m/include/los_exc.h),其实对于我不懂英文的更好, 但是鸿蒙微内核是“全球”开源的,这就会产生影响。 记得以前抽取Linux kernel时,就有极个别注释是乱码, 这会影响我的心情。不知一个非中文阅读者打开后的心情。

第二就是函数命名规则,每个函数头必加LOS_或os, 从命名规范讲,完全没有问题,或者说非常规范。 但还是“全球”开源问题,假如我在内核上面开发, 每次调用函数时,必须多敲2个或4个字符,而且还要大写, 我会不爽的。同时这会给我局限性很强,开放性不足的感觉。 这也存在于变量、类型和文件命名上。

当然,以上两点也好理解,因为华为最初并非按开源去做的这个系统。 这应该是一个非常棒的企业内部项目,但作为开源项目,可能需要商榷!

建议华为的开发帮助手册也提供英文版本,而不只是中文的。

另外,针对英国电信读华为代码困难,原因可能与中文注释有关。 为此华为启动代码重构项目,如果华为代码为c或c++(工业大部分是c), 程序逻辑抽取器能为华为节约至少三分之二的成本, 同时避免源代码直接暴露给用户,实现代码安全。 期望华为能够看到这个建议,同时请看到这条信息的,能够转告华为。

关于鸿蒙社区培养,我想再说说:

社区的壮大,主要看应用是否丰富,为解决丰富应用问题, 我的想法是针对已有应用,在不需要修改源码的情况下, 通过编译或源码转换等手段,使现有的应用可以在鸿蒙系统上运行。 这就像生产企业,针对不同的销售商,采用不同的包装一样, 这样企业的成本变化不大,经销商也会有面子,实现共赢。

具体做法为:

1.编译方法:提供针对类库,接口具有针对性,内部实现为鸿蒙内核。 这个类似于Wine,但应与Wine存在本质区别,即

a.从使用者角度看,不应存在像Wine的那道墙。

b.从开发者角度看,这是与针对系统一样的编译环境。

c.从系统看,没有虚拟层,这是为了保证效率。

去年我就想启动这样一个开源项目,考虑精力投入太大,还是放弃了! 项目应该是一个万向接口,实现应由不同系统自己耦合, 例如windows到redhat,同样也可以redhat到windows。 目前问题主要存在于系统耦合不佳,致使跨平台开发和迁移繁琐, 如能实现,将极大减轻开发负担,同时对社区培养有利。

2.源码转换法:针对其他系统的源码,通过工具转换, 生成可在鸿蒙下编译的源码。 这个方法可行性不佳,原因是最终的工作量可能大于方法一。

以上方案存在以下几个问题:

1.成本投入非常巨大,且绝大多数都是由鸿蒙承担, 没有办法,谁让鸿蒙是后来者呢,与开拓者的投入比较, 心里就会安生了。

2.法律问题,我不知道会涉及多少法律问题,但肯定存在。

武松山于2020.4.14

转载请注明出处