当前位置: 首页 > news >正文

Linux驱动开发中设备节点、虚拟节点、逻辑节点之间的区别与关系

概述

在Linux DTS中我们可以看到各种各样的节点,每个节点都是对某一物理设备或功能抽象或具体的描述

设备节点

设备节点是对物理设备的一种具体的描述,它一般包含设备的寄存器地址、设备的类型、中断、时钟频率这些通用信息,除了这些通用信息还有一些设备节点会包含一些自己特有的细节例如Linux上的DTS节点就是最好的例子,例如MIPI设备会包含Lens的描述,以下是一个UART设备节点的DTS描述:

uart@1700000 {compatible = "vendor,uart";reg = <0x1700000 0x1000>;interrupts = <0 10 0>;clocks = <&rk_clocks>;
};

虚拟节点

虚拟节点一般是用来描述特定的软件功能,它不依赖于任何硬件,一般该节点的描述非常简单,例如下面是一个用来描述当前系统版本的节点:

 virtual_version {compatible = "firmware-version";version = "1.0.0";string = "Example System Firmware v1.0.0";};
Tips
虚拟节点也可以用来模拟一个硬件。

逻辑节点

就是逻辑节点是用来描述硬件的特定功能,它依赖于真实硬件,以下是一个ISPP的示例:

ispp {compatible = "virtual,node";isp_in: endpoint {                       remote-endpoint = <&isp_in>;        };    };

逻辑节点一般通过remote-endpoint进行连接,ispp通过获取到isp设备节点的输入然后进行其它处理例如3A算法等。
下面是一个LED的逻辑节点示例:

  led@0 {compatible = "simple-led";label = "LED0";gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;};

该节点没有自己的寄存器地址和时钟等描述,它依赖于gpio来实现自己的功能,所以一般称为逻辑节点。

三者之间的区别

  • **设备节点:**是描述真实的设备,需要包含设备类型、寄存器物理地址、时钟频率…
  • **虚拟节点:**是描述特定的软件功能,它一般是由系统虚拟的节点,通过该节点应用层可以获取到一些系统信息或者用来模拟硬件。
  • **逻辑节点:**是描述特定的硬件功能,它一般依赖于硬件,通过endpoint来与硬件建立管道连接,获取硬件的输入然后执行其它操作从而实现特定功能。

三者之间的关系

三者之间的关系并不大,因为从根本意义上来说它们都是节点,只是应用场景不同,叫法不一样而已,它们只是描述某种硬件或者某个功能的信息,最终这些信息都会被驱动所接受并使用。

节点与驱动的关系

节点信息是描述某个硬件或功能的信息,而驱动则是实现,就像声明与实现一样。

http://www.lryc.cn/news/401692.html

相关文章:

  • 【iOS】——ARC源码探究
  • ubuntu服务器安装labelimg报错记录
  • Transformer中Decoder的计算过程及各部分维度变化
  • QT实现滑动页面组件,多页面动态切换
  • 使用Python-docx库创建Word文档
  • C# 设计一个可变长度的数据通信协议编码和解码代码。
  • 【MATLAB库函数系列】MATLAB库函数pwelch之功率谱估计的详解及实现
  • 科技出海|百分点科技智慧政务解决方案亮相非洲展会
  • Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
  • Qt窗口程序整理汇总
  • 简单实现一个本地ChatGPT web服务(langchain框架)
  • Elasticsearch-多边形范围查询(8.x)
  • Kotlin Misk Web框架
  • 【设计模式之美】【建造型】工厂模式:通过面向接口编程思路,串起业务流程
  • AI算法19-偏最小二乘法回归算法Partial Least Squares Regression | PLS
  • live555关于RTSP协议交互流程
  • Centos7 安装私有 Gitlab
  • 浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)
  • 第T5周:使用TensorFlow实现运动鞋品牌识别
  • 网络编程学习之tcp
  • 前端XMLHttpRequest、Fetch API、Axios实现文件上传、下载方法及后端Spring文件服务器处理方法
  • STM32智能交通监测系统教程
  • 【利用Selenium+autoIt实现文件上传】
  • python join
  • cython加速python代码
  • React@16.x(60)Redux@4.x(9)- 实现 applyMiddleware
  • level 6 day1 Linux网络编程之网络基础
  • PostgreSQL UPDATE 命令
  • 什么? CSS 将支持 if() 函数了?
  • function calling实现调用理杏仁api获取数据