Linux驱动
文章平均质量分 56
你好,工程师
这个作者很懒,什么都没留下…
展开
-
串行通信协议 SPI
SPI(Serial Peripheral Interface)是一种串行通信协议,常用于连接微控制器、存储器、传感器和其他外围设备。SPI通常由一个主设备(通常是微控制器)和一个或多个从设备组成。原创 2024-03-20 21:01:28 · 473 阅读 · 0 评论 -
Linux 驱动 中断(二)
在 Linux 内核中,中断下半部(也称为中断下半场)是指在中断服务程序(Top Half)执行完毕后,在上下文之外延迟执行的一些操作。中断下半部通常用于处理那些不适合在中断上下文中立即执行的任务,以保持中断服务程序的快速响应。工作队列是一种内核机制,用于在延迟上下文中异步执行较为耗时的任务。Tasklet 通常在中断服务程序的上下文中调度,并在延迟上下文中执行。软中断是在内核中断上下文之外的一种执行机制。是 Linux 内核中用于调度 Tasklet 来执行任务的函数,在中断处理触发后合适的位置执行;原创 2024-03-04 18:26:57 · 491 阅读 · 0 评论 -
串行通信协议 I2S
I2S 是指“Inter-IC Sound”(集成电路间音频传输)。它是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种用于连接数字音频设备的串行总线接口标准。原创 2024-03-04 17:02:48 · 325 阅读 · 0 评论 -
Linux 驱动 中断(一)
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。原创 2024-03-01 15:20:17 · 592 阅读 · 0 评论 -
串行通信协议 UART
UART(Universal Asynchronous Receiver/Transmitter)是一种常见的串行通信协议,用于在计算机系统和外部设备之间进行数据传输。UART不同于I2C和SPI等同步串行通信协议,它是一种异步通信协议,意味着数据的传输不需要共享时钟信号。原创 2024-02-29 11:10:19 · 403 阅读 · 0 评论 -
串行通信协议 IIC
I2C(Inter-Integrated Circuit),即串行通信协议,是一种用于短距离数字数据通信的串行通信协议。它由飞利浦公司(现在的恩智浦半导体)开发,并在许多嵌入式系统和电子设备中得到广泛应用。原创 2024-02-28 17:59:46 · 466 阅读 · 0 评论 -
Linux驱动 字符设备驱动程序(二)
实现字符设备启动程序的基本框架申请设备号,使用alloc_chrdev_region动态分配一个或多个设备号; 创建设备类,使用class_create函数创建自己的设备类,在 sys/class 可见; 注册设备,通过cdev_init和cdev_add注册设备,并实现file_operations,与之建立关联; 创建设备,使用device_create将注册的设备建立关联,设备会在 /dev 目录创建。#include <linux/init.h>#include <原创 2021-10-16 23:27:33 · 162 阅读 · 0 评论 -
Linux 驱动 字符设备驱动程序(一)
字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等。在UNIX系统中,字符设备以特别文件方式在文件目录树中占据位置并拥有相应的结点。--百度百科字符设备的访问是通过文件系统内的设备名称进行的。那些名称称为特殊文件、设备文件,或者简单称之为文件系统树的节点。设备号设备号分为主设备号和次设备号,主设备号标识设备对应的驱动程序,此设备号用于正确的确定设备文件所指的设备。在文件描述中c便表示字符设备,同样的还有块设备,b表示,后面两组数字便是主设备号和次设备号。设备原创 2021-10-16 23:26:52 · 149 阅读 · 0 评论 -
Linux驱动 构造和运行模块(二)
应用程序与核心模块区别大多应用程序是从头到尾执行单个任务,而模块确只是预先注册自己以便服务于将来的某个请求。用户空间/内核空间模块运行在所谓的内核空间,而应用程序运行在所谓的用户空间;内核运行在最高级别也称为超级用户态,应用程序运行在最低级别也称用户态。内核中的并发linux系统中通常正在运行多个并发进程,并且可能有多个进程使用我们的驱动程序...原创 2021-10-12 13:37:46 · 83 阅读 · 0 评论 -
Linux驱动 构造和运行模块(一)
在Linux种有一个很好的特性:内核提供的特性可在运行时拓展。这就意味着当系统启动并运行时,我们可以向内核添加功能,当然也可以移除功能。可在运行时添加到内核中的代码称为"模块"。每个模块由目标代码组成,可以使用insmod程序将模块连接到正在运行的内核,也可以使用rmmod程序移除连接。一个简单的例程:#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void)原创 2021-10-12 11:54:16 · 279 阅读 · 0 评论