Gonk

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的移植目标。

Note!

由于不同的移动设备可能有不同的芯片集和其他硬件设备,设备可能包含不同的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)与这些守护进程对话。这些组件协作交换命令和协议来请求和提供服务。

Note!

For more information on Gonk architecture, see the B2G OS architecture guide.或B2G OS(FireFox OS) Architecture

3.Porting Gonk(移植Gonk)

由于B2G操作系统是基于Android内核的,所以现有的设备驱动程序、固件、服务守护进程和其他组件可以被移植到B2G操作系统中且不用花费太多工作量。如果需要定制组件(例如,自定义的RIL或新的守护进程),或者必须对ODM的参考设计进行修改,那么可能需要额外的集成和测试工作。

在b2g中,客户端通过进程间通信(IPC)与服务级别的守护进程进行通信。客户端发起到服务级守护进程的套接字连接,在该连接上提交请求(使用服务器的请求协议),接收响应,并关闭连接。OEM厂商负责设计和实现客户端和服务器之间的进程间通信。

Note!

For more information about how the porting process works, see Porting B2G OSPorting(移植) B2G OS【1】——Porting basics

3.1 How Mozilla works on Gonk ports with OEMs and phone manufacturers(谋智公司在与OEM、手机厂商做Gonk移植时的是如何工作的)

每一个Gonk实现都是Mozilla、oem厂商和相关制造商(ODMs,芯片组制造商)之间协作的结果。
Mozilla在B2G操作系统的发行版中提供了Gonk的源存储库和支持文件。源存储库包括基本的Linux内核(只有轻微的变化)和到Gecko的hooks。

oem厂商负责为给定的设备模型构建、编译、测试、认证和分发B2G OS系统映像。对于系统映像的Gonk部分,oem厂商负责大部分的工作,以确保Web API调用和电话硬件功能之间的无缝集成。所需的工作类型和范围很大程度上依赖于特定的芯片组和电话中使用的其他硬件组件。

3.2 Device components(设备组件)

oem厂商与芯片制造商和ODMs合作,提供运行移动设备所需的所有设备特定组件。例如,一个Wi-Fi组件的制造商将提供芯片组和附属软件。

可能包含的组件有:

    • Drivers — For supported phone functionality, such as modem (data and voice), Wi-fi, Bluetooth, display, camera, audio, and so on.
    • Firmware — Some hardware (the network interface card, for example) might load firmware off the flash drive.
    • Service-level daemons — For invoking and managing the operation of various hardware components. This can include support libraries and startup scripts.

3.3 Intergration between Gonk and Gecko

oem厂商必须确保移动设备中的硬件功能能够正确、完全地暴露在Gecko中实现的Web api中。其中包括:

    • 构建或调整(在Gonk)服务级守护进程,以及任何相关的驱动程序或固件,以管理硬件功能。
    • 设置(在b2g中)与服务级守护进程通信所需的所有方法。

4. Gonk source code

Github上B2G repo包含了官方支持的各种设备的Gonk代码,所以你可以把它当作Gonk的存储库。在B2G下执行config.sh即可在终端上列出所支持设备的列表。

在Gonk中定义的b2g进程(以及其他一些东西)可以在mozilla-b2g/gonk-misc中找到。对b2g源代码的修改是在这里进行的。

Note!

In the Gecko source there’s a b2g/ folder that contains the Gonk Port of Gecko: this consists of a Linux kernel, HAL, and other OEM-specific libraries.

对于Gonk的工作的工作大部分是将系统移植到不同的设备上,并确保Gecko在不同的设备上能很好地工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馬佩德罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值