![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动
Tillmanyang
记录自己做的一切
展开
-
Linux下norflash驱动编写方法
Linux下norflash驱动编写步骤1. 分配map_info结构体2. 设置: 物理基地址(phys), 大小(size), 位宽(bankwidth), 虚拟基地址(virt) 3. 使用: 调用NOR FLASH协议层提供的函数来识别4. add_mtd_partitions如:#include #include #include #include原创 2013-10-03 11:51:27 · 1193 阅读 · 0 评论 -
linux的poll机制
Poll就是监控文件是否可读的一种机制,作用与select一样。应用程序的调用函数如下:int poll(struct pollfd *fds,nfds_t nfds, int timeout);Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返原创 2013-10-07 21:14:04 · 16374 阅读 · 0 评论 -
Linux系统下内核定时器的用法
Linux系统下内核定时器的用法内核定时器的用法其实很简单1.需要定义一个timer_list变量timer、先初始化timerinit_timer(&timer);2.对timer的相关参数赋值timer.function = fun;timer.expires = jiffies + TIMER_DELAY;3.向内核添加定时器add_timer(&ti原创 2013-10-07 21:41:03 · 816 阅读 · 0 评论 -
linux输入子系统
linux输入子系统输入子系统是基于字符设备驱动封装出来的框架,drver那边已经实现好的,只需要驱动程序员实现device就行。驱动框架如下: 1. 分配一个input_dev结构体 static struct input_dev *buttons_dev;buttons_dev = input_allocate_device(); 2. 设置原创 2013-10-07 22:52:43 · 625 阅读 · 0 评论 -
基于嵌入式Linux的视频采集系统---UVC驱动模型介绍
基于嵌入式Linux的视频采集系统---UVC驱动模型介绍UVC 即 usb video class。USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC转载 2013-10-09 16:01:25 · 1469 阅读 · 0 评论 -
基于V4L2的视频驱动开发
基于V4L2的视频驱动开发一、 V4L2 API及数据结构V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。1、常用的结构体在内核目录include/linux/videodev2.h中定义 struct v4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_R转载 2013-10-09 16:13:09 · 824 阅读 · 0 评论 -
V4L2框架
V4L2框架 V4L2有三层,应用层(SCI),核心层(V4L2_dev.c),硬件相关层(uvc_driver.c)一、应用层(SCI)通过调用open,read,write,ioctl函数访问到底层设备驱动二、核心层(V4L2_dev.c)这层是通过字符设备驱动实现一套标准V4L2_fops.这个结构体中的所有成员将对应调用到硬件相关层video_device->fop原创 2013-12-08 10:19:01 · 999 阅读 · 0 评论 -
摄像头设备驱动框架
摄像头设备驱动框架#include #include #include ...............................................static int myvivi_vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *cap){ s原创 2013-12-10 11:24:46 · 638 阅读 · 0 评论 -
V4L2最简单驱动实例
V4L2最简单驱动实例头文件.........................static const struct v4l2_file_operations myvivi_fops = { .owner = THIS_MODULE,};static struct video_device *myvivi_device;static void myvivi_rel原创 2013-12-10 10:41:32 · 1409 阅读 · 0 评论 -
Linux内核的异步通知
Linux内核的异步通知异步通知类似于中断,主要用于实现驱动通过发送信号通知应用程序。应用层:void my_signal_fun(int signum){..............................}int main(int argc, char **argv){int fd;int Oflags;原创 2013-10-07 22:28:37 · 980 阅读 · 0 评论 -
I2C设备驱动程序
I2C设备驱动程序I2C设备驱动程序框架1. 分配一个i2c_driver结构体2. 设置 attach_adapter // 它直接调用 i2c_probe(adap, 设备地址, 发现这个设备后要调用的函数); detach_client // 卸载这个驱动后,如果之前发现能够支持的设备,则调用它来清理 3. 注册:i2c_add_d原创 2013-10-03 18:39:50 · 711 阅读 · 0 评论 -
网络设备驱动程序
网络设备驱动程序学习网络设备驱动程序之笔记,实现一个最简单的虚拟网卡#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-10-03 18:17:03 · 882 阅读 · 0 评论 -
Lcd驱动程序
Lcd驱动程序怎么写LCD驱动程序?1. 分配一个fb_info结构体: framebuffer_alloc2. 设置3. 注册: register_framebuffer4. 硬件相关的操作#include #include .....................................struct lcd_regs {un原创 2013-10-03 16:45:50 · 874 阅读 · 0 评论 -
DMA驱动程序
DMA驱动程序在单CPU系统中,CPU同一时间只能做一件事,为了提高效率引入了DMA。下面的代码用DMA方式实现两块内存之间的数据传输大概步骤如下:1. 把源,目的,长度告诉DMA2.设置DMA参数a. 地址(增,减,固定)b. 启动方式(手工或外部)3. 启动DMA#include #include #include #include原创 2013-10-03 18:01:18 · 825 阅读 · 0 评论 -
nandflash的操作方法
nandflash的操作方法写nand flash驱动程序须知:问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址。问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在原创 2013-10-03 15:45:38 · 632 阅读 · 0 评论 -
2440触摸屏驱动程序
2440触摸屏驱动程序#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct s3c_ts_regs {原创 2013-10-03 17:03:28 · 707 阅读 · 0 评论 -
usb协议
usb驱动程序PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平 USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,就会把PC USB口的D-或D+拉高,从硬件的角度通知PC有新设备接入。usb协议基本知识:1. USB是主从结构的 所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能原创 2013-10-03 17:24:42 · 706 阅读 · 0 评论 -
usb驱动程序
参考 drivers\hid\usbhid\usbmouse.c#include #include #include #include #include #include static struct input_dev *uk_dev;static char *usb_buf;static dma_addr_t usb_buf_phys;static i原创 2013-10-03 17:33:42 · 614 阅读 · 0 评论 -
块设备驱动程序
块设备驱动程序块设备驱动程序框架1. 分配gendisk: alloc_disk2. 设置2.1 分配/设置队列: request_queue_t // 它提供读写能力 blk_init_queue2.2 设置gendisk其他信息 // 它提供属性: 比如容量3. 注册: add_disk#include原创 2013-10-03 18:55:50 · 515 阅读 · 0 评论 -
nandflash驱动开发
nandflash驱动开发#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-10-03 16:13:22 · 704 阅读 · 1 评论 -
深入理解linux内核v4l2框架之videobuf
Videobuf 下面来介绍以下 videobuffer 相关的一些东西。 V4L2 核心 api 提供了一套标准的方法来处理视频缓冲,这些方法允许驱动实现 read(),mmap(), overlay() 等操作。同样也有方法支持 DMA 的 scatter/gather操作,并且支持 vmallocbuffer( 这个大多用在 USB 驱动上 ) 。转载 2013-12-13 10:52:32 · 1238 阅读 · 0 评论