深入理解:Android 编译系统 一,简介: Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架。众所周知,Android 是一个开源的操作系统。Android 的源码中包含了许许多多的模块。 不同产商的不同设备对于 Android 系统的定制都是不一样的。如何将这些模块统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向不同的硬件
How to find the crash point: Android Native crash There is a very quick way to find out which line cause the crash in logcat,Generally, if some native service crashes, look in the crash log in logcat like this:I/DEBUG ( 2253): *** *** *** ***
DEFINE_PER_CPU 转自 http://www.unixresources.net/linux/clf/linuxK/archive/00/00/47/91/479165.html首先,在arch/i386/kernel/vmlinux.lds中有/*will be free after init*/.=ALIGN(4096);__init_begin=.;/*省略*/.ALIGN
linux panic 和 bug_on 内核在发生严重错误的时候要“X屏”一下,以windows为例就是蓝屏,而 linux却是黑屏,windows仅仅提供一个出错码和对应地址,十分难以 理解,而linux却可能提供整个寄存器和堆栈,它不隐瞒一切,代码公开,当然出错时的环境就没有必要隐瞒了,首先看一下panic:NORET_TYPE void panic(const char * fmt, ...){ lon
linux缺页异常处理--内核空间 缺页异常被触发通常有两种情况——1.程序设计的不当导致访问了非法的地址2.访问的地址是合法的,但是该地址还未分配物理页框下面解释一下第二种情况,这是虚拟内存管理的一个特性。尽管每个进程独立拥有3GB的可访问地址空间,但是这些资源都是内核开出的空头支票,也就是说进程手握着和自己相关的一个个虚拟内存区域(vma),但是这些虚拟内存区域并不会在创建的时候就和物理页框挂钩,由于程序的局部性原理
Android Factory Reset flow Android Factory Reset flow ===== 应用流程 =========>frameworks/base/services/java/com/android/server/MasterClearReceiver.javaRecoverySystem.rebootWipeUserData(context);====>framesworks/base/core/j
android HAL浅探 又挖一个坑,好久没写了,看得代码多而繁乱,又没有专精一块,到头来还是困惑丛生,不管了,做个笔记,写写自己对android hal层的一点理解。涉及的代码来自android-4.0版本。1.概念和原因android hal的概念和存在的原因,不必多说,其实就两点。1.隔离具体驱动接口的变化,2.保护硬件厂商的关键信息。通过这一层的封装1.各类硬件(fb,gps,sensor)只需
Linux文件误删除恢复操作 作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。恢复步骤一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件系统格式
Android系统之闹钟模块浅析 关键词: JNI , HAL,Sqlite 在手机中,闹钟功能是一个最基本的功能,也是我们一个很常用的功能,现在来分析下android是怎么实现的,下面将采用自上而下的方式讲解。 1、APP层 进入桌面闹钟应用程序,选择设置新闹钟,会调到 Alarms.java 里面的 public static long setAlarm(Context
Linux芯片级移植与底层驱动(基于3.7.4内核) --中断控制器 中断控制器驱动在Linux内核中,各个设备驱动可以简单地调用request_irq()、enable_irq()、disable_irq()、local_irq_disable()、local_irq_enable()等通用API完成中断申请、使能、禁止等功能。在将Linux移植到新的SoC时,芯片供应商需要提供该部分API的底层支持。local_irq_disable()、local
内存调试的东西D/dalvikvm( 809 ): GC_CONCURRENT freed 1. verbosegc 一般Java虚拟机要求支持verbosegc选项,输出详细的垃圾收集调试信息。dalvik虚拟机很安静的接受verbosegc选项,然后什么都不做。dalvik虚拟机使用自己的一套LOG机制来输出调试信息。如果在Linux下运行adb logcat命令,可以看到如下的输出: D/dalvikvm( 745): GC_CONCURRENT fr
linux内核SMP负载均衡浅析 需求在《linux进程调度浅析》一文中提到,在SMP(对称多处理器)环境下,每个CPU对应一个run_queue(可执行队列)。如果一个进程处于TASK_RUNNING状态(可执行状态),则它会被加入到其中一个run_queue(且同一时刻仅会被加入到一个run_queue),以便让调度程序安排它在这个run_queue对应的CPU上面运行。一个CPU对应一个run_queue这样的设计,
linux regulator之浅见 1: 校准器的基本概念所谓校准器实际是在软件控制下把输入的电源调节精心输出。Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过regulator关闭其电源供应;或者降低提供给该模块的电压、电流大小。Regulator的文档在KERNEL/Docume
dvfs 解析 一、基本概念DVFS(Dynamic Voltage and Frequency Scaling)动态电压频率调节,是一种实时的电压和频率调节技术。在 CMOS 电路中功率消耗主要可以分为动态功率消耗和静态功率消耗,公式如下: 其中 C 代表负载电容的容值,V 是工作电压,α 是当前频率下的翻转率,f为工作频率,I_dq 代表静态电流。公式的前部分代表的是动态功率消耗,后部分