linux驱动开发
BoArmy
这个作者很懒,什么都没留下…
展开
-
输入子系统架构分析
内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动转载 2013-03-09 08:43:41 · 763 阅读 · 0 评论 -
字符设备驱动程序框架
字符设备驱动程序框架1、写出open、write函数2、告诉内核1)、定义一个struct file_operations结构并填充好static struct file_operations first_drv_fops = { .owner = THIS_MODULE, /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */转载 2013-03-09 08:43:04 · 745 阅读 · 0 评论 -
S3C2410触摸屏驱动代码分析2
#define mode_x_axis_n() { ADCTSC = XP_EXTVLT | XM_GND | YP_AIN | YM_HIZ | \XP_PULL_UP_DIS | XP_PST(NOP_MODE); }/*基本配置和上面相同,就是不进行x坐标的转换*/#define mode_y_axis() { ADCTSC = XP_AIN | XM_HIZ | YP_转载 2013-03-08 21:16:32 · 862 阅读 · 0 评论 -
s3c2440(2410) USB HOST不稳定的原因及解决方法
今天tpu拿出一块2440板子调试,发现尽管采取了种种措施,USBHOST总是会偶尔不工作.把UCLK通过CLKOUT0引出,用示波器查看,发现不工作的时候,UCLK根本就没有稳定下来.于是仔细思考,影响USB的有这几个地方:外部晶振16.9344Mhz LOCKTIME寄存器的UPLL LOCKTIME UPLLCON CLKSLOW寄存器的UPLL开关 接下来逐个排除:晶振转载 2013-03-09 08:39:55 · 1174 阅读 · 0 评论 -
linux下如何模拟按键输入和模拟鼠标
linux下如何模拟按键输入和模拟鼠标查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体转载 2013-03-09 08:36:16 · 856 阅读 · 0 评论 -
s3c2440的dma操作的一般步骤
s3c2440的dma操作的一般步骤一般的,在s3c2440中,要想进行dma传输,需要一下七个步骤:一:int s3c2410_dma_request(unsignedint channel, struct s3c2410_dma_client *client, void *dev)转载 2013-03-09 08:35:48 · 801 阅读 · 0 评论 -
Linux 时钟处理机制
Linux 时钟处理机制在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等。所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统的运作方式。本文分析了 Linux 2.6.25 内核的时钟处理机制,首先介绍了在计算机系统中的一些硬件计时器,然后重点介绍了 Linux 操作系统中的硬件时钟和软件时钟的处理过程以及软件时钟的应转载 2013-03-09 08:35:51 · 607 阅读 · 0 评论 -
基于s3c2440的12864液晶驱动
12864是128*64点阵液晶模块的点阵数简称,业界约定俗成的简称。一、液晶显示模块概述12864A-1 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵,16*8=128,16*4=64,一行只能写 8 个汉字,4 行;、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM(GDRAM))。主要技术参数和显示特性:电源:VD转载 2013-03-08 21:36:54 · 882 阅读 · 0 评论 -
Linux设备模型--设备
linux中每个设备由一个struct device描述:struct device { struct klist klist_children; struct klist_node knode_parent; /* node in sibling list */ struct klist_node knode_dri转载 2013-03-09 08:43:11 · 625 阅读 · 0 评论 -
linux下bus、devices和platform的基础模型
一、kobject的定义:kobject是Linux2.6引入的设备管理机制,在内核中由struct kobject结构表示,这个结构使所有设备在底层都具有统一的接口.kobject提供了基本的对象管理能力,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密联系,每个在内核中注册kobject对象都对应与sysfs文件系统中的一个目录;kobject--->sysfs.dir转载 2013-03-09 08:43:19 · 742 阅读 · 0 评论 -
网卡驱动程序之编写虚拟网卡
预留空间,待写转载 2013-03-09 08:43:34 · 1318 阅读 · 1 评论 -
dm9000网卡驱动程序分析
预留空间,待写转载 2013-03-09 08:43:36 · 669 阅读 · 0 评论 -
S3C2410触摸屏驱动代码分析1
/** s3c2410-ts.c** touchScreen driver for SAMSUNG S3C2410** Author: Janghoon Lyu * Date : $Date: 2002/06/04 07:11:00 $** $Revision: 1.1.2.6 $** Based on pt036001b-ts.c** This f转载 2013-03-08 21:16:29 · 799 阅读 · 0 评论 -
利用udev在/dev下动态生成/移除设备文件
http://blog.chinaunix.net/space.php?uid=14163325&do=blog&id=64559用udev在/dev/下动态生成设备文件,这样用户就不用手工调用mknod了。利用的kernel API:2.6.27到现在 class_create : 创建class class_destroy转载 2013-03-09 07:28:37 · 751 阅读 · 0 评论 -
writing-client-i2c
这是一个为那些想以Linux系统作为协议宿主机(不是从机)写内核I2C或系统总线设备驱动的简单引导.建立一个驱动,你必须做几件事,有些是可选的,或有相些是相似的或有些是完全不相同的.这个文档只是一个指引,而不是一个规则手册.基本注意========尽可能保持内核空间干净.最好的办法是为所有的全局符号加上唯一的前缀.这对输出符号来说是特别重要的,同样,那对不需要输出的符号转载 2013-03-09 07:28:47 · 632 阅读 · 0 评论 -
网络设备驱动基本原理和框架
一、协议栈层次对比二.Linux网络子系统 Linux网络子系统的顶部是系统调用接口层。它为用户空间提供的应用程序提供了一种访问内核网络子系统的方法(socket)。位于其下面是一个协议无关层,它提供一种通用的方法来使用传输层协议。然后是具体协议的实现,在Linux中包括内核的协议TCP,UDP,当然还有IP。然后是设备无关层,它提供了协议与设备驱动通信的通用接口,最下面是设转载 2013-03-09 08:43:31 · 2101 阅读 · 0 评论 -
Linux设备模型组件-类设备-设备类及subsystem
Linux设备模型 一、sysfs文件系统:sysfs文件系统是Linux2.6内核引入的,它被看成是与proc、devfs和devpty等同类别的文件系统,sysfs文件系统也是一个虚拟文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似;sysfs文件系统把链接在系统上的所有设备和总线组织成一个分级的文件系统,它们可以由用户空间存取,转载 2013-03-09 08:43:24 · 1300 阅读 · 0 评论 -
Linux设备模型--总线
Linux设备模型是由总线(bus_type),设备(device),驱动(device_driver)这三个数据结构来描述的。在设备模型中,所有的设备都通过总线来连接。即使有些设备没有连接到一根物理上的总线,Linux为其设置了一个内部的,虚拟的platform总线,来维持总线,驱动,设备的关系。总线是处理器与一个或者多个设备之间的通道。比如一个USB控制器通常是一个PCI设备,设备模型展示了总转载 2013-03-09 08:43:09 · 797 阅读 · 1 评论 -
Linux设备模型--驱动
linux中每个设备驱动由一个struct device_driver描述:struct device_driver { const char *name; //设备驱动程序的名称 struct bus_type *bus; //该驱动所管理的设备挂接的总线类型 str转载 2013-03-09 08:43:14 · 652 阅读 · 0 评论 -
Linux设备模型--kobject&kset
分析了Linux设备模型(总线、设备、驱动)后,回头再来看kobject&kset这里转载网上的一篇文档:http://blog.csdn.net/ayangke/article/details/6801817一、重要知识点 1.Sysfs文件系统 Sysfs文件系统是一种类似于proc文件系统的特殊文件系统,它存在于内存当中,当系转载 2013-03-09 08:43:16 · 614 阅读 · 0 评论 -
内核启动时clock system的初始化过程
http://blog.csdn.net/woshixingaaa/archive/2011/05/17/6426203.aspx内核启动时,会调用s3c24xx_register_clock函数注册很多时钟,所谓注册,就是在一个链表中保存各种"struct clk*"结构指针,这些"struct clk"结构有:clk_f(表示FCLK),clk_h(表示HCLK),clk_p(表示PC转载 2013-03-09 08:43:29 · 991 阅读 · 0 评论 -
在FC6上构建内核驱动模块编译环境
参考网上相关资料,现将我在FC6上建立过程归一下个人用的Linux版本为:FC6/Linux,内核版本为:2.6.18-1.2798.fc6编译工具:gcc-3.4.11.获得Linux内核的源代码,即构建LDD3(Linux Device Drivers 3rd)上面所说的内核树。 如果安装的Linux系统中已经自带了源代码的话,应该在/原创 2013-03-08 21:16:08 · 710 阅读 · 0 评论 -
浅谈linux中的模块加载
浅谈linux中的模块加载和linux中加载模块有关的几个程序分别如下:lsmod,modprobe,depmodlsmod显示当前加载的所有模块,相当于cat/proc/modules,假设你没有设定开机加载某个模块,比如ntfs,那么开机后执行lsmod,列表里不会有ntfs这个模块的,这时你再执行mount -t ntfs xxx后,执行lsmod后列表里就会有ntfs这个模转载 2013-03-09 07:28:42 · 678 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
Linux设备驱动之I2C架构分析 一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而I2C是基于multi master机制.一同总线上可允许多个mast转载 2013-03-09 07:28:44 · 578 阅读 · 0 评论 -
Seq_file File System实例剖析
Seq_file File System实例剖析 针对proc文件的不足而诞生了Seq_file。Seq_file的实现基于proc文件。使用Seq_file,用户必须抽象出一个链接对象,然后可以依次遍历这个链接对象。这个链接对象可以是链表,数组,哈希表等等。编程接口Seq_file必须实现四个操作函数:start(), next(), show(), stop()。转载 2013-03-09 08:35:46 · 832 阅读 · 0 评论 -
IC卡驱动程序开发
IC卡又称集成电路卡,它是在大小和普通信用卡相同的塑料卡片上嵌置一个或多个集成电路构成的。集成电路芯片可以是存储器或向处理器。作为一种身份验证的工具,IC卡经常出现于各种电子设备中,作为一种身份的确认的工具。 下面以笔者参与的会议系统开发中的ICcard驱动程序为例,介绍linux系统下是如何进行IC card驱动程序开发的。 1、是ic_card.h文件:#ifndef IC转载 2013-03-09 07:27:34 · 1082 阅读 · 0 评论 -
S3C2410触摸屏驱动代码分析3
/*这段代码完成对刚才得到的y值进行修正,将结果保存在cheat_diff_y 变量中*///y = y - (max + min);//y = y / (TIMES - 2);adc_state = 1;mode_y_axis();start_adc_y();/*开始进行y坐标的转换,注意此处由start_adc_y()函数引发一次AD中断转载 2013-03-08 21:16:34 · 585 阅读 · 0 评论 -
Linux设备模型--platform
http://blog.csdn.net/woshixingaaa/archive/2011/05/21/6436172.aspx首先看一下我的系统中都有什么设备挂在了platform虚拟总线上:hacker@hacker:~/linux-2.6.30.4$ cd /sys/bus/platform/ hacker@hacker:/sys/bus/platform$转载 2013-03-09 08:43:21 · 1027 阅读 · 0 评论 -
Linux内核访问外设I O资源的方式
http://blog.csdn.net/woshixingaaa/archive/2011/05/15/6421954.aspx 首先介绍一下I/O端口和I/O内存。1. I/O端口:当一个寄存器或内存位于I/O空间时,称其为I/O端口。2. I/O内存:当一个寄存器或内存位于内存空间时,称其为I/O内存。再来看一下I/O寄存器和常规内存的区别:I/O寄存器具有边际效应(side转载 2013-03-09 08:43:26 · 901 阅读 · 0 评论 -
CS8900a网卡驱动程序分析
预留空间,待写原创 2013-03-09 08:43:38 · 797 阅读 · 0 评论 -
cs8900a网卡驱动移植
cs8900内部有两种访问内部寄存器的方式:1. I/O模式: 就是非统一编址的情况中使用in/out等特殊指令访问的方式。接到独立的io总线上面。2. memory模式: 统一编址,和访问内存一样,接到地址总线上。 由两根线决定使用I/O模式还是memory模式,AEN 和 A[2转载 2013-03-09 08:43:46 · 957 阅读 · 0 评论 -
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响 从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可加载内核模块组成,本文针对 2.6 内转载 2013-03-08 21:16:46 · 573 阅读 · 0 评论