文章 2023-09-08 来自:开发者社区

Linux驱动IO篇——IO多路复用

什么是IO多路复用简单来说,就是解决能够同时操作多个设备的方法,及时处理多个设备的数据。具体的,是指单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力。IO多路复用的三种方法Linux的IO多路复用有三种方法:select、poll、epoll,且这三种方法都是系统调用。这里介绍嵌入式中常用的两种select和poll。select相关接口/* According to POSIX....

Linux驱动IO篇——IO多路复用
文章 2023-09-08 来自:开发者社区

Linux驱动IO篇——阻塞/非阻塞IO

非阻塞IO在应用程序中,使用open函数打开一个/dev目录下的一个设备文件时,默认是以阻塞的方式打开。所谓阻塞,就是当我们请求的资源不可用时(资源被占用,没有数据到达等等),会使得进程休眠,从现象看就是卡在那里。应用层如果我们希望以非阻塞方式打开设备文件,则应该在open设备文件时,添加一个O_NONBLOCK的flag参数,例如:fd = open("/dev/vser0", O_RDWR ....

Linux驱动IO篇——阻塞/非阻塞IO
文章 2023-09-08 来自:开发者社区

Linux驱动IO篇——ioctl设备操作

应用程序如果想要设置/获取驱动层的数据,一般是驱动提供一个ioclt接口,然后应用层调用。因此,学会在驱动中实现ioctl接口是必要的一项技能。ioctl命令编码规则想要定义一个自己的ioctl命令,必须要遵从ioctl的编码规则。一个ioctl命令由32比特位表示,每个比特位都有不同的含义,不同版本的内核定义可能有些差异,具体参考文档“Documentation/ioctl/ioctl-dec....

Linux驱动IO篇——ioctl设备操作
文章 2023-09-08 来自:开发者社区

一个Linux驱动工程师必知的内核模块知识

最简单的驱动#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> static int __init my_init(void) { printk("my_init\n"); return 0; } static void __exit my_exit(...

文章 2023-09-08 来自:开发者社区

不敲一行代码,实现Linux下的LED驱动!

前言如果要实现一个设备的驱动,一行驱动代码都不用写,这听起来是不是天方夜谭呢?但这并不是不可实现的,因为全世界的内核开发者都非常热心,只要是能写的驱动,他们基本都已经写了。今天,我们就站在巨人的肩膀上,利用内核开发者已经写好的驱动来实现我们想要的功能,本篇讨论的是LED驱动。LED驱动我们以imx6ull pro开发板的板载led为例,其板载了一个可控制的Led2,原理图如下:LED2进行上拉电....

不敲一行代码,实现Linux下的LED驱动!
文章 2023-09-08 来自:开发者社区

Linux驱动 | debugfs接口创建

上篇介绍了procfs接口的创建,今天再介绍一种debugfs接口的创建。实现效果在/sys/kernel/debug/目录下创建一个ion/test文件,通过cat、echo的方式进行读写操作:前期准备内核配置打开debugfs:CONFIG_DEBUG_FS=y挂载debugfs文件系统:mount -t debugfs none /sys/kernel/debug代码实现读写变量:#inc....

Linux驱动 | debugfs接口创建
文章 2023-09-08 来自:开发者社区

Linux驱动 | procfs接口创建

上篇介绍了Linux驱动中sysfs接口的创建,今天介绍procfs接口的创建。procfs:可实现类似cat /proc/cpuinfo的操作procfs接口创建实现效果:例如, 在/proc下创建一个clk节点,通过cat /proc/clk可查看内容:代码实现:系统内核版本Linux4.9.88在驱动中添加以下代码:#include <linux/kernel.h> #incl....

Linux驱动 | procfs接口创建
文章 2023-09-08 来自:开发者社区

Linux驱动 | 在驱动中创建sysfs接口

前言在一些linux开发板中,经常可以看到通过echo的方式来直接控制硬件或者修改驱动,例如://灯灭 echo 0 >/sys/class/leds/firefly:blue:power/brightness //灯亮 echo 1 >/sys/class/leds/firefly:blue:power/brightness这是怎么做到呢?实际上,这是因为在驱动中提供了sysfs.....

文章 2023-09-08 来自:开发者社区

Linux reset子系统及驱动实例

上篇讲了Linux clock驱动,今天说说Linux的reset驱动。时钟和复位是两个不同的驱动,但通常都是由负责clock驱动的人,把reset驱动完成。同样,reset驱动也是由芯片厂商去完成的。Linux reset子系统reset子系统非常简单,与clock子系统非常类似,但在驱动实现上,reset驱动更简单。因为clock驱动主要是时钟的实现,涉及到固定时钟、分频、门控等一些时钟的分....

Linux reset子系统及驱动实例
文章 2023-09-08 来自:开发者社区

Linux clock子系统及驱动实例

在Linux驱动中,操作时钟只需要简单调用内核提供的通用接口即可,clock驱动通常是由芯片厂商开发的,在Linux启动时clock驱动就已经初始化完成。本篇介绍Linux clock子系统以及clock驱动的实现。基本概念晶振:晶源振荡器,提供时钟。PLL:Phase lock loop,锁相环。用于提升频率。OSC:oscillator的简写,振荡器。clock子系统Linux的时钟子系统由....

Linux clock子系统及驱动实例

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Linux宝库