首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux驱动开发新手必读 | 二、LED子系统——硬件驱动层

/leds.h 主要作用:LED的平台数据,用于对LED硬件设备的统一管理 这个结构体用于父节点向子节点传递的数据时使用 1.1.2 gpio_leds_priv struct gpio_leds_priv...这里的num_leds通过解析设备树的子节点的个数来获取 leds[]根据获取的num_leds个数,分配对应的空间,来初始化相关数据 1.2 实现流程 static int gpio_led_probe.../leds-gpio.c 主要作用:LED相关数据信息,主要在于led_classdev,用于注册设备节点信息 由设备树解析出来的gpio_led,然后将部分属性赋值到gpio_led_data中,并且初始化...实现思路: 通过device_get_child_node_count获取设备树中LED子节点的数量,根据获取到的子节点数量,分配LED设备对应的内存空间 通过device_for_each_child_node...遍历每个子节点,并为每个子节点创建对应的LED设备 对于每个子节点,使用fwnode_property_read_string接口,读取设备树中相关的属性信息,如:label、linux,default-trigger

56140

Linux Led 子系统

2、概述 led 子系统驱动框架: 所有 led 共性: 有和用户通信的设备节点 亮和灭 不同点: 有的 led 可能是接在 gpio 管脚上,不同的 led 有不同的 gpio 来控制 有的 led...led 子系统核心文件: driver/leds/led-class.c driver/leds/led-core.c driver/leds/led-triggers.c include/linux/...led 子系统是一个简单的 Linux 子系统 ,在目录 /sys/class/leds 下展示该子系统设备,每个设备都有自己的属性: brightness:设置 LED 亮度,范围 0 ~ max_brightness...、leds-xxx.c : 以 leds-gpio.c 为例 在通过设备树或者其它途径匹配到设备信息后,将调用 probe() 函数, 然后再根据设备信息设置 led_classdev, 最后调用 devm_led_classdev_register...() 注册 LED 设备

44530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    13 - sysfs设备节点的创建

    实际项目过程中应用层需要操作内核中GPIO, 除了应用层直接通过export方式操作,具体操作方法[Linux驱动炼成记] 02-用户空间控制GPIO, 还可以通过sysfs设备节点方式操作...&dev_attr_key_trigger_tool); if (ret){ dev_err(dev, "Failed to device create file: %d\n",ret); } 定义设备属性..., _store) // 按键中具体实现, 相当于在 /sys/devices/platform/gpio_keypad/key_trigger_tool 创建了key_trigger_tool设备节点...__,value,key_trigger_pin); //返回GPIO状态 return snprintf(buf,PAGE_SIZE,"%d\n",value); } 到这里为止,驱动中的按键的设备节点已经创建...,应用层完全可以操作设备节点 //获取按键的状态 cat /sys/devices/platform/gpio_keypad/key_trigger_tool 执行这条命令之后,就会调用驱动中key_attribute_trigger

    2.8K20

    Linux内核的LED设备驱动框架【转】

    LED设备驱动框架概述 (1)LED设备的共性: 1)LED的亮与灭; 2)具有相应的设备节点设备文件)。...因此,Linux中LED的驱动框架把所有LED设备的共性给实现了,把不同的地方留给驱动工程师去做。.../kernel/include/linux/leds.h (4)辅助文件(根据需求来决定这部分代码是否需要): /kernel/driver/leds/led-triggers.c /kernel...leds类属性的定义与初始化 leds_class->dev_attrs规定了leds设备类的类属性,其中的类属性将被sysfs以文件的形式导出至/sys/class/leds目录下,用户空间通过对这些文件的访问来操作硬件设备...详见Linux设备管理:sysfs文件系统的功能及其应用。 led_class_attrs结构体数组设置了leds设备类的属性,即led硬件操作的对象和方法。

    2.6K10

    手把手创建Linux设备属性节点,触发cat, echo操作

    手把手教你在 Linux 中创建节点,使其可以进行 cat 和 echo 。...我们测试驱动加载是否正常工作,一般都会写应用程序去测试,这样驱动程序中需要实现 open、read 函数和 write 函数,然后写一个应用程序通过 open 打开节点,获取 fb 文件描述符,进而对文件进行读写操作...这里我介绍另外一种方法,我们可以在驱动中实现 show_xxx 和 set_xxx 函数,使这个节点可以进行 cat 和 echo 操作,源码如下: test.c #include <linux/module.h...buf, size_t len) { sprintf(mybuf, "%s", buf); return len; } //定义一个名字为my_device_test的设备属性文件...mydev = device_create(cls, 0, MKDEV(major,0),NULL,"mytest_device"); //在mytest_device设备目录下创建一个

    3.4K20

    我在这块牛X的A40i Linux开发板上点了个流水灯

    为啥要搞这个linux评估板?...小飞哥自毕业以来,工作5年了,一直从事的都是嵌入式MCU层面的开发工作,还从未涉足过linux开发相关的领域,最近的一次应该是翻过《鸟哥的linux私房菜》,学着敲过一些命令行,仅此而已......并使用 Micro USB 线连接 PC 机和评估板的 USB TO UART0 调试串口 默认波特率率115200,使用终端调试助手mobaxterm打开所在串口号 相当于是板子的自检功能,有些设备没有插入...接下来在命令串口输入命令行进行点灯测试,LED 设备节点为"/sys/class/leds/user-ledX/"目录下的 brightness。...同时, 串口终端打印系统全部 LED 设备信息和程序当前控制的 LED 设备信息。

    1.1K40

    Linux节点inode

    Linux节点 inode inode是存储文件元信息的区域,中文译名为“索引节点”。所谓元信息,即文件的创建者、创建日期、文件的大小等等。...包含文件的元信息有以下内容: 文件名以及文件的大小(字节数),链接数,Uid 文件拥有者的ID,Gid 文件所属组的ID 文件的权限,包括读写执行权限(rwx) inode文件数据块的位置、数据块数、IO块大小、设备号码...最近访问时间、最近更改时间、最近变动时间 inode占用硬盘空间,每个inode节点的大小,一般是128字节或256字节。...inode节点的总数,在格式化的时候就给定,一般是1KB或每2KB就设置一个inode。 查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。...Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

    6.1K30

    嵌入式入门级学习——国产平台T3开发板测试教程(1)

    Linux系统启动卡对应的设备节点为mmcblk1,eMMC对应的设备节点为mmcblk0。...1.2.1通过Linux系统启动卡 将配套的系统启动卡通过读卡器插至PC机挂载至虚拟机Ubuntu系统,如下图,查询系统启动卡设备节点,其中"/dev/sdb7"为Linux系统启动卡文件系统分区,具体以实际名称为准...图 7 执行如下命令进行,将"/dev/sdb7"设备节点挂载至"/mnt/"目录下。...Host# touch test0 Host# sudo cp test0 /mnt/root/ ​ 图 9 文件拷贝完成后,请执行如下命令卸载设备,并拔出读卡器,从中取出Linux系统启动卡。...Target# echo 0 > /sys/class/leds/user-led0/brightness //控制LED1灭 Target# echo 1 > /sys/class/leds/user-led0

    1.6K21

    全志A40i开发板——Ubuntu系统使用说明

    执行如下命令,确认Linux系统启动卡在Ubuntu系统的设备节点名,可以看到Linux系统启动卡设备节点是"/dev/sdb",并且有七个分区,其中"/dev/sdb7"为文件系统所在分区。...备注:设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。...图 5拷贝完成后,将U盘插入评估板USB1 HOST或USB2 HOST接口,从Linux系统启动卡启动系统,执行如下命令查看U盘在文件系统的设备节点名。...Target# echo 0 > /sys/class/leds/user-led0/brightness //控制LED1灭Target# echo 1 > /sys/class/leds/user-led0.../sys/class/leds/user-led1/brightness //控制LED2亮图 9按键测试评估底板包含3个用户按键:KEY3、KEY4、KEY5。

    1.5K50

    全志R329开发板点灯教程

    接下来会介绍Tina Linux系统封装几个模块,您可以通过命令启动这几个模块的demo,操控终端几个模块的软硬件。...首先是我们大学单片机课程中的必修课:点灯 R329支持LEDC,LEDC全称 “Light Emitting Diode Controller”,是借助Linux LED标准子系统实现的LED控制模块,...内置固件已经编译好了LEDC模块,可以直接对LED节点进行控制从而点亮LED灯。...进入LED灯路径 首先,我们可以进入LED节点的位置查看一个LED灯三个颜色的节点(R G B): root@TinaLinux:/# cd /sys/class/leds/ root@TinaLinux...:/sys/class/leds# ls sunxi_led0b sunxi_led0g sunxi_led0r 查看LED灯的配置 三个节点分别代三个颜色,我们可以进入一个颜色节点,比如红色(R)

    15610

    【经验分享】全志科技官方Ubuntu16.04根文件系统镜像的替换和测试方法

    执行如下命令,确认Linux系统启动卡在Ubuntu系统的设备节点名,可以看到Linux系统启动卡设备节点是"/dev/sdb",并且有七个分区,其中"/dev/sdb7"为文件系统所在分区。...备注:设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。...图 5拷贝完成后,将U盘插入评估板USB1 HOST或USB2 HOST接口,从Linux系统启动卡启动系统,执行如下命令查看U盘在文件系统的设备节点名。...Target#echo 0 > /sys/class/leds/user-led0/brightness//控制LED1灭Target# echo 1 > /sys/class/leds/user-led0...sys/class/leds/user-led1/brightness//控制LED2亮图 92.2 按键测试评估底板包含3个用户按键:KEY3、KEY4、KEY5。

    14210

    linux 设备

    linux 设备树 ---- 参考地址 http://blog.csdn.net/green1900/article/details/45646095 http://www.cnblogs.com...,fpga", "rockchip,rk3399"; 3.2节点名 理论个节点名只要是长度不超过31个字符的ASCII字符串即可,Linux内核还约定设备名应写成形如[@]的形式,其中name就是设备名...unit_address一般是设备地址,用来唯一标识一个节点 Linux中的设备树还包括几个特殊的节点,比如chosen,chosen节点不描述一个真实设备,而是用于firmware传递一些数据给OS...这样就可以实现类似函数调用的效果 3.KEY 在设备树中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的”compatible”这个属性查找设备节点 inux设备树语法中定义了一些具有规范意义的属性...此外,还有一些Linux内核定义好的,一类设备通用的有默认意义的属性,这些属性一般不能被内核自动解析生成相应的设备信息,但是内核已经编写的相应的解析提取函数,常见的有 “mac_addr”,”gpio”

    3.2K20

    linux 存储设备

    存储结构与管理硬盘一、添加硬盘设备一、添加硬盘设备添加硬盘设备的操作思路:首先需要在虚拟机中模拟添加入一块新的硬盘存储设备,然后再进行分区、格式化、挂载等操作,最后通过检查系统的挂载状态并真实地使用硬盘来验证硬盘设备是否成功添加...fdisk命令用于新建、修改及删除磁盘的分区表信息分区 [root@rhel ~]# fdisk /dev/sdb 依次输入 p n p 1 +1024G 回车 p w Linux...、挂载硬件设备一般的硬盘设备都是以“/dev/sd”UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备挂载硬件设备步骤1....-f模拟设备损坏-r移除设备-Q查看摘要信息-D查看详细信息-S停止RAID磁盘阵列mdadm命令用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为...为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。

    12.3K20

    Linux 常见主设备设备清单

    Linux 常见主设备设备清单# 在Linux系统中,设备通常通过主设备号和次设备号来标识。主设备号用于区分设备的大类,例如硬盘、字符设备等;次设备号用于在同一大类设备中区分不同的设备。...在 Linux 系统中,NVMe 设备通常具有 /dev/nvmeXnY 格式的设备文件名,其中 X 是控制器的编号,Y 是命名空间的编号。...NVMe 设备的主设备号是在设备驱动程序注册到内核时由内核动态分配的,因此,不同的系统,内核版本或配置可能会有所不同。在许多现代 Linux 系统中,NVMe 设备的主设备号可能是 259。...Linux 源码定义# 设备号的分配在早期的 Linux 内核版本中是静态的,设备号的列表可以在内核源代码的 Documentation/admin-guide/devices.txt 文件中找到。...但在现代的 Linux 内核中,许多设备设备号是动态分配的,它们并不会直接在内核源代码中定义。例如,NVMe 设备设备号是由内核在运行时动态分配的,这在内核源代码中没有明确的定义。

    68110
    领券