fuchsia的源码树初探

fuchsia的源码树初探

fuchsia的4层架构源码结构zicron目录源码结构garnet目录源码结构topaz目录源码结构src目录源码结构examples源码结构

fuchsia的4层架构


翻译自英文原文Fuchsia Friday: The Four Layers of Fuchsia


google使用了4个层来组织fuchsia的代码

第一层是 zicron,是Google设计的新内核,主要处理对硬件的访问以及软件之间的通信。zicron对于fuchsia 就好比linux对于android。

第二层是garnet,它包含了一个操作系统所必要的基础软件,包括设备驱动,网络,图形以及软件安装。最激动人心的事情是 Escher(图形渲染器),Amber(Fuchsia 的更新程序)和Xi Core,它是Xi文本和代码编辑器的底层引擎

第三层是peridot,处理fuchsia模块化应用程序设计,Peridot的另外两个主要组件直接用于模块。 Ledger 可以跨设备保存您在应用/模块中的位置,并同步到您的Google帐户。Maxwell 是一个更复杂的主题,需要更多进一步的深入研究,但是 Maxwell 极有可能是让 Fuchsia 充分施展魔力的点睛之笔,可以提前透露的是,Maxwell 的厉害之处包括 Kronk,也是大家熟知的 Google Assistant。

第四层:Topaz,是这个顶层,也是对开发者和用户直接影响最大的一层。Topaz 提供 Flutter 支持,而有了Flutter 的支持,各种华丽的应用程序,可以帮助充实地提供日常使用的功能齐全的应用程序。比如,现在最令人印象深刻的当然是 Armadillo UI,它是 Fuchsia 主要用户界面和主屏幕。

关于fuchsia的认识,许中兴博士的ppt很深入

xuzhongxing.github.io/2


源码结构

在源码树里tree看看


比较重要的有

  • zircon: 操作系统内核主体代码
    bootloader, 内核的进程,内存管理,内核对象,arch相关代码; 以及运行在用户态的系统核心进程, 系统调用和library都在这里
  • garnet: 基础软件层的主体代码
    主要是属于garnet层的bin文件代码,
  • topaz:应用层
    最关键的是dart,flutter的runtime
  • src:操作系统的基础代码模块,应该来说很多属于garnet层
    这里有camera,网络connectivity,graphics,media,security, storage
  • build
    基本上是gni文件,构建需要的
  • sdk
    构建sdk/ddk所需要的配置和脚本
  • boards
    全部是gni文件,和板子相关的编译配置
  • tools
    本地pc机上运行的工具,比如fidl的工具
  • third_party
    从外部引入的库,比如flatbuffers,go,dart,ssl,iperf,libpng,protobuf等等
  • examples
    一些c/c++/rust/go的是示例代码,可以学习在fuchsia上怎么开发

zicron目录源码结构

其中

  • bootloader: The Gigaboot boot loader
    The Gigaboot boot loader is a UEFI boot shim for Zircon that can load images via chaining from iPXE, from a UEFI-accessible filesystem, or from local disk partitions.
  • kernel
    内核主体部分,进程调度,内存管理 内核对象object等
  • system
    运行在用户态的核心系统进程,bootsvc,devmgr,svchost等,这个后面细细的品;一些基础的library ulib和基础的工具uapp
  • vdso
    偏底层的系统调用相关的fidl文件

garnet目录源码结构

这里都是用户层的bin文件,包括系统中比较重要的命令行工具,真正属于garnet层的核心代码在另外的src目录下

topaz目录源码结构

这层包含的上层app的运行时,包括dart,flutter和web等内容. 我们从编译脚本BUILD.gn也可以看出来

src目录源码结构

这个目录包含的是操作系统的基础软件模块。

camera,chromium,connectivity,驱动程序(微内核系统的驱动是在用户态的),graphic相关,多媒体,电源,安全,存储等等

examples源码结构

一些示例程序,教我们怎么在fuchsia上开发程序,有底层驱动的,有用户层c++,有rust示例, fidl的用法

发布于 2020-06-13 22:22