- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 Android WiFi--系统架构
1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口。整个WiFi系统架构如下图所示: 一切尽在上图中,下面将对每部分进行详细分析。1.1 WifiService 由SystemServer启动的时候生成的Connecttivity
2012-10-30 18:07:40 48136 11
转载 Android WiFi系统
一、wpa_supplicant是什么? wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过soc
2012-10-30 09:36:38 9032
转载 Android 系统属性
一、 简介 每一个属性都是一个名值对,名和值都是文本。Android系统中,属性被大量使用,用来记录系统设置或者在进程间交换信息。属性在整个系统中是可见的,每一个进程都可以get/set属性。 系统初始化时,在init这个进程中,Android会分配一些内存来存储这些属性,Init源码在/system/core/init中。Init这个进程会开启一个运行在init
2012-10-27 17:23:28 2731
转载 Bootloader - Main system - Recovery的三角关系
一、MTD分区:BOOT: boot.img,Linux kernel (within normal ramdisk)MISC: bootloader message structRECOVERY: recovery.img,Linux kernel (within recovery ramdisk)SYSTEM: system.img
2012-10-26 15:53:19 12248 3
转载 Android OTA 升级(五):updater
一、简介 前面分析的OTA升级的各部分代码都是在搭一个舞台,而主角现在终于登场,它就是updater。Google的代码架构设计非常好,各部分尽量松耦合。前面介绍升级脚本时,可知有两种类型的脚本,amend & edify(Amend脚本在Android 1.5中已经被废除,只保留了Edify脚本). 他们各自对应一个updater. 这里,我们主要关注新的edify的updater
2012-10-26 11:41:15 5547 1
转载 Android OTA 升级(四):进入根文件系统
一、简介 从bootloader 进入Recovery 模式后,首先也是运行Linux内核,该内核跟普通模式没有区别(减轻了BSP开发者的任务)。区别从执行文件系统开始。 Recovery 模式的细节就隐藏在其根文件系统中。下面,我们就看看进入Recovery 根文件系统都干些啥。二、init.rc 和正常启动一样,内核进入文件系统会执行/init, in
2012-10-25 17:59:11 4318
转载 Android OTA 升级(三):生成recovery.img
一、简介 得到了ota升级包后,我们就可以用它来升级系统了。Android 手机开机后,会先运行 bootloader。 Bootloader 会根据某些判定条件(比如按某个特殊键)决定是否进入 recovery 模式。Recovery 模式会装载 recovery 分区, 该分区包含recovery.img。recovery.img 包含了标准内核(和boot.img中的内核相同)以及re
2012-10-25 17:38:00 4562
转载 Android OTA 升级(二): 脚本 ota_from_target_files
1. ota_from_target_files简介 前面介绍了ota package 的编译过程,其中最核心的部分就是一个 python 脚本:ota_from_target_files. 现在我们分析这个脚本。不带任何参数,先看一下它的帮助:$ ./ota_from_target_files Given a target-files zipfile, p
2012-10-25 15:39:35 5227
转载 Android OTA 升级(一): 编译升级包
1. OTA功能介绍 OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了全量升级和增量升级模式,可以通过SD卡或U盘升级,也可以通过网络升级。这里,我们先研究最简单的情况,通过SD卡进行完全升级。2. 编译OTA全量升级包 1) 首先编译出android 2) make otapackage 即可获得:out/tar
2012-10-25 11:42:37 5687
转载 Android Image文件结构
1. ramdisk.img 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount ,这个文件中只是包含了 /init 以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount 起来。它经常被打包到boot.img中,boot.img文件结构见另外一篇文章。 2.system.img
2012-10-25 11:11:36 4844
转载 Android解包打包system.img的方法
1. system.img为yaffs2镜像2. 解包 对system.img的解包需要用到unyaffs这工具,下载地址:http://code.google.com/p/unyaffs/downloads/list 下载以后和system.img放入同一个文件夹,可直接下载可执行文件,也可以自己编译“gcc -o unyaffs unyaffs.c”
2012-10-25 10:56:53 19368
转载 分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Readthe Fucking Source code)!!init程序源码在Android官方源码的system/core/ini
2012-10-24 15:52:57 1806
转载 Android boot.img 结构
1. Android 的boot.img 包括 boot header,kernel, ramdisk2. 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由boot header,压缩的内核,ramdisk以及second stage loader(可选)组成,可以从mkbootimg.
2012-10-24 14:48:21 2211
原创 CPU frequency and voltage scaling code in the Linux(TM) kernel
1. 基本介绍 1) 调整CPU运行频率是一个节能的好方法,CPU运行频率越低,CPU功耗越小。 2) 下面的我现在正在使用的CPU为例进行说明。触发CPU频率调整的有两个源: 1)根据CPU负荷进行调整(代码位于:kernel/drivers/cpufreq,下面以cpufreq_interactive.c为例,当/sys/drivers/system/cpu/c
2012-10-23 09:02:42 6630 1
转载 Android获取系统cpu信息,内存,版本,电量等信息
1、CPU频率,CPU信息:/proc/cpuinfo和/proc/stat通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。读取/proc/stat 所有CPU活动的信息来计算CPU使用率,下面我们就来讲讲如何通过代码来获取CPU频率:package com.orange.cpu; import java.io.BufferedReader;import ja
2012-10-20 09:54:27 19341
转载 Android下如何获取CPU序列号
public static String getCPUSerial() { String str = "", strCPU = "", cpuAddress = "0000000000000000"; try { //读取CPU信息 Process pp = Runtime.g
2012-10-20 09:49:31 6568 1
转载 Linux workqueue工作原理
1. 什么是workqueue Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程. 工作队列(workqueue)是另外一种将
2012-10-19 17:02:37 37502 6
转载 DVFS--动态电压频率调整
Linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时间的工作主要在机制上。暂时想实现的主要的机制有:cpu级,设备驱动级,系统平台级。管理颗粒度不断递增,形成三驾马车齐驱的形势。 cpu级:主要实现比较容易的在系统处于目标在于频繁发生、更高粒度的电源状态改变,主要的实现方式为idle,包括今天的主要想讲的动态主频。 设备驱
2012-10-19 11:28:33 13126
原创 把驱动代码加入Linux Kernel
1. Kconfig文件的作用内核源码树的目录下都有两个文件Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文件中。在
2012-10-13 17:48:38 3319
转载 本机不能访问ubuntu虚拟机samba问题
环境:虚拟机装的是ubuntu8.04,虚拟机版本vmware7.0. 宿主机windowsXP。虚拟机网络设置bridged.现象:配置samba之后,把虚拟机网络设置改为NAT,能够访问samba.改为bridged就不行。改为bridged之后虚拟机和XP相互能ping通,但XP不能访问samba. 但是局域网内的其他机器可以。 解决:安装系统设置的共享模块
2012-10-12 15:01:09 2848
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人