自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

Source Insight v3.50.0058.

Source Insight v3.50.0058.

2014-07-03

notepadpp_v631.zip

notepadpp_v631.zip

2013-10-23

WindowsGrep23

WindowsGrep23

2013-10-23

Indoor Positioning using Sensor-fusion in Android Devices

Indoor Positioning using Sensor-fusion in Android Devices

2013-10-22

wifi-display.pkt

wifi-display.pkt

2013-10-02

wifi_p2p_technical_specification_v1.1_content.pdf

wifi_p2p_technical_specification_v1.1_content.pdf

2013-10-02

wps-pbc-pkt

wps-pbc.apc

2013-10-01

wifi-direct.pkt

wifi-direct.pkt

2013-10-01

深入浅出MIPS

英国科学家 Dominic Sweetman(经典著作 See MIPS Run 的作者),称 MIPS 为“高效的 RISC 体系结构中最优雅的一种体系结构”。 它是一个双关语: 即是 Microcomputer without Interlocked Pipeline Stages 的缩写,同时又是 Millions of Instructions Per Second 的缩 写。 MIPS 的处理单元是一个五级流水线:Instruction Fetch, Register & Decoder, ALU, Memory 以及 Write back。一开始的 MIPS 是为 32 位系统设计的,实际上,后续的 64 位扩 展,也依然对 32 位的工作模式向下兼容着。一如其他的 RISC 处理器,MIPS 的每条指令长度 是固定的 32bit。(因此,最长的局部跳转指令只能跳转 2 的 26 次方 Byte,也就是 2 的 24 次 方,16777216 条指令) MIPS 有 32 个通用寄存器,编程者可以使用其中除$0 外的所有寄存器暂存数据。$0 寄存 器,在硬件上被设计为永远读出 0。我们可以用$0 寄存器的此特性,实现一些技巧性的编程, 譬如实现 NOP 操作。MIPS 本没有 NOP 指令,但由于对$0 寄存器的写入实际上无意义,可以 作为空操作使用。 事实上,编译器从高级语言(典型如 C/C++)转换为 MIPS 汇编指令时,一般总是遵守一 定的寄存器使用约定。某些寄存器用来从函数中传入和传出参数,存储临时数据,另一些则起特 殊作用,如保存调用函数时的指令地址,或作为堆栈指针等。如果你使用汇编开发,理论上可以 无视这点约定,但是,一般地,遵守这个约定,与人方便,也为己方便。关于寄存器使用的约定, 以后会展开论述。 一如所有的 RISC 处理器,MIPS 没有 CISC 那样复杂多变的寻址方式,统一为 Load/Store 寻址。任何载入和存储操作,都可写为如下形式: lw $1, offset ($2) 这条指令的操作符可以为 Load 或 Store,一次 Load/Store 操作的范围可以为字/半字/ 字节(对应 gcc 的 int, short 和 char)。偏移量是一个带符号的 16bit 整数。两个作为操作数 的寄存器可以是任何通用寄存器。(你可以向$0 写入,但无任何意义,等同于空操作)。对于 64 位模式下,也可以对 double 类型进行操作。注意 Load/Store 都必须对应一个对齐的地址,否 则会引发一个异常(Exception)。 MIPS 支持最多 4 个协处理器。协处理器 CP0 为 CPU 的控制协处理器,是体系结构中必须 实现的。CP1 为浮点处理器。CP2 保留,各生产厂商往往用来实现一些自己的特色功能,例如 RMI 的 Fast Message Ring 等。CP3 原本也是保留共扩展用,但很多 MIPS III 和 MIPS IV 时代的扩展指令集使用了它。对于 CP0,我们会有专门的一段用来讨论。 为适应处理器向多核时代的演进, MIPS 引入了多核操作必要的原子指令 (Atomic operation)、内存屏障(Barrier)等操作。在 SMP 或 AMP 等多核架构中,这些指令是并行计算 同步的保障。

2013-08-29

blcr-0.8.5.

blcr-0.8.5

2013-06-21

wp_Miracast_Consumer_201301_Simplified_Chinese.pdf

wp_Miracast_Consumer_201301_Simplified_Chinese.pdf

2013-02-21

Makefile经典教程

Makefile经典教程

2013-02-19

busybox

busybox

2013-02-17

apk安装包的中的dex优化

apk安装包的中的dex优化,这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。

2013-02-17

win8/win7启用wifi热点

win8/win7启用wifi热点

2013-01-27

Ath6kl_Android_ICS.pptx

Ath6kl_Android_ICS.pptx

2012-10-15

AR6000_Family_Programmers_Guide_Atheros

AR6000_Family_Programmers_Guide_Atheros

2012-10-15

liunx驱动程序第三版examples

liunx驱动程序第三版examples

2012-09-13

802.11无线网络权威指南

802.11无线网络权威指南(第二版全,非扫描).

2012-09-13

Runtime Power Management Framework

Runtime Power Management Framework

2012-09-13

-Hilman-Runtime-PM

New PM framework  Independent PM of devices at runtime  Idle devices can suspend  Merged in 2.6.32  Author: Rafael Wysocki

2012-09-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除