道生一、一生二、二生三、三生万物,这是认识事物的思想;
太极生两仪,两仪生四象,四象生八卦,八卦衍万物,这是演算变化的工具。
接下来讨论系统移植,操作系统非常庞大,但如果能明白其中的道理,通常能在纷扰繁杂的表象中,探寻其生长的轨迹,如能遵循事物变化的规律,认知便能通达与自然;
同时在系统移植过程中,会涉及到不同的编程语言和配置文件,我们要明白一点,编程语言和配置文件本质上都是工具,而工具的意义在于帮助我们解决问题,所以聚焦于问题本身而非工具,也许能更轻松的掌握和使用工具。
理工类的知识与技能价值转化快,也非常实用,因此在快节奏的生活中,我们可能会忽略传统文化的作用,有时候适当“慢”一点,或许会看到不一样的风景。
操作系统的移植和使用过程中,能看到一种力的变化,用小一点的力引导大一点的力,然后用大一点的力来引导更大力量的出现,达到“四两拨千斤”的效果。
对应到系统移植工作中,既SOC内置BROM程序加载U-Boot,U-Boot加载内核,内核加载根文件系统这样的流程,后续章节我们遵循这种规律逐级探讨,以求能完成系统的移植和使用。
下面简要介绍一下BROM、U-Boot、kernel、rootfs几个功能板块,让我们跟随操作系统启动的脚步,先粗览一下沿途的“著名景点”。
BROM:on-chip Boot ROM
BROM是R528的片上只读存储器单元,芯片厂家在其上固化了一段加载程序。BROM位于芯片0X0000 0000~0X0000 BFFF地址位,占据48KB地址空间,当芯片上电时,R528会从0地址位(0X0000 0000)开始取指执行,既从BROM中取指执行。
BROM包含以下功能:
1、支持CPU0启动
2、支持通过USB或SD card强制升级
3、支持通过配置GPIO端口或eFuse来选择启动媒介(eMMC、SPI Flash、USB、SD card等)
4、支持正常启动模式和安全启动模式
5、安全BROM仅加载经过认证的固件
6、安全BROM需确保安全引导处于受信任的环境中
U-Boot:Universal Boot Loader
U-Boot(通用启动加载程序)是一个非常通用的嵌入式系统启动加载程序,支持多种不同的计算机体系架构,包括ARM、MIPS、X86、RISC-V等,它也是一套在GNU通用公共许可证之下发布的自由软件。
在嵌入式操作系统中,U-Boot在操作系统内核运行之前运行,它可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
U-Boot可以实现以下主要功能
1、引导内核
能从存储介质(eMMC、SPI Flash、SD Card等)上加载内核镜像到DRAM指定位置并运行。
2、量产&升级
包括卡量产,USB量产,私有数据烧录,固件升级
3、开机提示信息
开机能显示启动LOGO图片(BMP格式)
kernel:内核
操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的底层支持软件,而Kernel则是操作系统的核心。
Kernel主要包含以下模块(或组件):
1、存储管理
2、CPU和进程管理
3、文件系统
4、设备管理和驱动
5、网络通信
6、系统初始化(引导)
7、系统调用
rootfs:Root File System
rootfs根文件系统是内核启动时所挂载的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚步和服务等加载到内存中去运行。
OpenHarmony文件系统对外提供基于POSIX的标准文件访问接口,包含一系列的标准libc函数。libc库的函数通过Syscall进入内核态,调用VFS提供的相关函数功能。
从这里开始,我们就能使用很多OpenHarmony操作系统的特色功能了,如分布式软总线、用户程序框架、ArkUI等。