在写Linux字符驱动的时候,经常涉及到一些驱动需要在/sys目录或子目录下创建,一个属性节点,以便与,不用查看驱动的版本信息,时间等等一些属性信息,以判断驱动程序加载的是否有误。

示例代码:

// drv_attr.c
#include <linux/module.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/delay.h>
#include <linux/regulator/consumer.h>
#include <sound/soc.h>
#include <sound/jack.h>static  char mybuf[100]="123";
//cat命令时,将会调用该函数
static ssize_t show_my_device(struct device *dev,struct device_attribute *attr, char *buf)
{return sprintf(buf, "%s\n", mybuf);
}//echo命令时,将会调用该函数
static ssize_t set_my_device(struct device *dev,struct device_attribute *attr,const char *buf, size_t len)
{sprintf(mybuf, "%s", buf);return len;
}
//定义一个名字为my_device_test的设备属性文件
static DEVICE_ATTR(my_device_test, S_IWUSR|S_IRUSR, show_my_device, set_my_device);struct file_operations mytest_ops={.owner  = THIS_MODULE,
};static int major;
static struct class *cls;
static int mytest_init(void)
{struct device *mydev;major=register_chrdev(0,"mytest", &mytest_ops);cls=class_create(THIS_MODULE, "mytest_class");//创建mytest_device设备mydev = device_create(cls, 0, MKDEV(major,0),NULL,"mytest_device");    //在mytest_device设备目录下创建一个my_device_test属性文件if(sysfs_create_file(&(mydev->kobj), &dev_attr_my_device_test.attr)) {return -1;}return 0;
}static void mytest_exit(void)
{device_destroy(cls, MKDEV(major,0));class_destroy(cls);unregister_chrdev(major, "mytest");
}module_init(mytest_init);
module_exit(mytest_exit);
MODULE_LICENSE("GPL");
# Makefile
ifneq ($(KERNELRELEASE),)obj-m := drv_attr.o
elseKERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)
default:$(MAKE) -C $(KERNELDIR) M=$(PWD)  modules
endif
clean:  rm -rf *.mod.* *.o *.ko *.cmd *.symvers *.order 

编译:

make

获取root权限,加载驱动:

insmod drv_attr.ko

执行my_device_test节点进行cat echo操作:

cd /sys/class/mytest_device/mytest_device/

cat my_device_test  //显示123

echo "abcdefg" > my_device_test  // 向驱动内写入abcdefg字符串

cat my_device_test //显示abcdefg

如果觉得写得不错,烦请微信搜索公众号 "郑州行疆户外" 了解程序员的户外业余喜好。

示例:Linux设备属性节点驱动,以及cat, echo操作相关推荐

  1. android平台驱动开发(二)--设备属性节点的创建

    驱动开发 如何创建设备属性节点 文章目录 驱动开发 前言 一.代码添加 二.编译 三. 验证 总结 前言 最简单的设备属性节点 一.代码添加 在AU_LINUX_ANDROID_LA.VENDOR.1 ...

  2. linux设备usb节点和硬件接口,所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动......

    原标题:所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动... 设备驱动最通俗的解释就是"驱使硬件设备行动".操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏 ...

  3. linux 设备树i2驱动,TX2i设备树SPI驱动

    默认/dev下是没有spi设备的@H_301_1@ JetPack版本@H_301_1@ JetPack-L4T-3.2.1-linux-x64_b23.run@H_301_1@ 下载Kernel@H ...

  4. Linux 设备树 : 节点与属性的删除

    一.节点删除 应用条件:通常DTS中包含了多个平台的描述文件,且多个平台会共享一些通用的dtsi.这些dtsi的节点对于指定的平台来说,其节点未必全部需要,因此就需要将不需要的节点进行裁剪或者DISA ...

  5. mcp2515 linux 设备树,mcp2515驱动的实现

    1.在配置Linux 编译选项时,开启相应的SPI 选项,如下所示 -> Device Drivers -> SPI support SPI support *** SPI Master ...

  6. linux设备驱动学习,linux设备驱动学习4

    Linux设备驱动程序学习(4) -高级字符驱动程序操作[(1)ioctl and llseek] 今天进入<Linux设备驱动程序(第3版)>第六章高级字符驱动程序操作的学习. 一.io ...

  7. linux 设备树_嵌入式系统砖家_初识设备树

    目录: 一.加载Linux(有无设备树) 二.设备树入门知识 一.加载Linux(有无设备树) 没有设备树的时候(以ARM架构为例): - 内核在源码里记录了所有硬件相关的信息(芯片型号.内存大小,各 ...

  8. linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...

    Linux设备驱动程序学习(6) -高级字符驱动程序操作[(3)设备文件的访问控制] 提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的.这部分的内容只是在open和release方法上做些修 ...

  9. linux设备模型:pci驱动程序注册过程

    一个具有正常探测功能的pci驱动程序应具有基本的pci_driver结构实现,如: static struct pci_driver driver_ops = {.name = "drive ...

最新文章

  1. 介绍Windows Server服务器角色、角色服务和功能
  2. 合并数组:双针模型,原地实现
  3. Windows XP下Service的编程入门[2]
  4. MySQL备份失败,一波三折的问题分析和处理
  5. 软考网络管理员学习笔记3之第三章网络体系结构
  6. [转]Angular: Hide Navbar Menu from Login page
  7. 多元统计分析基于r课后答案_应用多元统计分析课后答案
  8. PopClip翻译插件开发记录-microsoft_translate.popclipext
  9. 【LCD1602----LiquidCrystal库的使用1
  10. 用游戏编辑器制作MOD脱颖而出
  11. Linux tar gzip压缩和解压
  12. Extjs实现角色权限流控制,对fieldset,checkbox的动态控制
  13. excel工作表限制编辑怎么删除
  14. [C语言] [游戏] 扫雷
  15. sam格式的结构和意义_NGS数据格式02-SAM/BAM最详细解读
  16. FlashFXP v4.4.2.2019 绿色版
  17. javascript:void(0)的作用
  18. 躁!DJ 风格 Java 桌面音乐播放器
  19. 电动车电池管理系统c语言实训,电动车控制器C语言源代码复习课程.doc
  20. Arduino手动添加ESP32相关开发板(图文并茂)

热门文章

  1. 中审审易软件 瑞星杀毒软件升级包
  2. DO447管理任务执行--控制任务执行
  3. 第30关 判断回文数
  4. 《权威指南》笔记 - 8.7 函数属性、方法、构造函数
  5. python对seo有什么用_seo学习python有什么益处
  6. Sublime配置java运行环境(IntelliJ IDEA也许更好用)
  7. Unity周围环境与光效调节[一]天空盒与天空盒反射的调节
  8. ppfilm.exe
  9. 局域网控制软件之有效控制局域网主机带宽
  10. 计算机英语中协议英语,计算机英语