重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
之前在树莓派4b上点亮了OHOS3.0,不过内核是用tftp拉取的,根文件系统挂在了NFS上,拔了网线就无法启动。当然这么操作只是为了方便调试,而最终需要的是一个可以烧录到TF卡上的img镜像文件。这就需要将所有调试好的内容添加到OHOS3.0的编译框架,本以为是很简单的事情,好家伙,整了这么久,感觉添加编译框架比移植本身更复杂。于是我整理了添加树莓派单板到编译框架的内容,希望对各位有所帮助,为大家避坑。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网络空间、营销软件、网站建设、郊区网站维护、网站推广。
主要参考 hisilicon build组件仓,添加一个products编译组件,这个组件是在产品配置文件中指定的。比如
productdefinecommonproductsRPI4B.json
其他部分参考Hi3516,但是其中2条,指定单板组件路径,并添加组件。如果删除这两条,将不能编译内核,只生成OHOS的文件系统。
接下来在device目录下,新建一个raspberrypi编译组件文件夹,并添加 ohos.build 文件。和前面产品配置文件中的设置对应起来了。
deviceraspberrypibuildohos.build
新建 deviceraspberrypibuildBUILD.gn 当然每个厂家不可能只有1个板子,如果有其他单板就在这里指定,比如树莓派2B、3B等
既然前面指定了rpi4b的编译配置组件,那么就在 deviceraspberrypi 新建一个 rpi4b 的目录,可以参考 hi3516dv300 build组件
deviceraspberrypirpi4bBUILD.gn
至此一个rpi4b build组件就添加到OHOS3.0的编译框架了,之后相关内容添加到这个文件夹下就可以了。
接下来分析下目前移植了树莓派4B的哪些内容,如何将这些内容编译进OHOS3.0。
关于补丁可以参考 Patch组件,可以得知内核编译由kernel.mk来执行
kernellinuxbuildkernel.mk
所以补丁文件需要放到正确的路径下,以正确的名字命名就可以patch到内核。
hdf.patch补丁文件,现在还没有移植HDF相关内容,所以可以先使用Hi3516的
rpi4b.patch补丁文件,使用树莓派的官方镜像,
kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig
内核配置文件目前已知的需要开启下面内容,但是肯定不止这些,以后会继续更新
Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驱动程序是 VC4,VideoCore VI 驱动程序的 V3D。内核已经提供驱动,参考rpi4b_standard_defconfig将驱动直接编入到内核。
同时需要在config.txt中开启设置
OHOS中修改weston的配置文件,指定显示驱动
systemetcweston.ini
具体思路就是先查找设备号,根据设备号找到驱动程序。
前面内核配置的时候rpi4b_standard_defconfig中已经将触摸驱动编入内核,所以后面不需要在init加载模块了,修改下eudev的配置文件即可。
third_partyeudevrules.d ouchscreen.rules
正常情况下内核是由uboot进行引导的,而且OHOS默认生成uImage。但是树莓派自带BootLoader,虽然可以先用树莓派自带的BootLoader启动uboot,再用uboot加载uImage,但是这样会比较麻烦,而且会增加启动时间。不过目前 zImage是写死在kernel.mk中的,没办法改下编译脚本把。
kernellinuxbuildkernel.mk 将 uImage 改为 zImage modules dtbs
kernellinuxbuildbuild_kernel.sh
kernellinuxbuildBUILD.gn
kernellinuxbuildkernel_module_build.sh
这里内核编译会依赖product_path="vendor/$product_company/$product_name"下的hdf.hcs文件,得先新建一个应付下,不然会报下面这个错误。
ninja: error: '../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs', needed by 'gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb', missing and no known rule to make it
新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs
对于镜像烧录,Hi3516会将uImage、system.img、vendor.img等镜像烧写到emmc,但是树莓派使用TF卡启动,所以需要对TF卡进行分区,然后复制对应的内容到各个分区。首先制作树莓派boot目录,这个用来目录存放树莓派设备树、config.txt、cmdline.txt、内核镜像等信息。写一个简单的mkboot.py脚本来实现这个功能,位置在码仓rpi4bdeviceraspberrypiimagesmkboot.py将会生成boot.img。
为了方便烧录,需要将boot.img、system.img、updater.img、vendor.img、userdata.img合并成一个rpi4b.img。还是写一个简单的脚本来处理这个步骤rpi4bdeviceraspberrypiimagesmkboot.py。
不过有个问题,主分区只支持4个,所以updater.img暂时先不合并了,这个问题等以后再来处理。
最后将会得到一个rpi4b.img的镜像文件,将这个文件烧录到SD卡就可以了。
Linux:可以使用dd命令
windows:使用Win32 Disk Imager工具烧录即可。
到这里总算是跑通了一个完整的添加新单板的流程,只不过目前只适配了显示和触摸。接下来打算尝试HDF或者distributed部分。
鸿蒙不是基于linux开发的,是基于微内核开发的。
鸿蒙微内核是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级。
鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架。
扩展资料:
华为推出的鸿蒙系统试图解决物联网时代多终端开发难题。余承东介绍,鸿蒙系统拥有分布式OS架构、确定时延引擎和高性能IPC技术等新特性。
可以让鸿蒙OS实现一端开发、多端部署。这个万物互联时代带来的新机遇,终于被华为等到了,而华为在自研软硬件上的储备,要远超普通人的想象。
据华为技术老兵近期发表的《华为操作系统28年史》介绍,华为的操作系统经过了独立开发、基于第三方微内核开发RTOS、基于开源的嵌入式Linux宏内核开发等多个历程。
华为先后开发出了路由器和数据通信交换机操作系统VRP、云计算操作系统Fusion Sphere、服务器操作系统欧拉Euler OS和物联网嵌入式操作系统Lite OS。
参考资料来源:百度百科—鸿蒙
参考资料来源:人民网—鸿蒙出世 国产操作系统破局?
1、最近鸿蒙炒的火热,19年就说ipc是谷歌fuchsia的5倍,但他当时没有对比宏内核,正常宏内核的ipc效率肯定很高。
我自己觉得微内核确实是体积小了但是外面的那些驱动什么的又需要开发者去开发,这些开发者前期也就只有华为的开发人员去弄
鸿蒙独立了跑到国外谷歌全家桶又是一个不可逾越的鸿沟,GMS用不了国外就没希望,何况fuchsia这个谷歌的备用还在那摆着,所以鸿蒙切入点在国内,以万物互联为主题是最佳发展方式。
个人比较喜欢鸿蒙的一些东西,也相信它一定会成功,或许3年或许更久,但是现在取代安卓是不可能的的,不过打破垄断全新开源,重新定义5G万物互联时代,作为一个学生还是开了眼的。
2、相对与安卓来说全场景、分布式是鸿蒙OS2.0的最大优势,鸿蒙OS2.0首先在分布式能力上经行了提升分布式软总线、分布式数据管理、并提升了分布式安全能力,(手表电视 汽车 中控外加美的九阳老板电器)、EMUI11借鉴了鸿蒙的分布式技术,多屏协同。
3、GPL:谷歌曾提出影响开源世界最大的障碍就是GPL,GPL规定要求代码使用者代码衍生出来的东西永远开源。谷歌为了隔离gpl的开源,提出了Apache(阿帕奇)协议,就是我开源你随便。
谷歌把一个魔改后的linux作为内核封装起来,中间加了一层类库,让其他所有部分对内核的调用,都像是两个软件之间的调用一样,然后把所有涉及到GPL授权的代码全部替换重写,开源并以Apache协议授权。
这就导致linux社区不满,因为它违反了Linux开源精神如果非强制会导致没人愿意开源,2012年安卓在linux分支树上被永远除名
话说回来要不是Apache哪里来的EMUI Flyme Coloros,要是GPL的话那不是给人打工吗。
4、安卓的linux内核包含了权限管理,CPU指令适配、设备驱动等等
微内核简单理解就是:裁剪了一下,更小了,手机平板手表通用,手机摄像头给手表用,内核一样,手机上有摄像头的设备驱动,不同于wifi、蓝牙华为可以通过分布式软总线来实现信息的传递,这一步5G起到了关键作用。关于分布式软总线的介绍在博客最后。
优势1:灵活的全场景适用,不同屏幕大小、功耗和性能要求的设备可以灵活选择,这样一个应用就有可能在多个设备或者华为所说的全设备上运行,这对于5G万物互联来说非常方便
优势2:安全,恶意代码只能在某个模块下运行,不再是宏内核整个root权限下随便运行
5、当前鸿蒙智慧屏上鸿蒙1.0是linux 鸿蒙 liteos三核并存,因为他生存初期必须要保证鸿蒙系统的可用性,他前期要兼容安卓,一点一点替换安卓的驱动等等,开源的世界有现成的就没人会去造轮子。
6、对于鸿蒙的分布式,也就是软硬件资源共享,其实是基于微内核的,宏内核要实现ipc通信就需要用户空间进程调度到内核空间内核空间再到另一个用户进程空间实现资源传递,宏内核的内核空间是共享的,所谓的新建一个进程可以说是只是说新建了自己独立的用户空间,这里面的ipc通信效率目前来说是要比微内核的效率要高的,而华为的分布式ipc是要通过软总线来实现的,如果借助tcp来实现安全可以保证,但是协议繁琐效率降低,这对于我们物联网的交互来说是不可采取的,所以软总线相当于一个魔改的tcp。
分布式软总线将原本计算机网络通讯协议七层结构中的 表示层、会话层、传输层和网络层等协议精简为一层 ,称为 分布式软总线的极简协议 ,能提升有效载荷。
通过报文简化、包头简化、交互简化,基于应用场景的缓冲机制等方式,提升有效的传输负荷、解决传统 TCP/IP 协议过于复杂的协议层次模型、层层增加包头和解包,充分发挥物理通信通道的最大效能。
通过对协议的优化,分布式软总线无线连接、高带宽、低时延、低功耗、安全接入的优点。分布式软总线实现小于20ms的低时延,端到端时延小于20ms,有效吞吐量达到1.2Gbps,抗丢包性达到25%, 高性能IPC将进程间的通信效率提升了5倍 。
简单理解可以把它想象成优化的tcp更快实现资源共享。
鸿蒙系统的cmd命令在文件中。根据查询相关公开信息显示配备鸿蒙系统的电脑使用的任然是Windows系统,所以在文件夹中开启cmd命令。命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在windows环境下,命令行程序为cmd.exe。