android开发
文章平均质量分 51
唐古拉在高歌
斯蒂芬地方
展开
-
uboot启动阶段修改启动参数方法及分析
uboot启动阶段修改启动参数方法及分析 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织。毕竟文字跟有声语言表达有别。但愿简单的东西别让我讲的太复杂!Arm板系统文件一般有三个——bootloader(uboot)、kernel(uImage)及根文件系统(rootfs)。在arm板上电后,按uboot->kernel->ro转载 2014-04-16 16:25:33 · 738 阅读 · 0 评论 -
最全的Android源码目录结构详解
Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发包配置)|-- cts转载 2014-04-08 15:01:25 · 842 阅读 · 0 评论 -
[Android]构建boot.img:root目录与ramdisk.img的生成
以TCC88XX为例,当在Android顶层源码目录使用make编译完成后,会生成这样一个目录:out/target/product/tcc8800,该目录内部有我们需要的boot.img和system.img,boot.mg使用kernel和out/target/product/tcc8800/root目录打包而成(广义的ramdisk),也就是说,boot.转载 2014-04-23 13:43:38 · 2452 阅读 · 0 评论 -
内核启动组件式初始化
在Linux内核源码中多处会看到诸如__init,__initdata,__exitdata的关键字,大部分这样的关键字定义在include/linux/init.h头文件中,它们都会在编译连接阶段被实现处理。#define __init __section(.init.text) __cold notrace __init标记的数据被存储在.init.text节转载 2014-04-23 13:47:42 · 970 阅读 · 0 评论 -
Android之旅 -- Recovery相关原理分析
原创文章,欢迎转载,转载请注明出处http://www.cnblogs.com/becklc/archive/2012/09/24/2676600.html本文依据android2.3源码只分析Recovery相关原理,不针对代码走读,现在Android版本已经4.x.x但是recovery的基本原理不变。一、Recovery是如何构成的 说recovery的构成并不贴切,应转载 2014-04-23 14:11:31 · 900 阅读 · 0 评论 -
adb devices no permissions
List of devices attached ???????????? no permissions 1. 查看还没有占有的文件名,这一步可以不做。udevadm test /class/usb 2. lsusb以下是我的输出(当前连的是ZTE R750) Bus 002 Device 007: ID 19d2:1354 ONDA Comm转载 2014-04-23 14:40:49 · 602 阅读 · 0 评论 -
android中各种img文件的作用以及系统启动过程
首先通过编译,先将android内核编译成功。正常情况下,在目录out/target.product/generic/(但是有的就没有generic文件,如freescale和iriver;但是lonshinetech下面就有这个文件,依据情况而定,只要能找到生成的三个文件就可以。例如:~/freescale/R9.2/out/target/product/imx51_bbg$ )下会生成三个文件转载 2014-04-23 12:12:33 · 1161 阅读 · 0 评论 -
android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk首先来看看Makefile是如何产生我们的boot.img的:boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由文件头信息boot header,压缩的内核,文件系统数据ramdisk以及second stage loader(可选)组成,它们之间非页面对齐部转载 2014-04-23 12:19:56 · 832 阅读 · 0 评论 -
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):MACHINE_转载 2014-04-09 13:56:26 · 742 阅读 · 0 评论 -
Android init进程启动分析
作者:唐老师,华清远见嵌入式学院讲师。一、Android Init.c执行流程Android中的内核启动后,kernel会启动第一个用户级别的进程:init,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。PS:可以通过:ps aux转载 2014-04-09 11:10:02 · 635 阅读 · 0 评论 -
理解 Android Build 系统
Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站:http://source.android.com/source/downloading.html。Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,Shell转载 2014-04-09 17:30:56 · 827 阅读 · 0 评论 -
WIFI驱动设计原理
初始化在 SystemServer 启动的时候,会生成一个 ConnectivityService 的实例, try { Log.i(TAG, "Starting Connectivity Service."); ServiceManager.addService(Context.CON转载 2014-04-10 10:49:28 · 667 阅读 · 0 评论 -
wifi 流程
Wifi 连接部分 当用户选择一个AP时会弹出一个AP参数配置对话框,此对话框会显示当前选择的AP信号强度,若此AP设置了密码则需要用户输入密码才能登录。WifiSettings中的 onPreferenceTreeClick会被调用 @Override public boolean onPreferenceTreeClick(PreferenceScre转载 2014-04-10 11:16:00 · 687 阅读 · 0 评论 -
wpa_supplicant 初始化流程分析
1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txtwpa_supplicant对于启动命令带的参数转载 2014-04-10 11:17:04 · 548 阅读 · 0 评论 -
Android的WiFi子系统架构
本文部分内容修正自《Androd系统原理及开发要点详解》,部分内容为原创! 前言:最近项目中要实现几个与WiFi相关的机能:WPS,WiFI proxy,Airplane Mode相关的小机能等。我借着这次机会,对Android的WiFi框架进行了一下学习,对其有一个初步的了解。所以特地整理了出来,以备与各位探讨,并欢迎指教。 一、WiFi基本框架Android的WiFi系转载 2014-04-10 11:27:40 · 1169 阅读 · 0 评论 -
android wifi驱动开发日记
学习android wifi开发已经一周了,今天开始立帖,将每天的学习成果贴出来,以备以后查阅,从framework到wpa_supplicant的适配层(wifi.c)网上介绍的帖子很多,而且本身也并不复杂,其中framework部分需要注意的是wifiService和wifiMoniter两部分,这两快一个是转发AP的CMD另一个是接收来自wpa_supplicant的CMD。他们与本地库的连转载 2014-04-10 11:00:21 · 944 阅读 · 0 评论 -
android usb adb流程
android adb 概述android adb的代码分为两部分:kernel层的代码在如下路径:drivers/usb/gadget/f_adb.cdrivers/usb/gadget/android.c他吐给上层应用的是如下的设备节点:/dev/android_adb应用层的代码在如下路径:system/core/adb目录转载 2014-05-12 18:38:01 · 863 阅读 · 0 评论 -
Android源码编译选项eng、user、userdebug的区别
1、各选项简要说明eng:debug版本user:release版本userDebug版本:部分debug版本2、详细介绍Android源码编译选项eng、user、userdebug是由Android.mk文件中的LOCAL_MODULE_TAGS配置项来决定的。其一般形式如下:[html] view plaincopy转载 2014-05-13 15:08:30 · 968 阅读 · 0 评论 -
android编译user版本,如何启用user版本的adb
今天需要编译一个android4.2.2 的user版本来测试;android编译相关的东西在源码的build目录下,全编前需要执行. build/envsetup.sh执行上面的shell脚本会include一些其他目录下的shell脚本,以及声明一些命令函数,比如说接下来执行的choosecombo命令; 1 2 3 4 5 6 7转载 2014-05-13 09:50:17 · 3633 阅读 · 0 评论 -
android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk首先来看看Makefile是如何产生我们的boot.img的:boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由文件头信息boot header,压缩的内核,文件系统数据ramdisk以及second stage loader(可选)组成,它们之间非页面对齐部转载 2014-04-28 22:34:11 · 605 阅读 · 0 评论 -
Android 4.1 Netd详细分析(六)DnsProxyListener
在前面的几篇中我们从 main 函数入手,主要分析了 CommandListener + Netlinkmanager 两部分共同组成的可实现与 Kernel 层、Framework 层通信,并完成一套完整的功能系统。并且在文中提及到另外两个部分,DnsProxyListener 和 MDnsSdListener。顾名思义两者都是与 DNS 相关。以下是 main函数中提及到两者的部分。转载 2014-06-23 18:39:37 · 1845 阅读 · 0 评论 -
RK30SDK开发板驱动分析(一):platform device 的概念与注册
做过51单片机或者ARM开发的人都知道,单片机内部都有自己的“片内外设”,比如UART,比如I2C,比如SPI等等。。。写单片机程序的时候,比如对于UART的驱动,我们都是在程序中直接写一套函数,来操作相关的UART寄存器,在程序中的其它地方调用这些函数,完成串口的收发。 在小规模的单片机程序中,这样做是再正常不过的。但是,在规模庞大的LINUX内核中,要处理各种各样的CPU,各种各样的U转载 2014-07-16 10:52:49 · 2194 阅读 · 0 评论 -
Android 4.1 Netd详细分析(一)概述与应用实例
一.概述 所谓 Netd 就是Network Daemon 的缩写,表示Network守护进程,类似的命名还有很多,例如 Vold(Volumn Deamon),Rild(Radio Interface Layer Deamon) Netd负责跟一些涉及网络的配置,操作,管理,查询等相关的功能实现,比如,例如带宽控制(Bandwidth),流量统计,带宽控制,网络地址转转载 2014-06-23 17:58:14 · 1679 阅读 · 0 评论 -
Android 4.1 Netd详细分析(二)源文件/模块/基础类统领
这篇粗略介绍-Netd文件夹下面的源文件/模块的基本功能,和主要类的组织关系。一、文件构成Netd文件下的源文件模块~组织以及基本实现功能:======================================================================Android.mk转载 2014-06-23 18:07:31 · 912 阅读 · 0 评论 -
Android 4.1 Netd详细分析(五)代码分析3
上一篇我们按照函数的调用流程,完成了由NetlinkManager,NetlinkHandler,NetlinkListener,SocketListener组成的,从kernel到framework的单项消息通路。主要是通过内部的socket实现的通信。通过设置socket监听过滤属性,来接收kernel发出的event,(其中kernel发出的event部分不用了解,可以理解为是自发的)。并通转载 2014-06-23 18:38:37 · 895 阅读 · 0 评论 -
Android 4.1 Netd详细分析(三)代码分析1
接下来开始从代码分析,按照从下至上的顺序来分析,从native层向framework层过渡,Android的各个层之间严格按照软件工程原理的低耦合要求.[cpp] view plaincopy#include #include #include #include #include #include #include #include转载 2014-06-23 18:20:14 · 953 阅读 · 0 评论 -
Android 4.1 Netd详细分析(四)代码分析2
我们按照main函数代码的执行顺序,首先实例化NetlinkManager。接下来代码如下。[cpp] view plaincopy if (!(nm = NetlinkManager::Instance())) {//实例化对象nm ALOGE("Unable to create NetlinkManager"); exit(1);转载 2014-06-23 18:29:20 · 926 阅读 · 0 评论 -
Android调试获取Log
1 Android Log最近遇到一些抓log 的事情,很多来自网上达人的分享,加在一起总结一下:log文件分为实时打印的,还有状态信息的两种 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump, QXDM Log 状态信息的有:adb shell dmesg,adb shell dumpsta转载 2014-07-16 13:54:46 · 962 阅读 · 0 评论 -
Linux内核驱动GPIO的使用
一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用转载 2014-07-16 15:57:18 · 1194 阅读 · 0 评论 -
android 平台USB wifi驱动移植及使用 SDIOwifi
但是命令发到wpa_supplicant后的流程网上提到的资料就非常少了,不过由于wpa_supplicant是一个标准的开源项目,已经被移植到很多平台上,它中间的过程我暂时还没有去细看。比较关心的是wpa_supplicant在 接收 到上层的命令后 是怎么将命令发给DRIVER的,DRIVER在接收到命令后的解析的动作 以及之后 调用驱动功能函数 的流程以及驱动对寄存器控制的细节。转载 2014-06-26 15:23:48 · 1034 阅读 · 0 评论 -
系统启动后的 wifi 加载过程
============================ Wifi 启动代码流程 ====================1、系统启动 首先加载init.rc,这个文件 会加载所有service,init是linux启动的 第一个 用户空间 的应用(属于linux进程,不属于Android应用)。2、init.rc里有以下这句话:Service wpa_supp转载 2014-06-26 14:35:59 · 784 阅读 · 0 评论 -
Android平台开发-WIFI 驱动移植 -- 详细-不错
一、WIFI的基本架构(代码路径) 1、WIFI Settings应用程序: packages/apps/Settings/src/com/android/settings/wifi/ 2、JAVA部分(framework): frameworks/base/services/java/com/android/server转载 2014-06-26 16:53:17 · 932 阅读 · 0 评论 -
wifi详解(四)
IOCTL的调用逻辑之所以要分析这个,是因为上层wpa_supplicant和WIFI驱动打交道的方式,多半是通过ioctl的方式进行的,所以看看它的调用逻辑(这里只列出其主要的调用逻辑): 上面便是用户ioctl调用的流程图,它最终分为两条线即有两种支持,选择那一条或两条都选(个人感觉最好选第2条线,因为它最后也是会调用到相应的函数的,而且还有其它更多的命转载 2014-06-26 18:46:45 · 813 阅读 · 0 评论 -
802.11(wifi)的MAC层功能
MAC层是802.11的主要功能部分。上层应用通过调用MAC层提供的接口原语调用MAC层的功能。 MAC一共向上提供了2大类接口原语,共30种。数据(1)和管理(29)。数据部分就是提供普通数据包的收发接口,管理部分是主要功能部分,例如发起 认证、连接、信道扫描等其它所有管理功能,如下表所示:(并非所有的原语都是可调用的,一部分是indication形式的向上通知。有request转载 2014-06-26 19:16:07 · 825 阅读 · 0 评论 -
android中wifi原理及流程分析(很经典)
在网上找的一篇好文章,分析的很详细,自己再加了些东西,图片有点大,不能完全显示,点击图像拖动鼠标直接查看图像。wifi相关的文件位置:WIFI Settings应用程序位于 packages/apps/Settings/src/com/android/settings/wifi/JAVA部分: frameworks/base/s转载 2014-06-26 19:24:49 · 861 阅读 · 0 评论 -
5wpa_supplicant程序 --详解
目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。 wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络转载 2014-06-26 15:30:52 · 895 阅读 · 0 评论 -
Porting WiFi drivers to Android
写的非常好。原文在:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html。咱就缺这。Update(19/05/2011): Verify validity against Gingerbread.Update (11/08/2010): Updated patch to fix转载 2014-06-25 14:26:19 · 805 阅读 · 0 评论 -
Softap热点原理分析
Android4.1.2设置中开关:packages/apps/Settings/src/com/android/settings/TetherSettings.java|----private void startTethering()| |----mWifiApEnabler.setSoftapEnabled(true);转载 2014-06-26 19:19:02 · 868 阅读 · 0 评论 -
wifi详解(二)
目录[-]1 Wifi模块解析和启动流程1.1 框架分析1.2 Wifi启动流程1 Wifi模块解析和启动流程1.1 框架分析WIFI整体框架如图所示:首先,用户程序使用WifiManager类来管理Wifi模块,它能够获得Wifi模块的状态,配置和控制Wifi模块,而所有这些操作转载 2014-06-26 19:10:22 · 632 阅读 · 0 评论 -
RK3066 实现LED闪烁的代码分析
实现LED灯的闪烁,需要在驱动里添加一个定时器函数,具体实现涉及到了LED GPIO驱动,用户空间程序调用驱动1.首先来看LED设备驱动注册过程,代码位于../kernel/drivers/leds/led-gpio.c中,297 static int __init gpio_led_init(void)298 {299 return platform原创 2014-07-18 15:56:51 · 2315 阅读 · 0 评论