Heng30的博客
搜索 分类 关于 订阅

在Linux驱动中如何获取platform_device的资源?

struct platform_device是用于描述硬件信息的驱动,其他驱动可以通过名称和它进行匹配。一旦匹配成功后,可以通过它来获取硬件的信息。下面的例子就演示了如何进行驱动匹配和获取硬件信息...

如何实现一个Linux驱动匹配多个设备?

id_table是一个指向struct platform_device_id数组的指针,用于定义驱动可以匹配的设备ID列表。当内核检测到一个平台设备时,会检查其名称或ID是否与驱动提供的id_table中的任一条目匹配,从而决定是否绑定该驱动...

Linux驱动如何创建platform_device?

struct platform_device 是Linux内核中用于表示平台设备的重要数据结构,它是Linux设备模型的一部分,特别用于那些不通过传统总线(如 PCI、USB 等)连接的设备...

Linux驱动使用高精度定时器控制LED亮度

Linux hrtimer(高分辨率定时器)是Linux内核提供的一种高精度定时机制,用于支持微秒(μs)甚至纳秒(ns)级别的定时操作,相比传统的定时器(如timer_list)具有更高的精度和灵活性...

Linux驱动如何匹配设备?

在Linux内核的struct platform_driver驱动结构中,id_tableof_match_table都用于驱动与设备的匹配,但它们的用途和工作方式有所不同...

Linux驱动如何使用pwm设备?

在Linux内核中,struct pwm_device是用于描述和管理PWM(脉冲宽度调制)设备的核心数据结构。它通常定义在include/linux/pwm.h中,主要作用是为PWM控制器(硬件)和消费者(驱动)之间提供统一的抽象接口...

Linux驱动如何使用input_dev创建驱动?

struct input_dev是Linux内核中用于表示输入设备的数据结构,定义在<linux/input.h>头文件中。它用于管理和描述输入设备(如键盘、鼠标、触摸屏等)及其事件...

Linux驱动如何使用链表?

链表是一种常用的数据结构,在开发中经常会使用到。在Linux内核中同样也是一个很常用的数据结构,而且内核对链表实现了很多相关函数,极大方便了链表的使用。内核中的链表和一般的链表使用方法是不一样的...

Linux驱动如何创建sysfs class接口?

Linux的sysfs是一种虚拟文件系统,用于将内核对象、属性和关系导出到用户空间,方便用户和管理员查看和配置内核及硬件信息。sysfs通常挂载在/sys目录下...

如何给Linux字符驱动实现mmap?

mmap是Linux系统中的一种系统调用,用于将文件或设备映射到进程的地址空间,从而实现内存映射文件或共享内存的功能。通过mmap,进程可以直接访问文件内容,而无需使用传统的read和write系统调用...

如何在Linux驱动中读写文件?

一般来说,驱动是不会访问文件系统的,更不会在文件系统上创建除设备驱动文件外的其他文件。但是有时为了满足某些奇怪的需求,会有访问文件系统的需求...

如何在Linux驱动中使用DMA?

DMA(直接内存访问,Direct Memory Access)是一种允许硬件设备直接访问系统内存的技术,无需通过CPU的干预。它主要用于提高数据传输效率,减少CPU的负担...

如何在Linux驱动中使用自旋锁?

在Linux驱动中,自旋锁是很常用的工具,可以保证数据安全。因为自旋锁会一直占用CPU,所以一般用于保护能够快速完成的临界区...

如何在Linux驱动中使用定时器?

在Linux驱动中,定时器是很常用的工具,可以让延时执行一些函数。下面的例子实现了延时一秒钟执行一次定时器回调函数...

如何在Linux驱动中使用原子操作?

在Linux驱动中,原子操作是很常用的工具,可以保证数据安全。一般为了保护数据安全会使用锁机制,不过锁的开销比较大。如果是简单的整数运算...

如何使用Linux misc设备驱动注册机制?

在Linux内核中,miscdevice是一种用于简化字符设备驱动注册的机制。它适用于那些不需要主设备号的简单设备驱动。miscdevice使用一个固定的主设备号(10)...

Linux驱动使用I2C通信协议

很好奇I2C设备是如何与驱动进行匹配的吧?一般是通过设备树文件来描述I2C从设备的信息,例如名称和地址等。驱动通过和名称与从设备进行匹配...

Linux驱动GPIO中断

监听GPIO引脚变化是嵌入式开发的基础知识。在Linux驱动中监听GPIO电平变化也是很方便的。下面的例子就演示了如何监听GPIO引脚电平变化...

Linux驱动使用GPIO

GPIO引脚控制是嵌入式开发的基础知识。在Linux驱动中控制GPIO也是很方便的。下面的例子就演示了如何初始化GPIO引脚,并获取和设置GPIO引脚电位...

Linux驱动使用SPI协议获取设备信息

SPI是嵌入式开发中常用的一个通信协议,下面的例子给大家演示如何使用IIO子系统来和SPI设备进行通信,并获取设备的信息...

Linux驱动使用IIO子系统和设备通信

Industrial I/O (IIO)是 Linux 内核中的一个子系统,专为处理工业应用中的模拟数字转换器(ADC)、数字模拟转换器(DAC)、惯性测量单元(IMU)、光传感器、压力传感器等设备而设计...

Linux驱动如何使用raspi3b串口收发数据?

串口通信是嵌入式开发的常用通信方式之一。下面就给大家演示一下,如何使用Linux驱动来进行串口通信?下面的例子主要实现了串口通信回显功能...

如何通过设备树访问raspi3b的i2c设备

i2c是嵌入式开发的常用协议,下面我们学习通过Linux驱动来读写i2c设备的数据。通过设备树来获取i2c的信息,使用Linux内核的i2c子系统提供的接口来控制读写数据...

如何通过设备树初始化raspi3b的gpio?

点亮第一个LED灯是嵌入式开发的Hello World程序。下面我们学习通过Linux驱动来点亮LED灯。通过设备树来获取LED的信息,使用Linux内核的GPIO子系统提供的接口来控制LED灯...

你的第一个Linux设备树驱动程序

进行嵌入式开发的主流方法是使用设备树文件添加设备信息,驱动通过获取设备信息对设备进行操作。下面将演示如何写一个设备树插件文件和驱动代码...

在Linux驱动如何在sys目录创建文件?

/sys/kernel是Linux系统中的一个虚拟文件系统目录,位于sysfs文件系统下,主要用于提供内核相关的信息和配置接口。通过它,用户和应用程序可以访问和调整内核的某些运行时参数和行为...

Linux驱动如何在proc目录创建文件?

proc文件系统并不是真正存在于磁盘上的文件系统,而是由 Linux 内核动态创建的,用于提供一种访问内核数据结构和运行时系统信息的接口。它通常挂载在/proc目录下...

如何在Linux驱动中创建线程?

在Linux内核驱动中创建线程是一个很常见的功能。下面的例子使用两种方法来创建线程。其中kthread_run函数不需要创建线程,直接就让线程运行起来,比较方便...

如何给Linux驱动实现fasync信号通知函数?

如果给Linux驱动实现fasync函数,那么驱动就能够通过信号机制异步通知客户端程序。这个方法一般比较少用,但我们也要熟悉这种方法。下面就给大家带来一个完整的例子...

如何给Linux驱动实现信号通知机制?

send_sig_info是Linux内核中的一个函数,用于向指定进程发送信号。它允许内核代码向特定进程发送信号,并附带一些额外的信息(通过struct siginfo结构体传递)...

如何在Linux驱动中使用等待队列同步线程?

线程同步在编程中是很常见的功能。在Linux内核中也提供了等待队列同步机制,可以很方便进行线程同步。下面就给出了完整的例子,写入操作触发等待队列,等待队列中的等待者会得到执行的机会...

如何给Linux字符设备驱动实现poll?

一个驱动实现了poll函数,就能够让客户端程序使用selectepoll等异步IO系统调用进行读写驱动,大大丰富了驱动的使用。下面的例子就带大家看看如何去实现...

如何写一个最简单的字符设备驱动?

字符设备驱动在Linux系统中是很常见的。字符设备驱动是Linux内核中用于管理字符设备的模块。字符设备以字节流形式进行数据传输,通常不支持随机访问...

如何使用dmesg调试驱动?

dmesg是一个用于显示或控制内核环形缓冲区消息的命令。它主要用于查看系统启动时的内核消息,以及系统运行期间内核产生的各种日志信息...

如何进行Linux驱动调试-dump_stack?

dump_stack() 是 Linux 内核中一个关键的调试函数,用于在系统发生异常(如内核panic、oops或死锁)时打印当前线程的调用堆栈信息...

如何进行Linux驱动调试-oops?

oops是Linux内核中用于处理严重错误的机制。当内核检测到无法恢复的错误(如空指针解引用、非法内存访问等)时,会触发...

如何进行Linux驱动调试-BUG_ON?

BUG_ON()是Linux内核中一个用于调试和错误处理的宏,用于在特定条件为真时触发内核异常(如panicoops),并打印调试信息(包括调用堆栈)...

如何进行Linux驱动调试-WARN_ON?

dump_stack函数的基础上还有一个WARN_ON()函数。 WARN_ON() 是Linux内核中一个用于调试的宏,用于在特定条件为真时触发警告并打印警告信息,同时输出当前线程的调用堆栈(Call Stack)...

Linux驱动相互调用

应用层的程序一般都会依赖一些外部的库,驱动程序也不例外。驱动间也可以形成一个依赖链,将驱动的功能分割到不同的驱动。能减少驱动的复杂性和增加可维护性...

如何给Linux内核驱动传递参数?

在写函数的时候,为了控制内部的运行逻辑或者对内部进行初始化,一般都会给函数传入参数。同样的为了控制内核驱动的行为,我们也希望在驱动加载的时候给它传入初始化参数...

如何将驱动添加到内核源码树?

大多数时候我们都不需要将内核驱动添加到内核源码中,可以通过insmod命令在需要的时候自己手动安装驱动。不过将驱动添加到源码树中有下面的好处...

我的第一个内核驱动程序?

学习Linux内核相关知识从什么角度入手不好把握。有的人喜欢从文档开始看,了解整个内核的体系结构,再看源代码。有的人喜欢一开始就看源代码,不过内核源码有900M,就算是去除驱动相关代码也有400M...

上一页 1 / 1 下一页