
Linux Device Driver
文章平均质量分 69
lihaoweiV
这个作者很懒,什么都没留下…
展开
-
Device 与 platform device的不同(一)
void device_register(struct device *dev){device_initialize(dev);return device_add(dev);} void device_initialize(struct device *dev原创 2011-07-05 12:41:33 · 1910 阅读 · 0 评论 -
三星SOC的显示控制器及framebuffer驱动s3c-fb.c中probe函数分析
三星SOC芯片上集成了显示控制器(有称作fimd的,Fully Interactive Mobile Display)。它的驱动分为mainline版本的和legacy版本的,mainline版本的是通用的,由Ben Dooks 管理着的,代码比较规范。下面我们来分析一下这个驱动,这个驱动在driver/video/里,文件名是s3c-fb.c 与其相关的,主要还有arch/arm/plat-s原创 2011-11-18 15:59:18 · 4790 阅读 · 2 评论 -
early suspend 过程
在wakelock.c中声明了一个工作队列suspend_work_queue struct workqueue_struct *suspend_work_queue;然后创建它,这个工作队列是earlysuspend的核心 suspend_work_queue = create_singlethread_workqueue("suspend");在ear原创 2011-11-24 08:42:06 · 3048 阅读 · 0 评论 -
嵌入式linux中关于device的电源管理
在platform_device_register()中调用device_initialize(),在device_initialize()中调用device_pm_init(),device_pm_init() 在drivers/base/power/main.c里, 详细如下:/** * device_pm_init - Initialize the PM-related pa原创 2011-11-24 09:28:58 · 3200 阅读 · 0 评论 -
Run-time PM 详解
源出处:http://blog.youkuaiyun.com/coolraining/article/details/6677901Run-time PM. 每个device或者bus都会向run-time PM core注册3个callbackstruct dev_pm_ops {...int (*runtime_suspend)(struct device转载 2011-11-24 12:19:01 · 1096 阅读 · 0 评论 -
新版linux系统设备架构中关于电源管理方式的变更
出处:http://blog.youkuaiyun.com/coolraining/article/details/6678759新版linux系统设备架构中关于电源管理方式的变更based on linux-2.6.32 一、设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,转载 2011-11-24 12:20:00 · 900 阅读 · 0 评论 -
Android/linux(earlysuspend、lateresume)睡眠唤醒机制简介
本文属于原创!!如要转载,请注明来源处 http://blog.sina.com.cn/s/blog_759dc36b0100stax.html 背景介绍:睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的转载 2011-11-25 09:30:14 · 1588 阅读 · 0 评论 -
Android的Linux内核的电源管理:Early Suspend
1. 用户空间的接口 在kernel/power/main.c中,定义了一组sysfs的属性文件,其中一个定义是: power_attr(state); 把这个宏展开后:? ?<span style="color:转载 2012-03-15 16:32:58 · 1935 阅读 · 0 评论 -
git rebase 的活用
转载请注明出处:Alvin Lee的博客:http://blog.youkuaiyun.com/lihaoweiVgit rebase 命令的功能很强大, 在《git 权威指南》一书里,改变提交(commit)的顺序,书中教了一种很复杂的方法,运用了git reset ... git cherry-pick...等等命令。但如果用git rebase 命令,则一下就搞定。以下面的例子来讲解原创 2012-07-12 14:21:04 · 14073 阅读 · 1 评论 -
浅析linux内核驱动的代码风格
源出处:http://top.akaedu.org/index.php/index/bookdetail/id/2890最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过, 在不遵守规则的程序员队伍里,转载 2012-01-20 09:30:55 · 1249 阅读 · 0 评论 -
【整理】struct device的初始化
/** * struct device - The basic device structure * @parent: The device's "parent" device, the device to which it is attached. * In most cases, a parent device is some sort of bu原创 2012-08-17 15:11:24 · 1839 阅读 · 0 评论 -
EXPORT_SYMBOL 与 extern的区别
这两种方法都可以让被 修饰的函数 能被内核其他程序调用。简单地说说区别,EXPORT_SYMBOL是通过宏,建立一个新的这个函数的入口,包括它址,名称。这个函数会被放到kernel image的__ksymtab section中。当用到这个函数的模块在runtime时被加载的时候,loader就会从__ksymtab section解析这个函数。extern 是将 非原创 2012-08-31 15:16:35 · 3737 阅读 · 0 评论 -
ioremap()的原理及意义
原文出处:http://yuxu9710108.blog.163.com/blog/static/23751534201112152529745/void * __ioremap(unsigned long phys_addr, unsigned long siz转载 2011-10-05 15:40:11 · 1673 阅读 · 0 评论 -
LDM上层建筑之dev---局部窥探
原文出处:http://blog.youkuaiyun.com/dndxhej/article/details/6104045首先看下sys/devices怎么来的?在初始的启动汇编中会跳到start_kernel---->rest_init---->kernel_t转载 2011-10-05 14:25:34 · 1127 阅读 · 1 评论 -
详解platform_device_系列函数
出处:http://blog.chinaunix.net/space.php?uid=9185047&do=blog&cuid=2004387platform_device_系列函数,实际上是注册了一个叫platform的虚拟总线。使用约定是如果一个不属于任何转载 2011-09-30 15:23:29 · 3436 阅读 · 0 评论 -
linux device model
设备管理已经成为现代统项重要任务,Linux每次内核新版本的发布,会伴随着一批设备驱动进入内核。Linux驱动程序的代码量占有了相当大的比重。图是我在网络上搜索到的一幅内核代码量的统计图,2.6.29。们可以很明Linux驱动程序的比例已 内核最初应付个设备模型设备。在物理上,外间是有一关系的,比如把一U笔记本上,这个盘是接在一USB Hub上,USB 2.0 Host Controller (转载 2011-06-20 09:34:00 · 2227 阅读 · 0 评论 -
platform device/platform driver/platform bus解释整理
Platform Device and Drivers从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platform bus使用最小结构来转载 2011-07-06 14:29:53 · 1875 阅读 · 0 评论 -
insmod 加载模块的过程
insmod 是靠一个在kernel/module.c里定义的系统调用来实现的。1. 此系统调用(sys_init_module )分配内核存储空间(kernel memory)给相关的模块,这个内存分配动作是由vmalloc完成;2. 然后将该模块内容拷贝到这块存储空间里;3.原创 2011-07-12 18:46:51 · 24732 阅读 · 0 评论 -
加载模块时 Error inserting -1 Invalid module format 错误
模块对数据结构和函数的原型的依赖性极高,换句话说,就是对内核版本的依赖性极高。函数接口等可能随内核版本的变化而变化。 加载模块时出现 Error inserting -1 Invalid module format 错误的原因很大可能就是你编译时用的源码树版本和你要加载进的内核原创 2011-07-13 10:00:37 · 2491 阅读 · 0 评论 -
编写模块时的声明(含MODULE_LICENSE等)
编写模块必须先声明下面两句:#include //这个头文件包含了许多符号与函数的定义,这些符号与函数多与加载模块有关#include //这个头文件包含了你的模块初始化与清除的函数另外,如果你的模块需要用原创 2011-07-13 10:50:18 · 24109 阅读 · 0 评论 -
Linux对I/O端口资源的管理
摘要:本文主要从内核实现的角度分析Linux 2.4.0内核IO子系统中对IO端口资源的管理的实现原理。本文是为那些想要深入分析Linux的IO子系统读者和设备驱动程序开发人员而写的。 关键词:设备管理、驱动程序、I/O端口、资源 申明:这份文档是按照自由软件开放源代码的精神发布转载 2011-07-26 15:50:33 · 909 阅读 · 0 评论 -
分析设备模型、设备模型与驱动关联的过程
本文的大多数内容参考了:对于网络上设备与驱动关联的全过程分析(I2C方式)一文。在此特别感谢这位作者前辈的无私奉献。 本人只是添加了一些个人理解和补充。 在Linux操纵系统中,驱动程序的加载分为两种:内核启动时自动加载和用户手动加载;硬件设备也可以采用两种方式添加到系转载 2011-08-03 09:21:22 · 1209 阅读 · 0 评论 -
platform device 与 platform driver
做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义转载 2011-08-17 14:57:21 · 1173 阅读 · 0 评论 -
详解Linux2.6内核中基于platform机制的驱动模型<强烈推荐,这是一篇学习驱动模型千年一遇的好文章>
【摘要】本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型。首先介绍了Platform总线的基本概念,接着介绍了platform device和platform driver的定义和加载过程,分析了其与基类device 和driver的派生关系及在转载 2011-09-23 18:53:00 · 2924 阅读 · 1 评论 -
基于Android的Linux内核的电源管理:概述
http://www.linuxidc.com/Linux/2011-07/39478.htm 来源:Linux社区 作者:DroidPhone 1. 电源管理的状态Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的转载 2011-09-28 12:36:55 · 1327 阅读 · 0 评论 -
浅析linux设备驱动的clock(时钟)的注册
做嵌入式 linux 驱动的时候,难免会遇到clock,今天上网查阅关于clock的资料,发现网上大多数资料都是关于linux内核的时钟机制,而不是关于Linux设备驱动的时钟。于是将自己今天学习的经验写出来,跟大家交流交流,有不对的地方希望高手们指出。我会以三星的smd原创 2011-09-29 15:57:47 · 5046 阅读 · 1 评论 -
Andriod PM suspend&resume
源出处:http://www.61ic.com/Mobile/Android/201102/29414.htmlAndroid 的电源管理还是比较简单的 , 主要就是通过锁和定时器来切换系统的状态 , 使系统的功耗降至最低 , 整个系统的电源管理架构图如下 : ( 注该图来自 Steve Guo) 1 、初始化 suspend转载 2012-11-27 11:55:27 · 1349 阅读 · 0 评论