
linux驱动
文章平均质量分 69
lxllinux
这个作者很懒,什么都没留下…
展开
-
VGA接口笔记
vga接口笔记原创 2022-01-04 16:08:33 · 3742 阅读 · 0 评论 -
linux内核 信号量、自旋锁、completion、互斥体、延时函数
访问共享资源的代码区域称为临界区( critical sections),临界区需要被以某种互斥机制加以保护,方法有中断屏蔽、原子操作、自旋锁和信号量等。 在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发"竞态",因此我们必须对共享资源进行并发控制。Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候...原创 2018-11-20 13:30:19 · 1768 阅读 · 1 评论 -
linux i2c驱动
1、Linux 的 I2C 体系结构分为 3 个组成部分( 1) I2C 核心(层)。I2C 核心提供了 I2C 总线驱动和设备驱动的注册、注销方法, I2C 通信方法(即“ algorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。( 2) I2C 总线驱动(适配器层)。I2C 总线驱动是对 I2C 硬件体系结构中适配器端的实现,适配器可由 CPU 控制...原创 2018-11-23 11:38:59 · 320 阅读 · 0 评论 -
linux设备驱动 阻塞与非阻塞 I/O、异步通知与异步IO
1、阻塞与非阻塞 I/O阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。非阻塞操作的进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直至可以进行操作为止。 阻塞从字面上听起来似乎意味着低效率,实则不然,如果设备驱动不阻塞,则用户想获取设备资源只能不停...原创 2018-11-22 11:33:00 · 653 阅读 · 0 评论 -
linux设备驱动模型之Kobject、kobj_type、kset
一、sysfs文件系统简介:1、sysfs概述sysfs文件系统是内核对象(kobject)、属性(kobj_type)、及它们相互关系的一种表现。sysfs非常重要的特征:用户可以从sysfs中读出内核数据,也可以将用户数据写入内核。2、内核结构与sysfs对应关系:kobject -->目录kobj_type-->属性文件3、特点sysfs文件系统...转载 2018-11-19 10:34:16 · 697 阅读 · 0 评论 -
linux驱动---字符设备的注册register_chrdev说
首先我们在注册函数里面调用了register_chrdev(MEM_MAJOR,"mem",&memory_fops),向内核注册了一个字符设备。第一个参数是主设备号,0代表动态分配,这里的MEM_MAJOR是1。第二个参数是设备的名字,第三个参数是文件操作指针。每个设备文件对应有两个设备号:一个是主设备号,标识该设备的种类,也标识了该设备所使用的驱动程序;另一个是次设备号,标识使...转载 2018-11-05 11:02:15 · 1483 阅读 · 1 评论 -
字符设备号管理
在《深入Linux设备驱动程序机制》书中 在第二章讲解字符设备的时候,个人觉得比较有收获的主要是两个方面的知识:1、字符设备号的管理原理(char_device_struct)2、字符设备驱动的file_operation中的函数如何与file结构体中的相应结构对应上,并被应用程序调用。 对于以上两个主要的知识点,我觉得书上的条理已经很清楚的,很容易看懂...转载 2018-11-05 10:50:19 · 1037 阅读 · 0 评论 -
Linux设备驱动之Kobject、Kset
LDD3中说,Kobject的作用为: 1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。 2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。 3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接而构成一个多层次的体系结构。kobject 实现了该结...转载 2018-11-05 09:12:58 · 510 阅读 · 0 评论 -
USB Gadget Storage功能调试
由于工作的需要,实现板卡通过Micro USB线与PC连接,作为PC的 外设存储,PC拷贝数据到板卡中,或者把板卡中的数据通过USB线拷贝到PC端,实现数据的交互,板卡采用Linux操作系统,笔者采用的是AM335X 处理器平台: 开发过程中修改文件顺序记录如下: 如果板卡作为PC的外设,通过USB线连接,那么板卡处于USB Device工作模式,也即是USB Gadg...转载 2018-09-11 10:34:39 · 5224 阅读 · 1 评论 -
linux设备:cdev和kobj_map
Linux kernel v3.6.7先看kobj_map相关的代码涉及到的文件<linux/kobj_map.h><drivers/base/map.c>typedef struct kobject *kobj_probe_t(dev_t, int *, void *);struct kobj_map;int kobj_map(...转载 2018-08-17 15:00:14 · 2741 阅读 · 2 评论 -
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
我们知道,SPI数据传输可以有两种方式:同步方式和异步方式。所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回。而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成...转载 2018-07-27 15:55:01 · 410 阅读 · 0 评论 -
Linux SPI总线和设备驱动架构之三:SPI控制器驱动
我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1. 申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等;2. 配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作;3. 向通用接口层提供接口,使得上层的协...转载 2018-07-27 15:50:25 · 276 阅读 · 0 评论 -
Linux SPI总线和设备驱动架构之二:SPI通用接口层
软件架构在内核的SPI驱动的软件架构中,进行了合理的分层和抽象,如下图所示: 图2.1 SPI驱动的软件架构SPI控制器驱动程序SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给SPI设备,同时把从设备收到的数据返回给上层的协议驱动,因此,内核把SPI控制器的驱...转载 2018-07-27 15:44:15 · 2676 阅读 · 0 评论 -
linux I2C 驱动之----i2c_client 的注册
linux的设备模型将设备分成了driver,device两大部分,driver即是设备的驱动,device即是硬件设备的具体描述,比如说:设备所拥有的中断,地址等,这里分析一下I2C驱动中device,也即i2c_client的注册。(注:这里所说明的是linux 系统i2c设备新采用的方法。) 在注册i2c驱动的时候,会去linux系统中的全局变量_i2c_board_list链表...转载 2018-07-03 17:56:48 · 656 阅读 · 0 评论 -
I2C——i2c_driver的注册及probe探测函数调用过程
在 linux I2C 驱动之----i2c_client 的注册中介绍了i2c_client的注册,现在再来说说i2c_driver的注册过程。 每一个驱动程序都有 module_init(xxxx_init) 这个语句,它代表系统启动的时候会自动执行 xxxx 这个函数,也就是说驱动的人口函数是由module_init来定义的。当然还有module_exit(XXXX),它代表系统...转载 2018-07-03 17:48:37 · 6630 阅读 · 2 评论 -
Linux 设备驱动之 ——I2C总线
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。2、I2C总线驱动(I2Cadapter/Algo d...转载 2018-07-03 17:46:28 · 371 阅读 · 0 评论