
Linux driver & kernel
文章平均质量分 80
井朝天
你,还好吗?
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Freescale P4080 I2C 驱动分析
Freescale P4080是一款8核心网络处理器,功能强大,外设齐全,基于powerpc e500 core。在嵌入式网络应用上被广泛使用。今天只讨论P4080的I2C部分。P4080片上集成了4个I2C 控制器,在我们的应用中,这4个I2C Controller 都是作为master来使用。先来一张I2C 控制器的结构图这张图描述了一I2C 控制器应该有的寄存器,描述了各原创 2011-11-24 11:16:09 · 3093 阅读 · 0 评论 -
触摸屏驱动问题导致omap i2c timeout
Ten4上使用了新的触摸屏novatek,中文名字叫做联咏科技吧。但是从一开始研发就有个问题,就是开机后,触摸屏无法使用,只有重启才行。 本来以为是手焊板子的问题。可是后来小批也有此问题。看来不得不解决了。 起初,怀疑触摸屏驱动有问题,但是对照其他触摸屏驱动,i2c操作部分没有什么区别。但就是一直报omap i2c timeout 。网上搜了一原创 2012-08-31 09:28:43 · 3625 阅读 · 0 评论 -
Freescale MPC85XX系列BSP各设备注册浅析
这几天项目不太忙,于是抽空看了一下关于BSP相关的东西,记下来跟大家分享一下。我们公司用的产品主要是freescale公司的powerpc系列,期中MPC8548,MPC8572用的比较多。由于要给老外做整个板卡上硬件的测试工作,所以对于板上资源是必须要了解的。本篇文章的侧重点在于板上各设备是如何注册的(只讲设备注册,不讲驱动注册),而对于板上有哪些资源,datasheet上都写得明明白白,在原创 2011-06-08 15:21:00 · 1646 阅读 · 0 评论 -
Kobject overview
sysfs是kobject的表达,所以这里翻译了Documention下的kobjct.txt,并加上了一些自己的注释,这样基本就对kobject和sysfs有了一个比较深刻的理解,我们可以简单的将sysfs看成最bottom的操作,然后kobject的想关操作是架构在sysfs之上,再然后kobject和attribute所嵌入的结构体再构成上一层结构来操作kobject,最后就实现了kerne翻译 2010-10-10 13:14:00 · 826 阅读 · 0 评论 -
Linux driver model ----- platform
Platform Device and Drivers从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platform bus使用最小结构来集成SOC processer上的各种外设,或者各种“legacy”之间的互联。Platform device典型的Platfo转载 2010-10-10 13:18:00 · 600 阅读 · 0 评论 -
如何将多个源文件编译为一个.ko
陆陆续续也写了几个Linux内核模块了,但每次都是把代码写在一个源文件中,上次尝试了写在两个.c文件中,结果没有编译通过。 无奈之下,将其中一个.c文件重命名成.h文件,再include当另一个当中。但是,在.h文件中写函数的实现总感觉怪怪的。 今天查看了以下Kbuild的文档,有如下描述 If a kernel module is built from several source fi转载 2010-10-15 22:59:00 · 5880 阅读 · 2 评论 -
OMAP4平台设置时钟频率
新到了一个硬件,需要16.667Mhz的时钟频率。目前不想加外置电路,尽量把成本降到最低。采用配置时钟的方式,可以分频得到想要的时钟。 FREF_CLK1_OUT/GPIO_181/SAFE_MODE 这个引脚是复用的,设为MODE0可以作为时钟源,只需要配置相应的寄存器,就可以完成,这里不再赘述。 硬件上决定了该时钟源受auxclk1控制,现在的工作就是配置a原创 2012-06-28 14:42:13 · 2110 阅读 · 0 评论 -
Linux内核本身和进程的区别 内核线程、用户进程、用户线程
这个概念是很多人都混淆的了,我也是,刚开始无法理解OS时,把Linux内核也当做一个进程。其实内核本身不是以进程形式存在的,最多在初始化的过程中表现得就像一个进程,但是内核绝对没有进程的数据结构task_struct,可以严格跟进程区分开 。自从创建init 进程之后,内核就不再主动占有cpu了。只有当进程主动要求和中断到来时,内核才动一动,很快又把cpu还给合适的进程,不是想象中的,以后台服转载 2010-10-10 13:27:00 · 1112 阅读 · 0 评论 -
TMS320DM644x DMSoC GPIO 同样适用DM365平台
最近做sony ss-3的驱动,期间用到用gpio口来复位前端sensor。于是相当于把TI DaVinci644X 系列的GPIO文档翻译一下,希望以后还会用到。一般某个端口做什么用途是不确定的,当然有的端口有专门用途。像有些就是spi 和 gpio复用的,在使用前要先设置下端口复用,是用作普通的gpio口还是其他用途。好啦,废话不多说,先上GPIO block 图 看原创 2010-10-22 20:08:00 · 2546 阅读 · 0 评论 -
platform的probe函数是何时被调用的
这几天搞TI的vpfe,里面设备的注册使用platform,平台设备注册方式来注册的。一直都知道112 struct device_driver {113 const char * name;114 struct bus_type * bus;115 116 struct completion unloaded;117 struc原创 2010-10-14 20:31:00 · 5415 阅读 · 0 评论 -
Android系统插入OTG后不休眠
这两天一直忙着搞插入OTG死机的问题。有时候机器上面插入个U盘,鼠标,或者硬盘,如果这个时候没有接充电器的话,有很大的概率机器直接死机了,而且必须插入充电器才能开机。实测电池电压基本为0,原来是电池过流保护了。由于采购的电池保护点过低(1.5A的时候就挂了),只能想办法把输出电流降到最低了,尝试过很多方法,调低背光亮度可以有效解决在正常使用中死机,但是插入OTG死机的问题一直没有得到解决。原创 2012-07-03 19:18:45 · 5660 阅读 · 3 评论 -
Freescale MPC85XX系列BSP各设备注册浅析
这几天项目不太忙,于是抽空看了一下关于BSP相关的东西,记下来跟大家分享一下。我们公司用的产品主要是freescale公司的powerpc系列,期中MPC8548,MPC8572用的比较多。由于要给老外做整个板卡上硬件的测试工作,所以对于板上资源是必须要了解的。本篇文章的侧重点在于板上各设备是如何注册的(只讲设备注册,不讲驱动注册),而对于板上有哪些资源,datasheet上都写得明明白白,在原创 2011-06-08 15:21:00 · 1851 阅读 · 2 评论 -
理解“统一编址与独立编址、I/O端口与I/O内存”
理解“统一编址与独立编址、I/O端口与I/O内存” 引言: 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内转载 2011-06-13 16:56:00 · 1141 阅读 · 0 评论 -
TWL6030 电源管理芯片中断注册,处理过程
TI TWL6030 是一款功能强大的电源管理芯片。集成了很多功能,可以对整个板卡上的各设备进行供电和电源管理,功能大致和PC上的电源类似,就是一端插上电源,另一端分出来好多电源线,分别给处理器,内存,硬盘等供电。只不过有了电源管理芯片,各个电压可以配置。本文主要讲TWL6030上各设备中断处理过程。为什么用这个来讲,主要是它很特殊,我们知道,普通的设备只有一根中断线接到原创 2012-05-10 20:23:03 · 3292 阅读 · 0 评论 -
Android中休眠与唤醒之wake_lock, early_suspend, late_resume
最近研究如何让Android不休眠。听组里人说,机器在充电的时候不休眠。我试了一下,确实是,串口可以使用(CONFIG_PM_DEBUG并没有打开)。这个时候,LCD显示屏是休眠了,触摸屏也休眠了,其他的比如重力传感器等就没有看了,但是标准的Linux系统并没有进入休眠。看了网上好多关于Android系统的休眠与唤醒例子,感觉有些懵懵懂懂的。于是,还是看内核代码吧。 An原创 2012-05-28 19:49:20 · 11422 阅读 · 2 评论 -
解决bq2416x休眠后USB充不进电
前两天,我的机器一直可以进行USB充电,而且都充满了。就没太在意USB充电的问题。但是最近,经常发现USB充不了电。于是用cat /proc/driver/deb2416x看一下寄存器配置,果然发现负责USB充电电流的寄存器2的值不对。但是一直没找到哪个地方能设置这个值,因为这个值在模块初始化的时候会进行设置,之后代码里没有任何地方操作该寄存器。 问了下老大,他说应该是看门原创 2012-08-31 16:55:20 · 2680 阅读 · 3 评论