linux驱动程序设计
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
详细透彻的分析DM9000网卡驱动程序(3)---谁是谁的谁?
内核版本:2.6.39.1时间:2011-11作者:bingqingsuimeng版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址http://blog.csdn.net/bingqingsuimeng/linux设备驱动交流:qq群:257970754 以前,听过有一首歌叫做《谁是谁的谁》,好像还不原创 2012-08-12 11:15:22 · 6380 阅读 · 1 评论 -
LINUX驱动分析之RTC(一)
/ *****************************************************************************************************/ 声明:本博内容均由http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!/*************************************转载 2012-11-07 15:26:13 · 943 阅读 · 0 评论 -
LINUX驱动分析之RTC(四)
*****************************************************************************************************/声明:本博内容均由http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!/*******************************************转载 2012-11-07 15:28:49 · 912 阅读 · 0 评论 -
Linux RTC 驱动模型分析(2)
四. rtc-dev.c rtc-dev.c 初始化了一个file_operations结构--rtc_dev_fops,并定义了这些操作函数。 1. rtc_dev_fops rtc基本的文件操作 static const struct file_operations rtc_dev_fops = { .owner = THIS_MO转载 2012-11-07 15:16:49 · 960 阅读 · 0 评论 -
Linux RTC 驱动模型分析(1)
RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时,它从RTC中读取时间与日期,作为基准值。在运行期间内核完全抛开RTC,以软件的形式维护系统的当前时间与日期,并在需要时将时间回写RTC芯片。另外如果RTC提供了IRQ中断并且可以定时,那么R转载 2012-11-07 15:16:01 · 973 阅读 · 0 评论 -
late_initcall和module_init
在init.h 中有如下定义 #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)转载 2012-11-04 15:14:30 · 8144 阅读 · 0 评论 -
Linux驱动学习笔记之一——高精度定时器(2)
二、相关的接口代码定时器初始化之后,进行设定定时器的到期时间,并启动定时器,函数声明代码hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode),timer代表将要被添加的定时器,tim代表到期时间,mode代表定时器模式。如果启动成功,则返回0,否则返回1。如果要取消一个设置好的定时器,转载 2012-11-04 15:02:04 · 2886 阅读 · 0 评论 -
Linux驱动学习笔记之一——高精度定时器(1)
突兀地说高精度定时器,感觉摸不着头脑,至少初学者会茫然,但是从字面上来理解,很简单,定时器嘛,精度高点,然后,就没有然后了。其实差不多就是这么回事,只是里面涉及到了一些别的细节上的问题。工欲善其事必先利其器,在开始讲之前,我们先利一下器:2 相关的用到的几个源代码文件以及其路径如下:Hrtimers.txt (linux-3.2.12\documentation\timers)Hr转载 2012-11-04 15:01:09 · 2742 阅读 · 0 评论 -
Linux文件系统详解
1. Linux 磁盘分区和目录 Linux 发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows 的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如: C , D , E , F 等。Linux 的文件结构是单个的树状结构 . 可以用 tree 进行展示。 在 Ubuntu 下安装 tree ( su转载 2012-10-24 10:11:21 · 1527 阅读 · 0 评论 -
详细透彻的分析DM9000网卡驱动程序(5)---开始战斗吧
内核版本:2.6.39.1时间:2011-11作者:bingqingsuimeng版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址http://blog.csdn.net/bingqingsuimeng/linux设备驱动交流:qq群:257970754 上回书说到分配一个原创 2012-08-13 21:45:45 · 3307 阅读 · 2 评论 -
详细透彻的分析DM9000网卡驱动程序(2)---好戏开始了
内核版本:2.6.39.1时间:2011-11作者:bingqingsuimeng版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址 http://blog.csdn.net/bingqingsuimeng/article/details/6940276 linux设备驱动交流:qq群:257970754有人说,少壮不努力,老原创 2011-11-08 22:55:47 · 3818 阅读 · 5 评论 -
LINUX驱动分析之RTC(二)
/ *****************************************************************************************************/声明:本博内容均由http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!/***************************************转载 2012-11-07 15:27:37 · 961 阅读 · 0 评论 -
Linux自动创建设备节点 (无论是平台设备还是一般设备)
Linux自动创建设备节点 在驱动用加入对udev的支持主要做的就是:在驱动初始化的代码里调用class_create(...)为该设备创建一个class,再为每个设备调用device_create(...)( 在2.6较早的内核中用class_device_create)创建对应的设备。 内核中定义的struct class结构体,顾名思义,一个st转载 2012-11-07 09:49:34 · 1817 阅读 · 0 评论 -
mknod利用udev、sys动态创建linux设备结点 --步骤
mknod利用udev、sys动态创建linux设备结点 mknod利用udev、sys动态创建linux设备结点2009-09-02 21:50在Linux 2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态转载 2012-11-08 11:27:50 · 2827 阅读 · 0 评论 -
dm9000网卡驱动移植 在mini6410上的连接 电气特性
#define CONFIG_DM9000_BASE 0x20000300#define DM9000_IO 0x20000000#define DM9000_DATA 0x20000004这几个数值代表的地址是从哪里得到的,我翻了MINI2440的原理图和S3C2440的芯片手册没看懂从哪里找网卡的地址,请老师指转载 2012-11-25 12:28:16 · 2634 阅读 · 1 评论 -
regulator
regulator(转)linux 驱动 2010-03-21 22:41:20 阅读269 评论0 字号:大 中 小 订阅///*regulator 是驱动中电源管理的基础设施。要先注册到内核中,然后使用这些电压输出的模块get其regulator,在驱动中的init里,在适当时间中进行电压电 流的设置.与 gpio 差不多? 一样是基础设施?*/转载 2012-11-19 16:10:05 · 1265 阅读 · 0 评论 -
linux中互斥尽量用mutex,不用semaphore
DEFINE_MUTEX是来自include/linux/mutex.h中的一个宏,用它可以定义一把互斥锁,在Linux内核中,其实是在2005年底才建立比较系统、完善的互斥锁机制,在那年冬天,来自RedHat公司的Ingo Molnar大胆地提出了他所谓的Generic Mutex Subsystem,即通用的互斥锁机制。此前内核中很多地方使用的都是信号量,而当时间的箭头指向了2005年末时,"转载 2012-11-19 09:03:51 · 5991 阅读 · 1 评论 -
IS_ERR
像struct class *cls = class_create();这种语句,其中返回的指针值并不行kmalloc一样这么简单,只判断是否为NULL就可以了,内核是返回其错误值。那么我怎么来判断它呢,总不能用if()来将每个错误例出来吧,这里我们的IS_ERR()宏就发挥作用了。先看源代码,再讲原理,看看内核中的巧妙设计思路。/* include/linux/err.h *转载 2012-11-28 17:52:12 · 814 阅读 · 0 评论 -
register_chrdev()与register_chrdev_region()
register_chrdev()与register_chrdev_region()分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下:extern int register_chrdev_region(dev_t,unsigned int,const char*);表示静态的申请和注册设备号extern int alloc_chrdev_region(de转载 2012-11-14 09:11:19 · 1115 阅读 · 0 评论 -
MEMS之重力加速计mma7660与陀螺仪及其样例驱动
原文地址::http://bbs.eeworld.com.cn/thread-244988-1-8.html MEMS之重力加速计mma7660与陀螺仪及其样例驱动 这两天调好了3轴g-sensor ,mma7660, 可以用了. 倾斜晃动或改变板子的方向, mma7660就会产生中断, 并给出当前板子的姿态(水平/垂直, 上下,左右等). 1. 重力加速度计 mm转载 2012-11-27 15:48:28 · 1788 阅读 · 0 评论 -
linux内核移植到tiny6410(1)
话说生活实在无聊,无聊的我只剩下学习了。好吧。手里有一块儿6410的板子闲置着,不能浪费啊。就活动活动把linux内核移植上去,顺便再把驱动过一遍。 内核里有一个6410的smdk了,本来不想直接使用的,但是已经提供了,我就先省点儿事儿,回过头来再研究自己从头到尾自己构建板级结构。 bootloader使用的是u-boot,以前移植过,现在没有心情再次移植一遍,原创 2012-11-25 16:14:02 · 2606 阅读 · 0 评论 -
GPIO 口 simple demo
GPIO 口 simple demo一、GPIO介绍GPIO意为通用输入输出端口,简单说就是一些引脚,通过它们输出高低电平或者通过它们读取引脚高低电平状态S3C2440有130个I/O端口,分为A-J共9组:GPA、GPB、、、、GPJ,可以通过设置寄存器来确定某个引脚用于输入、输出还是特殊功能。比如:可以设置GPH6作为输入、输出、或者用于串口。1、通过寄转载 2012-11-09 09:34:34 · 1469 阅读 · 0 评论 -
LINUX驱动分析之RTC(三)
/ *****************************************************************************************************/声明:本博内容均由http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!/************************************转载 2012-11-07 15:28:14 · 898 阅读 · 0 评论 -
linux设备驱动模型大剖析(2)-----受苦后难的孩纸们啊。
特 别 声 明 本系列文章bingqingsuimeng著作权所有,转载请注明出处 http://blog.csdn.net/bingqingsuimeng/ linux设备驱动交流:qq群:257970754 人生在世就是一种受苦受难的修行过程是吗?什么?你说不是?好吧,你是富二代。。 有人说中国人这一辈子,年轻的时候在奋斗,到老了积累了一身病才知道享受原创 2012-08-30 16:43:56 · 2604 阅读 · 2 评论 -
linux设备驱动模型大剖析(1)-----底层阶级的程序猿
特 别 声 明 本系列文章bingqingsuimeng著作权所有,转载请注明出处 http://blog.csdn.net/bingqingsuimeng/ linux设备驱动交流:qq群:257970754 话说,东汉末年分三国,分不清对对错错。反正是我们看到了三足鼎立的大好场面。当年的手机行业又何尝不是呢?苹果作为“魏国”实力非比寻常啊,而江南原创 2012-08-29 11:40:50 · 4629 阅读 · 3 评论 -
详细透彻的分析DM9000网卡驱动程序(4)---我是苦行僧
内核版本:2.6.39.1时间:2011-11作者:bingqingsuimeng版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址http://blog.csdn.net/bingqingsuimeng/linux设备驱动交流:qq群:257970754 说实话,在这码半天代码,分析了半天,是了神马啊?是原创 2012-08-12 12:01:03 · 2476 阅读 · 0 评论 -
linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间
linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较转载 2012-08-30 12:55:45 · 41145 阅读 · 7 评论 -
实例解析linux内核I2C体系结构(2)
四、在内核里写i2c设备驱动的两种方式前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。(1) Adapter方式(LEGACY)转载 2012-08-29 14:49:21 · 917 阅读 · 0 评论 -
S3c2440 I2C驱动与测试程序追踪交叉分析
注: 原创博文,转载请注明来自chenhui的博客.VMware虚拟机+Fedora10, 硬件平台TQ2440, 内核2.6.30.4最近学习linux I2C驱动, 用刘洪涛老师的测试程序测试内核自带的驱动, 打开调试语句dev_dbg后(具体参考我的另一篇博客),发现应用程序对应的驱动程序豁然开朗, 然后自己添加了一些dev_dbg后, 对于不理解的地方也有了一定的参转载 2012-08-29 15:43:39 · 2291 阅读 · 0 评论 -
i2c设备驱动实例分析-pca9541(下)
刚学习到i2c驱动这一块,在linux内核源码中(我用的是linux-2.6.38.6)有pca9541.c的驱动源码,所以我就拿该实例来学习i2c设备驱动开发。我在网上找了该设备的相关资料(主要是工作原理和datasheet),下面我把我的分析思路记录下来,作为我以后学习的参考资料。里面有许多我暂时不理解的地方,欢迎朋友们帮忙解决。谢谢!/*****************(1)头文件*转载 2012-08-29 15:32:25 · 4971 阅读 · 0 评论 -
实例解析linux内核I2C体系结构(1)
一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有: ● 思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好处)有:转载 2012-08-29 14:28:19 · 1231 阅读 · 0 评论 -
热插拔uevent事件用户空间截获方法和具体实现
热插拔uevent事件用户空间截获方法和具体实现 #include stdio.h>#include string.h>#include sys/types.h>#include unistd.h>#include stdlib.h>#include sys/socket.h>#include linux/netlink.h>#define转载 2012-07-31 15:22:37 · 2245 阅读 · 0 评论 -
NAPI
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网转载 2012-08-12 22:03:50 · 10410 阅读 · 0 评论 -
多核中percpu的数据分配
linux2.6 为了方便创建和操作每个CPU数据,引进了新的操作接口,percpu(),该接口简化了创建了操作每个CPU的数据。定义于 和 中1. 定义和声明每个CPU变量:[cpp] view plaincopyDEFINE_PER_CPU(type, name); 这语句为系统的每个CPU都创建了一个类型为转载 2012-08-12 11:58:15 · 1999 阅读 · 0 评论 -
Linux模式设计--数据大小,对齐函数相关
25. Linux模式设计25.1. 数据大小内核为了保持最大的兼容性和代码灵活性,不可能直接对某个数据类型定义它的大小范围。但是很多时候又要用到这些最大值最小值或者该数据类型可以表示的数据范围,比如初始化一个值为最大/小值,或者检验数据是否位于某个类型的范围内。include/linux/kernel.h#define USHORT_MA转载 2012-08-12 11:13:04 · 4535 阅读 · 0 评论 -
suspend和resume究竟做了什么?
LCD休眠时:先调用backlight驱动,关闭背光;然后调用LCDC驱动关掉SOC内部的LCDC的CLK输出,并保存LCDC内部寄存器数值到结构体;LCD唤醒时:恢复结构体LCDC数值到内部寄存器,然后调用LCDC驱动关掉SOC内部的LCDC的CLK输出;再调用backlight驱动,打开背光;转载 2012-08-10 17:48:22 · 1132 阅读 · 0 评论 -
i2c设备驱动实例分析-pca9541(上)
(一)PCA9541简介以及工作原理PCA9541是一款带I2C接口的多主选择器,可用于要求高可靠性的双主机系统中,当一个主机通信失败或者控制卡移出系统时,另外一个主机将发挥作用。PCA9541可以使两个I2C主设备在互不连接的情况下与同一个从设备连接,I2C总线的命令由主机发送,一次只有一个主机发送数据。如果一个主机不能正常工作或移出了系统,另一个主机可以在任意时刻控制从器件。 PC转载 2012-08-29 15:28:09 · 3469 阅读 · 0 评论 -
superblock,file,dentry,inode的区别
1、superblock保存一个挂在的文件系统的相关信息(Stores information concerning a mounted filesystem. For disk-based filesystems, this object usually corresponds to a filesystem control block stored on disk.)2、inode转载 2012-08-30 17:13:59 · 1702 阅读 · 0 评论 -
linux内核部件分析之——waitqueue与线程的阻塞
当你必须一个复杂的系统,协调系统的方方面面,灵活地支持各种机制和策略,即使很简单的问题也会变得很复杂。linux绝对就是这样一个复杂的系统。所以我们要理解它,尽量从原理的角度去理解事务的处理流程,尽量避免各种细枝末节的干扰,尽量规避那些足以压垮自己的庞然大物。(尽管细致末节和庞然大物很可能就是linux闪光的地方,但我们还是小心为上。)原理 现在我们来考虑linux中线程的阻转载 2012-08-31 14:52:19 · 5025 阅读 · 0 评论 -
详细透彻的分析DM9000网卡驱动程序(1)
内核版本:2.6.39.1时间:2011-11作者:bingqingsuimeng版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址http://blog.csdn.net/bingqingsuimenglinux设备驱动交流:qq群:257970754 自己感觉前段时间的学习,一直是东一榔头,西一棒子原创 2011-11-06 11:59:57 · 6992 阅读 · 1 评论