
驱动
muojie
这个作者很懒,什么都没留下…
展开
-
读linux2.6驱动的一点收获[转]
<br />================================<br />Author: taoyuetao<br />Email:tao_yuetao@yahoo.com.cn<br />Blog:http://www.eetop.cn/blog/?11145<br />2006-11-21<br />================================<br />从2.6版本开始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,例如设转载 2011-01-05 20:52:00 · 607 阅读 · 0 评论 -
USB基础知识
开始对USB感兴趣了,学习一下USB驱动,趁着现在刚好在做USB设备驱动。先了解一下USB的大概知识:1.先看一下维基百科的介绍:http://zh.wikipedia.org/wiki/USBUSB分组格式USB的分组格式和早期的互联网分组格式非常相似,要了解USB连接原理就一定要先了解分组格式。2.了解一下VID和PID(摘自:http://www.cyan原创 2011-11-18 11:30:11 · 853 阅读 · 0 评论 -
内核函数分析
总结内核函数如下:添加一个设备:struct platform_device *pdev;pdev = platform_device_alloc( )pdev->dev.parent = pdev->dev.platform_data = 在这里给pdev赋值,再用platform_device_add(pdev)就可以添加一个设备。platform_devi原创 2011-12-06 18:03:22 · 574 阅读 · 0 评论 -
平台移植 pinmux
原创 2011-12-09 18:17:53 · 785 阅读 · 0 评论 -
平台移植 clock
1.时钟设置,初使化时钟结构体链表 按照clock_nvrm.c中的函数去试验得到时钟,设置时钟。 tegra_init_clock()函数初始化时钟。该函数在common.c文件中的tegra_common_init()函数初调用。tegra_common_init()函数在board-generic.c文件中的do_system_init()函数中被调用。原创 2011-03-17 17:05:00 · 1214 阅读 · 0 评论 -
平台移植 GPIO
GPIO的驱动主要就是读取GPIO口的状态,或者设置GPIO口的状态。就是这么简单,但是为了能够写好的这个驱动,在LINUX上作了一些软件上的分层。为了让其它驱动可以方便的操作到GPIO,在LINUX里实现了对GPIO操作的统一接口,这个接口实则上就是GPIO驱动的框架,具体的实现文件为gpiolib.c在配置内核的时候,我们必须使用CONFIG_GENERIC_GPIO这个宏来支持GPI转载 2011-12-11 22:52:38 · 834 阅读 · 0 评论 -
hub_thread() -- Hub线程
hub_irq() --> kick_khubd()唤醒等待队列khubd_wait。中断处理程序将到此结束static void kick_khubd(struct usb_hub *hub){ unsigned long flags; to_usb_interface(hub->intfdev)->pm_usage_cnt = 1; spin_lo转载 2011-12-28 11:19:53 · 1244 阅读 · 0 评论 -
详解Linux2.6内核中基于platform机制的驱动模型
(本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如 有任何问题,请留言或者发邮件给sailing_9806#163.com)http://blog.youkuaiyun.com/sailor_8318/archive/2010/01/29/5267698.aspx转载 2012-01-09 16:48:39 · 573 阅读 · 0 评论 -
驱动注册platform_driver
从linux-2.6开始引入了一套新的驱动管理和注册机制:platform_device和platform_driver.linux中的大部分设备驱动,都可以使用该机制,设备用platform_device表示,驱动用platform_deriver进行注册。platform是linux的一个虚拟的地址总线,主要是用来描述芯片的片内资源,它直接取片内地址进行资源读写。因此和内核相关性不大,转载 2010-12-16 12:07:00 · 912 阅读 · 0 评论 -
[USB] VBUS
在USB接口有四根线,分别是VBUS,D-,D+,GND。其中VBUS线是HOST/HUB向USB设备供电的电源线。HOST/HUB每个端口通过VBUS提供的电流最大为500mA,电压范围是4.4V-5.5V,但是这并不是意味着设备可以无条件地使用VBUS向自己提供500mA的电流。根据USB规范,从电源方面来讲,USB设备分为自供电和总线供电两种设备类型,设备通过枚举过程的设备描述符声明自己转载 2012-01-16 16:16:35 · 37660 阅读 · 0 评论 -
[memory] Android DMA
Android中,有时申请DMA内存会出现申请失败的情况,log如下:07-06 16:14:07.541 W/Kernel ( 0): [ 3162.931854] select 2346 (d.process.acore), adj 8, size 4336, to kill07-06 16:14:07.583 W/Kernel ( 0): [ 3162.938261原创 2012-01-18 14:32:34 · 2472 阅读 · 0 评论 -
[USB] usb gadget
http://blog.youkuaiyun.com/hongtao_liu/article/details/4555653利用分析工具:usb viewer,bushoud等了解USB协议。转载 2012-01-17 18:29:43 · 621 阅读 · 0 评论 -
[USB] USB 设备驱动的移植
usb camera :Linux下USB摄像头驱动开发 http://blog.youkuaiyun.com/aaa6695798/article/details/4822361Linux系统下USB摄像头驱动开发 http://hi.baidu.com/%BD%F2jin2010/blog/item/42a942f8e31e5306a9d31129.html原创 2012-01-19 17:21:19 · 593 阅读 · 0 评论 -
[USB] 梳理USB子系统
看了很久的USB子系统了,还是雾蒙蒙的,现在梳理一下。首先从bus入手,在core下面定义了struct bus_type usb_bus_type,这就是usb的bus上的设备与驱动通用的一个结构体。首先看driver,API主要在core/driver.c里,注册usb_bus_type的,主要有两个函数:usb_register_device_driver()和usb_regis原创 2012-01-19 11:57:09 · 521 阅读 · 0 评论 -
platform driver_register()
i2c_add_driver()i2c_register_driver()driver_register() driver_find() bus_add_driver() driver_add_groups()原创 2011-12-31 18:24:07 · 588 阅读 · 0 评论 -
I2C驱动的另类注册方法
static int tpd_detect (struct i2c_client *client, int kind, struct i2c_board_info *info){ strcpy(info->type, TPD_DEVICE); return 0;}static const struct i2c_device_id tpd_id[] = {{TPD_原创 2012-03-29 09:50:04 · 893 阅读 · 0 评论 -
字符设备驱动 架构分析
转贴:http://www.chinaunix.net/jh/4/1027719.html字符串驱动的初始化流程大体如下:static int __init mydriver_init(void) //驱动程序的初始化{ …… MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向转载 2011-02-22 11:30:00 · 935 阅读 · 0 评论 -
mmap msync munmap close
转自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201082753446602/ open 打开文件后——>使用mmap建设文件映射;建立文件映射后,可以对映射到的空间进行操作。用msync转载 2011-08-15 18:52:46 · 2360 阅读 · 1 评论 -
Android ashmem
转自:http://blog.sina.com.cn/s/blog_606334a20100goei.html更详细的讲解请看:http://blog.youkuaiyun.com/luoshengyang/article/details/6664554ashmem是andr转载 2011-08-30 09:42:02 · 1186 阅读 · 0 评论 -
Kernel中断处理模型 --request_irq( )
<br /> <br />内核版本: Linux 2.6.18_pro500 (Montavista)<br /><br />Kernel中断处理模型结构图如下:<br /><br /><br />下面简单介绍一下:<br />1. Linux定义了名字为irq_desc的中断例程描述符表:(include/linux/irq.h)<br /> struct irqdesc irq_desc[NR_IRQS];<br />NR_IRQS表示中断源的数目。<br />2. irq_desc[]是一个指向转载 2011-02-24 16:50:00 · 1053 阅读 · 0 评论 -
I2C上拉电阻
<br /><br />转自:http://shenze60.blog.163.com/blog/static/315747722010015102653772/<br /> <br />I2C的上拉电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K<br /> <br />I2C上拉电阻确定有一个计算公式:<br />Rmin={Vdd(min)-o.4V}/3mA<br />Rmax=(T/0.874) *c, T=1u转载 2011-03-08 15:48:00 · 1790 阅读 · 0 评论 -
udelay, msleep
udelay(unsigned long usecs);mdelay(unsigned long msecs);前者用软件循环指定的微妙数,后者调用前者达到延迟毫秒级。udelay 函数只能用于获取较短的时间延迟,因为loops_per_second值的精度只有8位,所以,当计算更长的延迟时会积累出相当大的误差。尽管最大能允 许的延迟将近1秒(因为更长的延迟就要溢出),推荐的 udelay 函数的参数的最大值是取1000微秒(1毫秒)。延迟大于 11 毫秒时可以使用函数 mdelay。要特别注意的是 ude原创 2011-03-18 19:53:00 · 5391 阅读 · 0 评论 -
学习--内核模块
转自:http://edsionte.com/techblog/archives/3064内核模块再学习之模块的实现如果你对内核模块编程已经有了简单的认识,那么可以更进一步学习模块在内核中的实现。对于每个内核模块来说,系统都为其分配一块内存区,这块内存区包括:一个module结构、唯一表示模块名称的字符串和实现模块功能的代码。module结构中包含众多字段,从多个方面对内核模块进行转载 2011-06-08 18:06:00 · 509 阅读 · 0 评论 -
进程调度 中断
BUG:scheduling while atomic 通过学习,发现在中断的回调中,如果调用msleep函数,会引起进程调度,这时就会警告:scheduling while atomic 其实如果调用其他可能导致中断进程睡眠的函数如:down_interruptible(),也会出现这样的问题。 内核检测到了这个问题,便给出了警告。 ===============原创 2011-06-08 17:52:00 · 1665 阅读 · 0 评论 -
ipu irq kpanic log
[ 8653.820478] init_mode: 1x800x600[ 8653.924959] ******size: 3[ 8653.935116] ******size: 4[ 8653.942133] ******size: 3[ 8654.195132] pmem:原创 2011-07-13 11:08:05 · 3838 阅读 · 3 评论 -
LCD 原理和移植总结
图1. LCD子系统结构Framebuffer:是linux的framebuffer驱动在内存开辟的一块显存,存放一帧图像数据。IPU:是mx51的图像处理单元,里面包含DMA控制器和DI显示接口等。LCDDriver:是一块和LCD屏幕整合在一起的驱动芯 片,接收IPU传过来的转载 2011-07-14 11:53:26 · 2455 阅读 · 0 评论 -
framebuffer 驱动
转载:http://www.hzlitai.com.cn/article/yejin-article/system/1167.htmlFSL framebuffer驱动代码分析:http://blog.chinaunix.net/space.php?uid=447727&转载 2011-09-01 12:01:17 · 718 阅读 · 0 评论 -
工作队列:workqueue
转自:http://hi.baidu.com/greatren518/blog/item/25b349c7126e8fd9d10060b1.html另还可以参考:http://blog.ednchina.com/tiloog/133253/message.aspx转载 2011-09-07 18:19:11 · 956 阅读 · 0 评论 -
浅析debugfs文件系统调试阶段gpio使用范例
转自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=73448====================================================================转载 2011-08-15 15:01:19 · 1469 阅读 · 0 评论 -
内核同步--信号量,互斥体,自旋锁
在驱动编程中,这三个是用来管理竞态的有用工具。差别简述如下: 信号量:允许使用它的代码休眠,持有锁的时间可相对较长。 互斥体(锁):信号量的特殊形式。只有0、1两种状态 自旋锁: 优点:低开销; 注意:持有锁的转载 2011-09-19 18:06:53 · 1515 阅读 · 1 评论 -
如何在Android平台上使用PMEM及注册Platform设备
Android中PMEM驱动程序是物理内存的驱动程序,可用于分配物理内存。PMEM在camera和video系统中频繁使用。下面,简单记录一下PMEM的使用方法。另外,由于PMEM设备做为Platform设备存在,所以我们将对Platform设备做以简单描述。一、PMEM的使转载 2011-08-23 14:09:18 · 776 阅读 · 0 评论 -
Android内核介绍
转自:http://zlb1986.iteye.com/blog/759513已经有一些的文章介绍Android内核了,本系列篇将从Linux内核的角度来分析Android的内核,希望给初学者提够有用的信息。本章将简单的介绍Android内核的全貌,起到一个抛砖引玉的作用转载 2011-08-23 16:45:33 · 903 阅读 · 0 评论 -
i2c设备的bring up,camera
1.OV的PWDN是高电平有效,即高电平时Camera睡眠,此时I2C也不工作(用i2cdetect探测不到),在低电平时Camera工作;2.i2cdetect是个很好的工具,你用这个工作时,不用在意设备的寄存器地址位宽和数据位宽,只要保证设备的工作电压以及其挂载到哪一个I原创 2011-03-08 15:48:00 · 3788 阅读 · 4 评论 -
android pmem 和ashmem 介绍及实例分析
转自:http://www.ophonesdn.com/forum/thread-6260-1-1.html1、Ashmem(匿名共享内存驱动:Anonymous Shared Memory)它基于mmap系统调用,不同进程可以将同一段物理转载 2011-08-26 10:45:14 · 1517 阅读 · 0 评论 -
android系统触摸屏虚拟按键
android系统触摸屏虚拟按键http://book.51cto.com/art/201101/243136.htmhttp://blog.chinaunix.net/uid-25369701-id-172172.htmlAndroid tp的虚拟按键(virtual key)处理转载 2012-06-30 15:05:09 · 810 阅读 · 0 评论