首页 > 其他分享 >t113-c-设备树-驱动调用篇(获取设备节点和属性)

t113-c-设备树-驱动调用篇(获取设备节点和属性)

时间:2023-07-08 17:00:46浏览次数:43  
标签:module void MODULE compatible t113 linux include 节点 设备

我们以pwm为例

编写程序

1.首先编写出入口函数

// #include "linux/module.h"
// #include "linux/fs.h"
// //#include "linux/stddef.h"
// #include "linux/types.h"
// //#include "crypto/if_alg.h"

#include "treecom.h"


static int __init startin(void)
{



	return 0;
}

static void __exit startout(void)
{



	
}


MODULE_LICENSE("GPL");
MODULE_AUTHOR("xiaomo <[email protected]>");
MODULE_DESCRIPTION("testting");
// MODULE_ALIAS("ipt_limit");
// MODULE_ALIAS("ip6t_limit");

module_init(startin);
module_exit(startout);

2.导入节点

我们使用以下函数

路径在这里可以看见

我们通过关键字可以知道可以用以下函数来搜寻总的属性,并且可以通过全局搜索来知道最后的一个参数其实可以用NULL来自动判断长度

编写以下代码

3.编写makefile

KEDIR = /home/momo/T113/Tina-Linux/lichee/linux-5.4
CROSS_COMPILESS = /home/momo/T113/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-

CURRENT-PATH := $(shell pwd)

obj-m := treecom.o

build: kernel_modules

kernel_modules:
			${MAKE} -C ${KEDIR} M=${CURRENT-PATH} modules
clean:
			${MAKE} -C ${KEDIR} M=${CURRENT-PATH} clean
			rm -rf treecom.order

4.编译,运行

编译时候出了错误,因为inline是函数的用法所以删掉inline即可编译成功

放到板子上运行发现错误由于位进行成功printk不知道在哪出了错误

进行调试后发现原来是找不到路径

修改后成功运行

 

代码

// #include "linux/module.h"
// #include "linux/fs.h"
// //#include "linux/stddef.h"
// #include "linux/types.h"
// //#include "crypto/if_alg.h"

#include "treecom.h"

#if 0
		pwm0: pwm0@2000c10 {
			compatible = "allwinner,sunxi-pwm0";
			pinctrl-names = "active", "sleep";
			reg = <0x0 0x02000c10 0x0 0x4>;
			reg_base = <0x02000c00>;
		};
#endif


static int __init startin(void)
{
	struct device_node *pw_nd=NULL;
	struct property *compatible=NULL;
	pw_nd=of_find_node_by_path("/soc@3000000/pwm0@2000c10"); 								 //获取节点
	if(pw_nd==NULL){
		printk("failed to create node \r\n");
		goto FINEFAIL;
	}
	else{
		printk("create node \r\n");
	}
	compatible=of_find_property(pw_nd,"compatible",	NULL);		//获取属性
	if(compatible==NULL){
		printk("failed to fine compatible \r\n");
		goto FINEFAIL;
	}
	else{
		printk("fine compatible \r\n");
	}
	printk("compatible is %s\r\n",compatible->value);

	return 0;

FINEFAIL:
	return -22;
}

static void __exit startout(void)
{



	
}


MODULE_LICENSE("GPL");
MODULE_AUTHOR("xiaomo <[email protected]>");
MODULE_DESCRIPTION("testting");
// MODULE_ALIAS("ipt_limit");
// MODULE_ALIAS("ip6t_limit");

module_init(startin);
module_exit(startout);

 

标签:module,void,MODULE,compatible,t113,linux,include,节点,设备
From: https://www.cnblogs.com/recodemo/p/17537385.html

相关文章

  • LIMS如何实现实验室仪器设备的数据采集?
    1.简述数据采集功能,数据采集工具将以客户端的形式运行在与设备连接的工作站电脑上,主要负责将设备产生的完整的可输出的原始结果提取到LIMS系统,供实验室人员进行报告生成,汇总等操作。2.实现方式仪器数据采集采用LIMS系统+ActiveMQ消息服务器+客户端的形式实现,数据采集分为两部分,第......
  • 傻逼向日葵与鼠标/触控板与设备注册表
    事情是这样的,在咸鱼上挂了VScode帮别人配置C环境,因为远程,所以使用了向日葵然后我的鼠标链接关闭触控板功能就失效了。开启这个功能,即使拔掉了鼠标,依然无法使用触控板。堪称人类迷惑行为。好在最后呢,也是根据网友的帮助,找到了设备管理,发现有4个鼠标一模一样。禁用第一个后就恢复......
  • 129. 求根节点到叶节点数字之和
    给你一个二叉树的根节点root,树中每个节点都存放有一个0到9之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径1->2->3表示数字123。计算从根节点到叶节点生成的所有数字之和。叶节点是指没有子节点的节点。输入:root=[1,2......
  • EasyCVR接入大量设备级联后出现分组加载异常是什么原因?
    EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。有用户反馈,在EasyCVR用户现场接入了大量设备,出现了设备分......
  • 蓝牙Mesh协议是一种专为广域物联网(IoT)应用设计的蓝牙通信协议。它允许多个设备之间建
    蓝牙Mesh协议是一种专为广域物联网(IoT)应用设计的蓝牙通信协议。它允许多个设备之间建立一个自组织的网络,形成一个能够覆盖较大范围的通信网络。蓝牙Mesh网络采用了网状拓扑结构,其中每个设备都可以与其他设备直接通信,从而实现设备之间的互连。这种网状结构有助于提供更广阔的覆盖......
  • 如何让3D力导向图中具有不同属性的子节点连接长度不同?
    引用3D力导向图是一种可视化数据结构的方法,它可以帮助我们更好地理解和分析数据。在3D力导向图中,节点之间的连接长度通常是相等的,但是在某些情况下,我们可能希望连接长度不同,以便更好地展示节点之间的关系。本文将介绍如何在3D力导向图中实现具有不同属性的子节点连接长度不同。示......
  • 使用docker-compose部署mysql单节点
    前提条件:确保服务器都安装了docker以及docker-compose服务......
  • 解决方案|基于TQIMX6Q开发板的医疗和工业设备操作教学投屏方案
    解决方案|基于TQIMX6Q开发板的医疗和工业设备操作教学投屏方案医疗和工业设备在操作使用教学中,往往因为设备屏幕较小,实际应用场景中,教学和使用培训无法让每位操作员或者学员看到设备界面操作流程,步骤及界面变化。基于解决这些问题,广州天嵌科技推出基于TQIMX6Q平台的投屏解决方案。......
  • 污水处理设备管理系统的作用有哪些?
    污水处理设备管理系统是一种集成化的系统,能够帮助管理者实时监测污水处理设备的运行情况,提高污水处理效率和质量。那么,污水处理设备管理系统的作用有哪些?青鸟云报修推出扫码标识设备、智能手机作为现场管理终端的设备移动实时管理系统方案,实现对污水处理设备的运行状况、故障报修、......
  • Unreal Engine4 GPU崩溃或3D设备丢失的解决方案
    起因:UnrealEngine4在渲染时报错GPU崩溃或3D设备丢失解决办法:regedit 打开注册表在以下2个路径下新建 DWORD(32-bit)Value命名为  TdrDelay,并修改数值为:60(十进制)Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDriversComput......