gonk,gecko ,gaia
大纲:
1.进程关系,init,b2g,nuwa,content,
2.inter process comunication (进程间通信,ipc,ipdl)
3.组件模块层次,流程,结构。
4.结合,写两“应用”,进程间,跨 层次通信。
高度关注官方文档!!!
gonk = aosp(Android kernel) + HAL(Android)???
gonk相对于gecko的gecko接口集(Linux发行版/定制版/修改版)
各(XPCOM)组件之间ipc通信进行交互。gecko 由many xpcom 组件组成,gecko组织结构如何?分别有哪些组件?
参考:
https://blog.csdn.net/xiaoma_pedro/article/details/81030930
Gonk 是 Firefox OS 平台底层的操作系统, 包括基于 Android Open Source Project (AOSP) 的 Linux Kernel 和用户空间硬件抽象层 (HAL) 。有关 Firefox OS 架构和 Gonk 如何在其中适配的知识,请参考B2G OS architecture指南。
1.overview
Gonk 在 Firefox OS stack 中可看作是 kernel 层级的组件,在 Gecko 和 底层硬件中间充当接口的作用。Gonk 对底层的硬件进行控制,并且将硬件信息及操控接口暴露给 Gecko中的 Web APIs。Gonk 可以看作是一个 黑盒, 在屏幕后面做了所有复杂细节的工作用于在硬件层级上对 mobile device 进行控制。
Gonk 只是一个简单的 Linux 发行版本,其中包括了 Android 的一些组件(如 GPS 和 Camera)以及由 Mozilla 扩展的常用的开源工程,如 libusb, bluez, 进而将所有的层级集成到 Firefox OS 架构中。这种设计方式对 OEM 将软件组件从其他 Android 实现上移植过来是非常方便的。
Gonk 是一个设备接口层,可看作是 硬件和 Gecko 之间的适配器。Gonk是一个相对简单的Linux发行版,可以视为与Gecko移植层相对应的Gecko接口——所以,Gonk是Gecko的移植目标。
由于不同的移动设备可能有不同的芯片集和其他硬件设备,设备可能包含不同的Gonk发布版本。
由于 Firefox OS 工程对 Gonk 的完整控制,我们可以向 Gecko 暴露一些在其他操作系统中无法实现的接口。例如, Gecko 已经可以直接进入 full telephone stack 进行访问,并在 Gonk 中显示出 frame buffer。
2.Gonk architecture(Gonk架构)
每一款手机都由定制的Gonk组件构成,这些组件都是基于system libraries、 device drivers、操控硬件设备的firmware的。 这些组件由OEM厂商、硬件制造商、ODM厂商决定。下面列表显示了Gonk实现的示例:
这个示例展示了以下主要组件:
- Linux Kernel: Uses libraries from Android (GPS, camera, etc.) and other open source projects (Linux, libusb, bluez, and so on).
- Radio Interface Layer (RIL): Interacts with the modem hardware (telephony) in the phone. Consists of two components:
- rild daemon: Talks to the modem firmware.
- rilProxy: Proxies messages between rild and the b2g process
- mediaserver process: Controls audio and video playback. Gecko communicates with the media server through an Android RPC mechanism.
- netd process: Network daemon that interacts directly with network interfaces (Wi-fi) in the hardware.
- Bluetooth, etc.: Bluetooth and other service-level daemons provide access to hardware capabilities.
Gonk还启动、管理和关闭b2g进程,b2g进程在B2G OS中的Gecko层。b2g进程充当了Gonk中的服务级守护进程的客户端,它可以直接与硬件交互,并向Gecko提供手机的底层硬件功能。Gecko通过进程间通信(IPC)与这些守护进程对话。这些组件协作交换命令和协议来请求和提供服务。