![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
fuchsia
一墨一飞花
人生没有白走的路,每一步都算数。成为最好的自己。
展开
-
Zircon驱动开发
#Zircon驱动开发Zircon驱动程序是在设备主机进程的用户空间中动态加载的共享库。加载驱动程序的进程由Device Coordinator控制。有关详细信息,请参见[Device Model](device-model.md)设备主机,Device Coordinator以及驱动程序和设备生命周期。##目录结构Zircon驱动程序位于[system/dev](../../syst...翻译 2019-05-25 09:52:26 · 1861 阅读 · 0 评论 -
fuchsia网卡通用接口层及legacy方式网络虚拟化实现
通用接口层实现所在路径 —— zircon\system\dev\ethernet\ethernet\ethernet.cpp通用接口层也是以驱动形式加载,挂接在发布ZX_PROTOCOL_ETHMAC协议的网卡驱动设备下。通用接口层驱动加载流程:EthDev0::EthBind-->EthDev0::AddDevice构造eth::EthDev0对象;调用AddD...原创 2019-08-24 09:21:38 · 643 阅读 · 0 评论 -
fuchsia appmgr分析
一.概述appmgr启动:devmgr——>fuchsia_starter1.等待fshost准备好/system目录2.调用coordinator方法,扫描system目录下的driver3.将devmgr中与appmgr通信的channel的一端——appmgr_server传给appmgr(后续可以利用appmgr_client访问appmgr的服务)4.调用devmgr...原创 2019-08-24 09:24:44 · 1817 阅读 · 4 评论 -
realm容器类分析
class Realm——>继承自ComponentContainer<ComponentControllerImpl>Realm::Realm(RealmArgs args) struct RealmArgs提供Make方法,将一堆参数(初始化成员变量)组合在一起 根环境,初始化svc service channel...原创 2019-08-24 09:25:41 · 339 阅读 · 0 评论 -
sysmgr分析
一、概述sysmgr,负责建立一个全局系统服务的访问环境。sysmgr的设计相当健壮。如果有任何服务死后,它们将在下一次应用程序尝试连接到该服务时自动重启。默认情况下,sysmgr从' /system/data/sysmgr/ '读取所有配置文件。这些配置文件具有下列格式之一:## CONFIGURATION### Servicessysmgr服务配置文件是一个JSON文件...原创 2019-08-24 09:27:58 · 1656 阅读 · 0 评论 -
netcfg 进程分析
netcfg 进程 -garnet\bin\netcfg\src\main.rs//概括而言就是通过一个watcher来监听网卡目录,当有新节点添加时,通过IPC调用netstack的AddEthernetDevice接口添加网口端点fn main() const ETHDIR: &str = "/dev/class/ethernet"; //常量字符串,监控的网卡目录...原创 2019-08-24 09:33:03 · 917 阅读 · 0 评论 -
VirtioNet独立进程分析
VirtioNet======在vmm中启动和初始化vmm/main.cc中main函数启动网络设备时,会优先判断legacy_net是否使能,在legacy_net不使能的情况下会进入VirtioNet初始化分支,下面具体分析。1.在virtio设备初始化之前先把pci总线初始化起来(virtio设备都挂载pci总线上):1.1PciBus构造函数:PciBus bus(&gu...原创 2019-08-24 09:35:27 · 680 阅读 · 0 评论 -
fuchsia中virtio 后端实现
================================================涉及的其他类class PciDevicePCI设备基类,存储pci设备状态,提供ReadBar、WriteBar虚接口函数。ReadConfig ReadConfigWord //读配置空间寄存器WriteConfig //写配置寄存器空间Interrupt //如果有pci pen...原创 2019-08-24 09:37:00 · 1014 阅读 · 0 评论 -
virtio net前端
######版本为linux4.13.2#########virtio_init bus_register(&virtio_bus)static struct bus_type virtio_bus = { .name = "virtio", .match = virtio_dev_match, .dev_groups = virtio_dev_gr...原创 2019-08-24 09:38:07 · 1551 阅读 · 0 评论 -
fuchisia 驱动框架分析
一、驱动添加教程1.在”zircon/system/dev/board/“目录下添加板级相关目录,如orangepipc2。目录下添加bsp文件,如orangepipc2.c。为platform bus添加board driver。具体写法示例:ZIRCON_DRIVER_BEGIN(orangepipc2_bus, orangepipc2_bus_driver_ops,"zirco...原创 2019-08-24 09:15:52 · 1630 阅读 · 0 评论 -
Banjo教程
本文档是[Zircon驱动程序开发工具包](overview.md)文档的一部分。[TOC]Banjo是一个“转换器”(就像[FIDL的`fidlc`](https://fuchsia.googlesource.com/docs/+/master/development/languages/fidl/README.md))&MDASH;将接口定义语言(** IDL **)转换为目标语言...翻译 2019-05-25 14:31:09 · 732 阅读 · 0 评论 -
fuchsia固件开发
#Device Firmware设备固件是二进制blob,包含由硬件设备执行的代码。二进制blob在驱动程序的命名空间中可用于加载。设备固件存储在CIPD中(Chrome Infrastructure Package Deployment)并在Google Storage中镜像备份。## 在你开始之前确保CIPD可用。 cipd必须在PATH中或`zircon/../buildt...翻译 2019-05-25 09:53:45 · 1253 阅读 · 0 评论 -
Zircon设备模型
#Zircon设备模型## 介绍在Zircon中,设备驱动程序实现为ELF共享库(DSO),加载到设备主机(devhost)进程中。设备管理器(devmgr)进程,包含设备协调器(Coordinator),用于跟踪驱动程序和设备,进行管理发现驱动程序,设备主机进程的创建和方向,以及维护设备文件系统(devfs),这是用户空间的服务和应用程序(受其命名空间约束)获得设备访问权限的机制。设...翻译 2019-05-25 09:55:02 · 526 阅读 · 0 评论 -
zircon设备ops
#设备协议设备驱动程序实现了一组 hook(方法)来支持可以在他们发布的设备上执行的操作。这些描述如下,包括每个 hook使用的通过默认实现采取的行动(如果驱动程序不提供自己的实现)。##version该字段必须设置为“DEVICE_OPS_VERSION”```uint64_t version;```##open通过设备文件系统打开设备时调用open hook,或克隆现...翻译 2019-05-25 09:55:57 · 457 阅读 · 0 评论 -
Zircon的平台总线
#Zircon的平台总线## 介绍术语**平台总线**是指特定的Zircon驱动程序,源代码位于[system/dev/bus/platform/](../../system/dev/bus/platform/)).但是,这个术语也指管理基于SOC的arm64平台上的低级驱动程序的框架。为了区分下面两个,我们将在引用特定驱动程序时使用*platform bus driver*,以及在引用...翻译 2019-05-25 09:56:45 · 1457 阅读 · 0 评论 -
tracing
#将跟踪添加到设备驱动程序本文档介绍如何向设备驱动程序添加跟踪。##概述请阅读[Fuchsia追踪系统设计](../tracing/design.md)有关跟踪的概述。##跟踪提供者驱动程序不必指定跟踪提供程序,devhost进程通过`libdriver.so`提供它。这里提到它是为引入主题。##添加跟踪记录###来源添加通过调用`TRACE_*()`宏(`dd...翻译 2019-05-25 10:02:32 · 1955 阅读 · 0 评论 -
zircon ddk快速入门
# 入门本文档是[Driver Development Kit教程](ddk-tutorial.md)文档的一部分。编写设备驱动程序通常被视为一项艰巨的任务,充满了复杂性,并且需要鲜为人知的内核机密的晦涩知识。本节的目标是揭开这一过程的神秘面纱;你会学到一切需要知道的如何编写设备驱动程序的知识。从他们的工作开始,它们如何起作用,以及它们如何适应整个系统。##概述在最高级别,设备...翻译 2019-05-25 10:03:37 · 780 阅读 · 0 评论 -
ddk驱动简单示例
#简单的驱动程序本文档是[Driver Development Kit教程](ddk-tutorial.md)文档的一部分。##概述在本章中,我们将了解驱动程序的基础知识。我们将从简单到稍微复杂,每个驱动程序说明一组具体的概念如下:`dev/misc/demo-null` 和 `dev/misc/demo-zero`:*小的,“no-state”的接收器/源驱动程序,用于解释...翻译 2019-05-25 10:04:42 · 2323 阅读 · 0 评论 -
ddk高级主题和提示
#高级主题和提示本文档是[Driver Development Kit教程](ddk-tutorial.md)文档的一部分。##需要很长时间才能初始化如果您的设备需要很长时间才能初始化,该怎么办?当我们讨论上面的** null_bind()**函数时,我们成功返回告诉设备管理器驱动程序现在与设备关联了。我们不能在bind函数上花费很多时间;我们基本上应该初始化我们的设备,发布它,...翻译 2019-05-25 10:08:25 · 927 阅读 · 0 评论 -
google netstack 数据链路层分析
netstack ==================================>网络协议栈main函数路径:--src\connectivity\network\netstack\main.gomain() //--分析关键步骤 stk := tcpipstack.New([]string{ipv4.ProtocolName,ipv6.ProtocolName,arp.P...原创 2019-08-24 09:41:16 · 1558 阅读 · 0 评论