
LINUX设备驱动进阶
文章平均质量分 62
蜗蜗前行
嵌入式软件
展开
-
linux设备驱动中断程序深度完全解析
裸机中断 1.中断统一入口 2.事先注册中断处理程序 3.根据中断源的编号处理程序linux系统: irq.svc中断入口获得中断源的编号 根据中断号找到irq_desc结构,在irq_desc结构中找到action结构,执行用户注册中断处理函数 驱动程序支持中断应该做什么 驱动程序实现中断处理程序, 注册到中断号所对应irq_desc中 linux中断处理程序设计中断注册,中断处原创 2016-08-04 00:30:28 · 751 阅读 · 0 评论 -
LINUX USB驱动开发(2)-USB驱动体系分析
一.日常USB现象:1.将USB设备接入电脑上,右下角弹出“发现android phone” 2.跳出对话框。提示你安装驱动程序问题1:既然没有安装驱动,为何能知道设备是“Android phone”答1:windows里已经有了USB的“总线驱动程序”,接入USB设备后,是“总线驱动程序”知道你是“android phone”,提示按安装“设备驱动程序” USB总线驱动程序:识别USB设备,给原创 2017-02-12 20:41:35 · 687 阅读 · 0 评论 -
LINUX USB驱动分析(3)-USB驱动分析
前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。当然,这些制造商和设备标识需要我们编写进USB 驱动程序中。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。和I2C 总线设备驱动编写一样,所原创 2017-02-13 11:21:23 · 1314 阅读 · 0 评论 -
iTop4412之ADC驱动开发
adc.c#include<linux/module.h>#include<linux/init.h>#include<linux/platform_device.h>#include<linux/interrupt.h>#include<linux/fs.h>#include<linux/wait.h>#include<linux/sched.h>#include<linux/ua原创 2017-01-15 15:11:00 · 2006 阅读 · 0 评论 -
网卡驱动流程分析
1.网卡驱动架构分析 1.1linux网络子系统 1.2.重要数据结构 1.3.网卡驱动架构分析1.1linux网络子系统linux网络子系统可以分为System call interface(系统调用接口),Protocol agnostic interface(协议无关接口),Network protocols(网络协议栈),Device agnostic interface(设备无关接口原创 2016-10-03 14:17:36 · 3511 阅读 · 1 评论 -
输入子系统模型解析
输入子系统模型解析1.为什么需要输入子系统? 2.输入子系统的介绍 3.输入子系统案例分析 范例代码#include<linux/init.h>#include<linux/module.h>#include<linux/input.h>#include<linux/miscdevice.h>#include<linux/fs.h>#include<linux/interrupt.h原创 2016-10-05 14:41:36 · 598 阅读 · 0 评论 -
块设备驱动程序
块设备是指只能以块为单位进行访问的设备,块大小一般是512个字节的整数倍。常见的块设备包括SD卡。 VFS是对各种具体文件系统的一种封装,为用户程序访问文件提供统一的接口。 当用户发起文件访问请求的时候,首先会到Disk Cache中寻找文件是否被缓存了,如果在cache中,则直接从cache中读取。如果数据不在缓存中,就必须要到具体的文件系统中读取数据了。#include<linux/modu原创 2016-11-13 20:34:51 · 376 阅读 · 0 评论 -
LINUX设备驱动之SPI总线驱动分析
1.内核SPI主要结构2.SPI驱动框架2.1枚举过程driver/spi/spi.c 2.2数据收发过程spi_write spi_message_init(); 初始化一个spi_message/一个不可打断的SPI传输过程:CS=0,传数据,cs=1/ /一个spi_message由多个spi_transfer组成/ spi_message_add_tail(&t, &m);/spi原创 2017-02-22 14:50:27 · 655 阅读 · 0 评论 -
网卡驱动
完成网卡驱动程序流程: 1.分配一个net_device结构体 2.设置 2.1发包函数:hard_start_xmit 2.2收到数据时(在中断处理函数里)用netif_rx上报数据 2.3其他设置 3.注册:register_netdevlinux3.0内核下虚拟网卡#include <linux/errno.h>#include <linux/netdevice.h>#incl原创 2017-05-29 16:53:08 · 822 阅读 · 0 评论 -
LINUX USB驱动开发(1)-USB驱动重要数据结构
USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功能单元: a – 这里的USB总线接口指的是USB设备中的串行接口引擎(SIE); b – USB逻辑设备被USB系统软件看作是一个端点的集合; c – 功能单元被客户软件看作是一个接口的集合。SIE、端点原创 2017-02-12 20:21:09 · 562 阅读 · 0 评论 -
Linux驱动之I2C总线驱动开发
一、IIC 基础概念1.I2C 基础概念IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线 ###1.IC总线的特点 IIC总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持4原创 2017-01-16 21:07:47 · 1049 阅读 · 1 评论 -
混杂设备驱动模型解析
1.混杂设备概念描述在linux系统,存在一类设备字符设备,它们拥有相同的设备号10,但次设备号不同,我们称为混杂设备,是字符设备的一个分支,所有混杂涉笔形成一个链表,对设备访问时内核根据次设备号查找响应的混杂设备。 linux驱动模型分多,但字符设备,混杂设备,网络设备都会使用一种结构来描述该设备。 linux中使用struct miscdevice来描述混杂设备1.1初始化描述结构miscd原创 2016-08-07 21:11:17 · 546 阅读 · 8 评论 -
总线设备驱动模型
1.总线设备模型概述 2.总线 3.驱动 4.设备 1.总线设备模型概述 随着技术的不断进步,系统的拓扑结构也越来越复杂,对热插拔,跨平台移植性的要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,从Linux2.6内核开始提供了全新的设备模型。总线设备驱动对热插拔要求越来越高。 在linux系统中,有很多总线,例如USB总线挂载很多USB设备驱动程序(鼠标,USB网卡原创 2016-09-30 16:34:34 · 383 阅读 · 0 评论 -
平台设备驱动开发流程设计
1平台总线概述 2.平台设备 3.平台驱动 4.范例程序 1平台总线概述 1.1平台总线概述 平台总线(Platform bus)是linux2.6内核加入的一种虚拟总线,是在linxu系统中最为重要的一种总线。 linux系统中除了去支持这些实际的总线,USB总线,PCI总线,还支持虚拟总线,之前是自己创建总线并基于总线去创建驱动和设备。 linux提供了虚拟总线,平台总线(Pla原创 2016-09-30 16:51:27 · 1207 阅读 · 0 评论 -
串口驱动流程分析
TTY驱动程序架构 TTY概念解析 TTY架构分析 ##1.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备。Linux把每个串行端口都看作是一个字符设备。这些串行 端口所对应的设备名称是/dev/ttySAC0;/dev/ttySAC1……原创 2016-09-30 17:00:06 · 3002 阅读 · 0 评论 -
itop4412 LCD设备驱动详解(一)之DEVICE
LCD的工作,在kernel中有device和driver两个描述,这也是必然。 一.先看device 在palt-s5p/dev-fimd-s5p.c 定义了一个 struct platform_device s3c_device_fb 平台设备#ifdef CONFIG_FB_S5P // 选择开关static struct resource s3cfb_resource[] = {转载 2016-11-05 20:13:10 · 2615 阅读 · 0 评论 -
itop4412 LCD设备驱动详解(二)之DRIVER
LCD的工作,在kernel中有device和driver两个描述,这也是必然。 在 分析一中我们看了device,现在我们来看看driver。 注:在驱动分析中,我们会在数据手册和原理图中查看。首先来看看lcd驱动框架(ps 该框图来自网上) 由上图可以看出 lcd的应用层 通过 内核的fbmem接口 再调用驱动xxxfb.c的内容 而fbmem接口是内核提供的,所有驱动设计人员转载 2016-11-05 20:34:06 · 2014 阅读 · 0 评论 -
itop4412 LCD设备驱动详解(三)之PROBE
lcd的工作,在kernel中有device和driver两个描述,这也是必然在上一节中我们详解介绍了 s3cfb_main.c ——-probe函数的框架。 回顾一下probe函数的作用: 1. 获取平台设备 device中的资源 2. 对设备做了一下相应的初始化 3. 申请了fb_info ,根据要求进行了填充 4. 向内核提交了fb_info 5. 使能设备等 6.转载 2016-11-05 21:16:40 · 2042 阅读 · 0 评论 -
itop4412 LCD设备驱动详解(四)之PROBE再深入
LCD的工作,在kernel中有device和driver两个描述,这也是必然在第二节中我们详解介绍了 s3cfb_main.c ——-probe函数的框架。 回顾一下probe函数的作用: 1. 获取平台设备 device中的资源 2. 对设备做了一下相应的初始化 3. 申请了fb_info ,根据要求进行了填充 4. 向内核提交了fb_info 5. 使能设备等 6.转载 2016-11-05 21:47:17 · 1676 阅读 · 0 评论 -
块设备驱动再次剖析
假设对flash:1.写扇区0,2.写扇区1 1. 读出整块到buffer, 修改buffer里扇区0 擦除整块 烧写整块 2.读出整块到buffer 修改buffer里扇区1 擦除整块 烧写整块 框架: app:open,read,write “1.txt” ——————————————文件的读写 文件系统:vfat,ext2,ext3,yaffs(把文件的读写转换成扇区原创 2017-05-29 17:00:05 · 371 阅读 · 0 评论