- 博客(54)
- 资源 (26)
- 收藏
- 关注
原创 自己实现内核中的current宏
说明: current宏,是一个全局指针,指向当前进程的struct task_struct结构体,即表示当前进程。 例如current->pid就能得到当前进程的pid,current-comm就能得到当前进程的名称。 每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。 当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用
2012-09-06 13:56:58 1246
转载 android数据库基础
数据库是保存用户数据的文件,包括默认的设置和个人重新设置的数据,这些数据保存在/data/data下的各个以apk包名为目录名的路径下:#cd /data/data #busybox find ./ -name "*.db" -print ./com.Android.email/databases/EmailProviderBody.db- ./com.Android
2012-09-30 17:40:06 2058
转载 andriod wifi
这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。打开这个类,我们可以
2012-09-29 15:52:14 2881 2
转载 SD卡驱动分析
SD卡驱动分三层结构分别对应driver/mmc目录下的card、host、core三个文件夹。其层次关系如下所示:块设备驱动层(linux/block)内核空间file_operations调用块设备请求处理(linux/driver/mmc/card)
2012-09-29 12:29:38 6871
转载 linux sd卡驱动分析
1. 硬件基础: http://blog.ednchina.com/yelov/198217/message.aspxSD/MMC/SDIO 概念区分概要 SD (Secure Digital )与 MMC (Multimedia Card ) SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被
2012-09-26 12:45:06 1427
转载 全面解析Linux内核的同步与互斥机制--同步篇
【摘要】本文分析了内核的同步及互斥的几种机制:原子运算符(atomic operator)、自旋锁Spinlock、等待队列Waitqueue、事件Event、completion、信号量Semaphore及其优化版互斥锁,详细分析了其实现流程。Event及Semaphore本质上都是基于Waitqueue和自旋锁实现的。本文还探讨了每种机制最适合应用到哪些地方,以及如何构建安全高效的内核及驱动代
2012-09-25 13:34:49 828
转载 浅谈linux内核中的idr机制
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁。现在,在内核的很多地方都可以找到idr的身影。idr机制适用在那些需要把某个
2012-09-25 11:25:18 581
转载 LINUX中的MACH定义之MACHINE_START / MACHINE_END
本文讲解LINUX中用MACHINE_START/MACHINE_END定义的MACH,并给出定义的各个成员函数在初始化过程中被调用的时机。 1. 定义一个MACHLINUX中MACHINE定义是用MACHINE_START()/MACHINE_END两个宏来实现的,比如MSM的实现(arch/arm/mach-msm/board-halibut.c):[cpp]
2012-09-25 10:37:44 1098
转载 LINUX内核中的xx_initcall初始化标号
LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 这些起什么作用呢?查阅源代码(android goldfish-2.6.29)并搜索网上相关文章,对此做一总结。初始化标号先看这些宏的定义(定义在文件include/linux/init.
2012-09-25 10:10:22 796
转载 SD/MMC/SDIO 概念区分概要
SD(Secure Digital)与 MMC(Multimedia Card)SD 是一种 flash memory card 的标准,也就是一般常见的 SD记忆卡,而 MMC则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC规格说明:[http://zh.wikipedia.org/wiki/Secure_Digital]。SDI
2012-09-24 13:47:30 761
翻译 PCI Power Management:Runtime Device Power Management
2.3. Runtime Device Power Management------------------------------------The PCI subsystem plays a vital role in the runtime power management of PCIdevices. For this purpose it uses the general
2012-09-22 17:39:31 2299
转载 Linux MMC/SD/SDIO体系结构
有关MMC/SD/SDIO相关的知识这里就不多讲了,请参考相关资料。这里主要涉及Linux下MMC相关内容。内核版本(2.6.36)首先说一下Linux相关MMC的代码分布,主要有两个目录,一个头文件目录和一个源代码目录。分别位置如下:include/linux/mmcdrivers/mmc- 要阅读MMC相关代码就必须要看这两个目录。在drivers/mmc目录下
2012-09-18 12:38:02 707
转载 mmc子系统学习笔记五 mmc子系统的代码组织
有了上一篇mmc子系统学习笔记四 mmc子系统的结构组织的介绍,看下面的代码似乎容易了许多,这篇文章,walfred就把基于Linux 2.6.32 高通msm的bsp代码,以及mmc子系统的驱动代码先交待出来,这样看起来会更有针对性。BSP相关代码 在soc系统中,sdcc不可能单独使用cpu的接口连接mmc总线,或者sdio总线,也不会使用spi,sci等,故直接集
2012-09-18 12:26:00 981
转载 再谈linux中为何没有网卡设备文件--深层次原因
这个问题其实没有什么意思,知道了问题的答案能表明一个人技术水平有多高吗?不能!这个问题有答案以及有意义吗?答案都是没有!那我还为何一直对这个问题死死揪住不放?这类问题可以提高一个人的素质以及了解一段关于网络和unix的历史,正是因为这些都很有趣,才如此值得关注。在unix中,一切io相关的实体都被抽象成了文件,之所以抽象成文件第一是为了接口统一,第二是为了操作统一,第三是为了策略隐藏,比如这样
2012-09-16 23:37:00 731
转载 SDIO相关学习
这段时间在研究SDIO接口,所以要求对MMC、SD、SDIO都要有所了解,网上找过这些概念,不过总是流传的是Jollen 笔记里面的一份,许多地方未能清楚交待,所以我在其基础上加上一些自己的了解来加深对SDIO的学习。并一并学习下SDIO总线。一、首先从SD和MMC说起MMC(Multimedia Card)与 SD(Secure Digital Memory Card)MMC:Mul
2012-09-16 21:52:48 1394 1
转载 mmc子系统学习笔记二 关于mmc子系统笔记的说明
mmc子系统是Linux设备驱动中一个不可缺少的部分,但科技进步,时代发展,现在mmc已经不是从前的mmc(Multimedia Card),现在mmc子系统已经衍生到SD,SDIO相关的技术了,也就是说mmc子系统已经能够管理控制SD和SDIO相关了,但是由于历史的原因,仍称呼为mmc子系统。mmc子系统差异说明: 本mmc子系统学习笔记一以htc g5(android
2012-09-16 21:48:41 3179
转载 mmc子系统学习笔记三 mmc子系统知识储备
有了先前的介绍,我们这边需要为阅读mmc子系统做一点知识储备,重点储备是关于Linux设备模型,以及中断上下文和进程上下文的一些简单介绍。Linux设备模型: 这个walfred曾经做好了一个系列,地址是:Linux设备模型学习笔记阅读进程上下文和中断上下文: 处理器总处于以下状态中的一种: 1、内核态,运行于进程上下文,内核代表进程运
2012-09-16 21:42:55 841
转载 mmc子系统学习笔记四 mmc子系统的结构组织
从这一节起,我们正式进入mmc子系统学习笔记内容,这边walfred就根据自己的观点,整理了一份Linux下mmc子系统的结构组织框架,相信带着这个框架来理解学习mmc子系统应该会起到不错的效果。下面是mmc子系统的结构组织: 在Linux中,系统中mmc子系统本身没有任何README文档,所以此算一个"帮助文档"。其将涉及到3条总线,2块设备,2个驱动。三条总线
2012-09-16 21:34:21 1991
原创 高通MSM/QSD/QSC 的区别
QSC--Qualcomm Single ChipMSM--Mobile Station ModemMDM--Mobile Data Modem,数据卡解决方案。QSD--高通老一代的设计体系,新的设计为MSM。APQ 是AP only的芯片,没有modem功能,可以做Wifi only的平板电脑
2012-09-16 21:01:15 5445
转载 Linux内核的Oops
什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux内核
2012-09-16 18:30:44 992
转载 Linux设备模型 (2)
上一篇文章《Linux设备模型 (1)》主要介绍了Linux设备模型在用户空间的接口sysfs,用户通过这个接口可以一览内核设备的全貌。本文将从Linux内核的角度来看一看这个设备模型是如何构建的。在Linux内核里,kobject是组成Linux设备模型的基础,一个kobject对应sysfs里的一个目录。从面向对象的角度来说,kobject可以看作是所有设备对象的基类,因为C语言并没有面向
2012-09-16 18:21:47 521
转载 Linux内核里的智能指针
众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异常。现代的C/C++类库一般会提供智能指针来作为内存管理的折中方案,比如STL的auto_ptr,Boost的Smart_ptr库,QT的QPointer家族,甚至是基于C语言构建的GTK+也通过引用计数来实现类似的功能。Linux内核是如何解决这个问题呢?同样作为C
2012-09-16 17:54:31 681
转载 Linux设备模型 (1)
随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核版本是2.6.29。我们可以很明显的看到,在Linux内核中驱动程序的比例已经非常高了。
2012-09-16 13:16:46 421
转载 linux一些机制的总结
1. Work 将任务添加到系统的工作队列中Struct work_struct cd_wq;INIT_WORK(&cd_wq,work_func);Schedule_work(&cd_wq);实际上工作队列就是一个进程,添加到工作队列中就是调度的时候运行 Struct delayed_work otg_event;#define DELAY_TIME 1
2012-09-13 14:00:49 647
转载 linux 等待队列(wait queue)
什么是 wait queueWait queues are used to enable processes to wait for a particular event to occur without the need for constantpolling. Processes sleep during wait time and are woken up automatically
2012-09-13 10:41:09 1357
转载 为Android内核添加新驱动,并添加到menuconfig菜单【实践简记】
为Android内核添加新驱动,并提供menuconfig选项为Android的Linux内核2.6.25添加驱动。1. 在drives目录下添加hello目录,内含hello.c Kconfig Makefilehello.c内容:#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_i
2012-09-11 10:21:43 1477
转载 Android 电源管理
电源管理可以说是移动设备中最关键的技术之一,特别是对于现代的智能手机,具有大屏幕,高频处理器,大内存,各种外设多(gps,camera,传感器),多任务操作系统,等特点,电源管理尤其显得重要,如果没有一个高效的电源管理方案,你的smart phone可能跑2小时就没电了。Android的电源管理技术有什么特点呢:1. Application并不直接控制电源2. Application
2012-09-10 13:40:14 926
转载 Linux Kernel and Android 休眠与唤醒(中文版)
版本信息Linux Kernel: v2.6.28 Android: v2.0 对于休眠(suspend)的简单介绍在Linux中,休眠主要分三个主要的步骤:冻结用户态进程和内核态任务 调用注册的设备的suspend的回调函数顺序是按照注册顺序 休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程
2012-09-10 10:25:24 536
转载 Linux那些事儿之我是Hub(25)不说代码说理论 .
电源管理其实发展挺多年了,也算是比较成熟了,主流的技术有两种,APM和ACPI,APM,即Advanced Power Management,高级电源管理,ACPI,即Advanced Configuration and Power Interface,高级配置和电源接口。相比之下,APM容易实现,但是,APM属于一个BIOS的spec,也就是说需要BIOS的支持。这种情况过去在笔记本电脑中比
2012-09-10 09:35:30 1902
转载 Linux那些事儿之我是Hub(大结局)挂起自动化
目睹了当今大学校园的素质流氓化,kiss公开化,消费白领化,上课梦游化,逃课普遍化,补考专业化之后,区里的人们很时髦的提出了一个挂起自动化的概念.接下来的一个话题就是autosuspend/autoresume.所谓的autosuspend就是driver自己判断是否需要挂起,而之前的suspend/resume是受外界影响的,比如说PM core统一的系统级的挂起,或者用户通过sys
2012-09-09 11:38:41 912
转载 待机、睡眠、休眠的区别
在windows XP系统中,默认有待机和休眠两种方式来供我们在特殊情况下使用,既不影响我们的使用,又能节省耗电。而在windows vista系统之后,像Windows 7又新增加了一个睡眠功能,它结合了待机和休眠,是一种全新的模式,也是使用最普遍的。 待机:在我们长时间离开,但又希望回来立刻恢复到走时的状态,可以选择待机。在待机状态下,对所有硬件(除开内存)供电停止,使能耗
2012-09-08 20:56:17 810
转载 标准linux休眠和唤醒机制分析
标准linux休眠和唤醒机制分析(一)说明:1. Based on linux2.6.32, only for mem(SDR)2. 有兴趣请先参考阅读:电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4. 基于手上的一个项目来讨论,这里只讨论
2012-09-08 18:52:34 1301
转载 新版linux系统设备架构中关于电源管理方式的变更
一、设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,struct class,struct device_driver,struct bus_type等。 @kernel/include/linux/devices.h中有这几中结构体的定义,这里只列出和PM有关的项,其
2012-09-08 17:53:22 862
翻译 Debugging hibernation and suspend
Debugging hibernation and suspend (C) 2007 Rafael J. Wysocki [email protected]>, GPL1. Testing hibernation (aka suspend to diskor STD)To check if hibernation works, you can try to hibernate in the "re
2012-09-08 15:52:46 584
转载 用rfkill来控制linux下的无线设备
很多计算机系统包含 无线电传输,其中包括 Wi-Fi、蓝牙和 3G 设备
2012-09-08 15:30:54 2695
转载 Run-time PM
每个device或者bus都会向run-time PM core注册3个callbackstruct dev_pm_ops {...int (*runtime_suspend)(struct device *dev);int (*runtime_resume)(struct device *dev);int (*runtime_idle)(struct device
2012-09-08 15:02:37 792
翻译 Runtime Power Management Framework for I/O Devices
Runtime Power Management Framework for I/O Devices(C) 2009-2011 Rafael J. Wysocki , Novell Inc.(C) 2010 Alan Stern 1. IntroductionSupport for runtime power management (runtime PM) of I/O device
2012-09-08 11:54:59 1992
转载 Linux 2.6中断下半部机制分析
作者:流星摘要 本文主要从使用者的角度对Linux 2.6内核的下半部机制softirq、tasklet和workqueue进行分析,对于这三种机制在内核中的具体实现并未进行深入分析,倘若读者有兴趣了解,可以直接阅读Linux内核源代码的相关部分。说明 本文档由流星自网上收集整理,按照自由软件开放源代码的精神发布,任何人可以免费获得、使用和重新发布,但是你没有限制别人重新发
2012-09-08 11:27:27 707
转载 Debug Android and Linux suspend and resume (中文)
攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。1. no_console_suspend 在kernel启动参数里面加上no_console_suspend, 这个是最基本的, 因为kernel在把console suspend掉以
2012-09-07 17:09:24 837
转载 linux 休眠与唤醒
在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。当这些进程被解冻的时候,他们是不知道自己被冻结过的,只是简单的继续执行。如何让Linux进入休眠呢?用户可以通过读写sys文
2012-09-07 15:34:13 1447
Indoor Positioning using Sensor-fusion in Android Devices
2013-10-22
wifi_p2p_technical_specification_v1.1_content.pdf
2013-10-02
深入浅出MIPS
2013-08-29
wp_Miracast_Consumer_201301_Simplified_Chinese.pdf
2013-02-21
apk安装包的中的dex优化
2013-02-17
-Hilman-Runtime-PM
2012-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人