
Linux驱动
迷失0
这个作者很懒,什么都没留下…
展开
-
Linux总线设备驱动模型学习
Linux总线驱动模型主要在2.6以后内核提出功能:主要对热插拔、跨平台移植性的要求支持当外部设备接入总线后,总线会与挂载到总线上的每个驱动一一进行匹配,如果匹配上就调用被匹配上的驱动。Linux内核中,总线由bos_type结构表示,定义在struct bus_type{const char *name; 总线名称int (*mat原创 2015-06-27 13:31:55 · 649 阅读 · 0 评论 -
linux_I2C学习一
一、I2C总线结构:I2C总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线只有两根双向信号线。SDA:Serial Data Line-数据线SCL:Serial Clock-时钟线I2C总线协议规定:从设备采用 7位的地址。 D7~ D1:从设备地址。 D0位:数据传送方向位,为“0”时表示主设备向从设备原创 2015-07-09 13:39:37 · 512 阅读 · 0 评论 -
linux_I2C学习三(I2C子系统)
一、Linux--I2C子系统1. I2C核心I2C 总线和 I2C 设备驱动的中间枢纽,它提供了 I2C 总线驱动和设备驱动的注册、注销方法等。2. I2C控制器驱动I2C CPU对 I2C控制器的驱动实现, 控制器可在 CPU 外部, 也可以集成在 CPU 内部。3. I2C设备驱动对 I2C从设备的驱动实现,如AT24C02的驱动。二、linu原创 2015-07-09 16:08:03 · 637 阅读 · 0 评论 -
Linux-FLASH驱动设计四
在Linux内核中MTD子系统为NORFLASH、和NANDFLASH设备提供统一的接口,从而使得FLASH驱动设计简化。#cat /proc/mtd:可以查看分区,dev目录下以“mtd”打头的设备文件对应相应的分区。MTD子系统结构图:MTD子系统简化了FLASH驱动的编写、让驱动更加规范。原创 2015-06-29 13:59:54 · 482 阅读 · 0 评论 -
Linux_USB驱动程序设计学习
Linux_USB软件系统架构构成:usb主控制驱动(USB Host Controller Driver):为USB主控制器提供驱动usb核心(USB Core):为usb主控制器和usb设备驱动连接起桥梁作用usb设备驱动(USB Client Driver):为连接到usb主机的设备提供驱动USB设备组成结构:usb设备包括配置(c原创 2015-08-09 23:32:38 · 763 阅读 · 0 评论 -
Linux 硬中断和软中断
概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的入口点,进行中断处理。 (1) 硬中断由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操转载 2015-10-11 10:53:43 · 6604 阅读 · 0 评论 -
Linux-3.0.35输入子系统
Programming input drivers~~~~~~~~~~~~~~~~~~~~~~~~~1. Creating an input device driver~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.0 The simplest example~~~~~~~~~~~~~~~~~~~~~~~~Here comes a very simp原创 2015-10-12 11:22:46 · 884 阅读 · 0 评论 -
Linux中断分层工作队列学习
Linux中断嵌套处理:概念:当一种类型的中断发生时又产生另外一种中断 慢速中断:当处理中断函数时,中断总开关是不关闭的,允许别的中断产生。1.不同中断设备:处理中断开始。。。。。。发生另外中断,执行发生的中断,执行完成,返回之前的中断处理函数继续执行。。。。2.相同类型设备:处理中断开始。。。。。。发生另外中断,忽略发生的中断,继续执行之前的中断函数,造成中原创 2015-06-26 16:33:41 · 948 阅读 · 0 评论 -
Linux使用定时器消抖
按键去抖动的方法主要有两种,一种是硬件电路去抖动;另外一种就是软件延时去抖。而延时又一般分为两种,一种是for循环等待,另一种是定时器延时。在操作系统中,由于效率方面的原因,一般不允许使用for循环来等待,只能使用定时器。Linux内核使用struct timer_list来描述一个定时器:{struct list_head entry;unsigned long expi原创 2015-06-26 16:49:33 · 1050 阅读 · 0 评论 -
Linux阻塞型驱动设计
当一个设备无法立刻满足用户的读写请求时驱动程序应当(缺省地)阻塞进程,使他进入等待(睡眠)状态(释放资源,提高程序运行的效率),直到请求可以得到满足。对于驱动的读写规范,驱动的读写都要按照阻塞模型设计。进程进入等待队列后会进入睡眠状态。内核等待队列定义、初始化:1.定义等待队列:wait_queue_head_t my_queue2.初始化等待队列:init_w原创 2015-06-26 20:33:40 · 573 阅读 · 0 评论 -
Linux按键驱动编写
#include <linux/module.h>#include <linux/init.h>#include <linux/miscdevice.h>#include <linux/interrupt.h>#include <linux/io.h>#include <linux/fs.h>#include <asm/uaccess.h>#define GPFCON 0x560000原创 2015-06-26 20:06:28 · 508 阅读 · 0 评论 -
Linux copy_to_user、copy_from_user使用
copy_from_user函数原型:static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n){ if (access_ok(VERIFY_READ, from, n)) n = __arch_copy_from_user(to, from,原创 2015-06-26 20:30:59 · 6139 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-06-26 20:02:36 · 316 阅读 · 0 评论 -
Linux-FLASH驱动设计一
块设备概念:字符设备是指访问的最小单位为一个字节,块设备是指能以块为单位进行访问的设备,块大小一般是512字节的整数倍(不同系统大小不同)。常见的块设备包括硬件,SD卡,光盘等。块设备访问一个字节方法:首先以一个块为大小读取硬件数据出来,然后再做相应的处理。块设备驱动系统架构:VFS系统架构:VFS是对各种具体文件系统的一种封装,为用户程序访问文件提原创 2015-06-28 22:08:52 · 431 阅读 · 0 评论 -
Linux-FLASH驱动设计二
块设备驱动系统分析:功能:把内存划出512k,然后利用驱动程序做成块设备进行相应的访问。#include #include #include #include #include /* printk() */#include /* kmalloc() */#include /* everything... */#include /* error codes原创 2015-06-28 22:44:51 · 409 阅读 · 0 评论 -
Linux-FLASH驱动设计三
#include #include #include #include #include static int major = 0;static int sect_size = 512; //指明每个扇区大小为512static int nsectors = 1024;struct blk_dev{ int size;原创 2015-06-29 13:57:39 · 444 阅读 · 0 评论 -
Linux输入子系统模型
Linux输入子系统模型:Input Device Driver:输入设备驱动,需要用户自己实现Input Core:输入子系统核心部分,Linux内核已经做好Input Event Driver:输入时间驱动,Linux内核已经做好Hardware:输入设备任何一次输入事件,如鼠标移动, 按键按下,都需要通过InputDeviceDriver- >InputC原创 2015-06-28 13:32:42 · 549 阅读 · 0 评论 -
Linux平台总线设计
平台总线(Platform bus)是Linux2.6内核加入的一种虚拟总线,其优势在于采用了总线的模型对设备与驱动进行了管理,这样提高了程序可移植性。用户不用自己创建虚拟总线,可直接调用此总线使用。通过平台总线机制开发设备驱动流程图:平台设备匹配函数:/** * platform_match - bind platform device to platfor原创 2015-06-27 14:44:26 · 562 阅读 · 0 评论 -
Linux TTY子系统学习笔记
TTY子系统重要结构体:struct tty_driver { int magic; /* magic number for this structure */ struct kref kref; /* Reference management */ struct cdev cdev; struct module *owner; const char *driver_name;原创 2015-12-12 17:18:24 · 954 阅读 · 0 评论