首页 > 系统相关 >linux设备树-设备树常用OF操作函数

linux设备树-设备树常用OF操作函数

时间:2023-04-20 19:23:56浏览次数:48  
标签:node struct 函数 linux Linux 节点 设备

----------------------------------------------------------------------------------------------------------------------------
内核版本:linux 5.2.8
根文件系统:busybox 1.25.0
u-boot:2016.05
----------------------------------------------------------------------------------------------------------------------------

在Linux内核采用设备树之后,驱动程序需要获取设备树的属性。Linux内核为驱动程序提供了一系列API函数,用于获取设备树的属性值。在Linux内核中,以“of_”开头的函数是设备树API函数。

一、获取设备节点API 

在内核中,设备以节点的形式附加到设备树上,因此要获得设备信息,必须先获取设备节点。

1.1 设备节点

Linux内核使用device_node结构体来描述一个设备节点,此结构体定义在文件 include/linux/of.h 中,代码如下:

struct device_node {
    const char *name;  /*节点的名字*/
    phandle phandle;
    const char *full_name;  /*节点的全名,node-name[@unit-address]*/
    struct fwnode_handle fwnode;

    struct    property *properties;  /*节点的属性*/
    struct    property *deadprops;    /* removed properties */
    struct    device_node *parent;   /*父节点*/
    struct    device_node *child;    /*子节点*/
    struct    device_node *sibling;  /*节点的兄弟,即同级节点*/
#if defined(CONFIG_OF_KOBJ)
    struct    kobject kobj;
#endif
    unsigned long _flags;
    void    *data;
#if defined(CONFIG_SPARC)
    unsigned int unique_id;
    struct of_irq_controller *irq_trans;
#endif
};

上述数据结构是设备节点结构。让我们来看一下获取设备节点的几个常见函数。

 

二、

三、

四、

 

参考文章

[1]Linux设备树学习笔记(四、设备树常用 OF 操作函数)

[2]linux 设备树of函数学习笔记

[3]DeviceTree Kernel API — The Linux Kernel documentation

[4]Linux device tree API (programs.wiki)

[5]of.h - include/linux/of.h - Linux source code (v5.2.8) - Bootlin

标签:node,struct,函数,linux,Linux,节点,设备
From: https://www.cnblogs.com/zyly/p/17336165.html

相关文章

  • Linux设备节点创建方式的演变历史
    引子  遵从"Everythingisafile"的思想,在Linux下想要操作设备的话,是需要通过一类叫做设备节点(devicenode)的特殊文件。设备节点通常位于/dev这个目录下,但是位于其它目录也是可以的。只要翻开一本介绍Linux驱动的书,或者在网上搜索相关的文章,很大概率上会教你在写好驱动代码后......
  • Linux入门二
    目录一、磁盘管理二、文件挂载1.挂载方法2.挂载示例(1)挂载光盘镜像文件(2)挂载移动硬盘(3)挂载U盘(4)挂载Windows文件共享(5)挂载UNIX系统NFS文件共享(6)补充3.卸载已挂载的设备三、软硬链接四、nfs服务1.什么是NFS2.服务端配置NFS(1)配置(2)共享目录的权限(3)启动nfs服务3.客户端挂载NFS五、......
  • linux 新建服务器基线
    linux新建服务器基线yum-yinstallntpvimnet-toolslsofnctelnetbind-utilspython3python3-develpython3-setuptoolspython3-pippython3-rpm-generatorspython3-libspython3-rpm-macroswgetNTP时钟服务器centos/etc/ntp.conf#注释driftfile/var/lib/ntp/dri......
  • linux下查看服务器的型号
    评:如何看到服务器的型号呢?#dmidecode|grep"Product"ProductName:IBMSystemx3650-[7979R01]-ProductName:SystemPlanarProductName:PowerSuppyBackplaneProductName:PCI-ExpressRiserCard,Slots1&2solaris可以直接用uname-a就能看到服......
  • linux IPtable防火墙 禁止和开放端口
    评:1、关闭所有的INPUTFORWARDOUTPUT只对某些端口开放。下面是命令实现:iptables-PINPUTDROPiptables-PFORWARDDROPiptables-POUTPUTDROP再用命令iptables-L-n查看是否设置好,好看到全部DROP了这样的设置好了,我们只是临时的,重启服务器还是会恢复......
  • 智慧路灯杆 多功能杆挂载气象监测设备有哪些要求
    智慧路灯杆多功能杆具有强大的设备兼容挂载能力,支持集中挂载包括视频监控、气象监测、环境监测等多类型数据采集设备,实现一杆多用。 由于户外环境变化多端,当出现雨天、大雾天、雪天等恶劣气候时,路面湿滑,能见度降低,容易产生交通事故。而智慧路灯杆多功能杆搭载气象监测设备,可......
  • linux下安装mysql
    1、查看是否已经安装Mysqlrpm-qa|grepmysql2、上传mysql的安装包到linux下,(.tar.gz版本的)3、解压安装包tar-zxvfmysql-5.7.35-linux-glibc2.12-x86_64.tar.gz4、先检查是否有mysql用户组和mysql用户,没有就添加有就忽略:检查是否有mysql用户组:groupsmysql添加......
  • hive函数
    用pig的时候,超不爱用pig带的函数,一般都自己写但是用hive,就越来越懒,变成了能不写就不写自己的udf,哈哈 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1.内置运算符 1.1关系运算符  运算符类型说明A=B所有原始类型如果A与B相等......
  • linux架构day04:ssh远程管理服务实践
    ssh远程管理服务实践linuxssh端口:22加密传输数据支持root用户telnet端口:23明文传输数据不支持root用户windowsrdp端口:3389remotedesttopprotoclssh基本概述SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确......
  • EasyCVR视频融合平台语音对讲设备端异常的问题分析及解决
    EasyCVR平台属于综合性及融合性较强的视频平台,目前可支持多协议、多类型的海量设备接入与分发,具备视频监控直播、云端录像、录像的检索与回看、存储、智能告警、语音对讲、平台级联、跨系统支持、灵活网络环境配置等视频能力,在线下均有大量落地应用。我们在此前的文章中也介绍过关......