
[android framworks]
文章平均质量分 80
xgbing
专注于嵌入式方向的软硬件设计与开发(ASM\C\C++,RTOS,Linux,android,以太网\嵌入式网络协议栈\交换机,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII)。
展开
-
嵌入式linux和嵌入式android系统有什么区别和联系?
转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟。其实大家都认为android是java,已经不是linux,殊不知android就是靠着linux 才发展起来的,现在来说说有啥区别吧。嵌入式android源码架构:uboot+linux kernel+android(包含文件系统,虚拟机,转载 2014-02-28 09:45:33 · 14276 阅读 · 0 评论 -
android adb源码分析(5)
本篇以“adb devices"命令为例,跟踪代码的执行流程。(1) main()->(2)adb_commandline()->adb_commandline()中的相关源码: if(!strcmp(argv[0], "devices")) { char *tmp; char *listopt; if (argc < 2)原创 2016-08-02 18:39:15 · 4189 阅读 · 0 评论 -
android adb源码分析(4)
本篇分析transport.c。transport的原理是使用了fevent机制进行数据传输,atransport的定义如下:struct atransport{ atransport *next; atransport *prev; int (*read_from_remote)(apacket *p, atransport *t); int (*write_原创 2016-07-30 22:59:54 · 2330 阅读 · 0 评论 -
android adb源码分析(3)
本篇分析fdevent.c的源代码。这个源代码文件的工作时创建、监听和处理读写事件。static fdevent **fd_table = 0;static int fd_table_max = 0;fd_table保存的是以fdevent->fd为索引保存的fdevent指针,即the_fdevent的值等于fd_table[the_fdevent->fd]。static void fdev原创 2016-07-29 15:18:17 · 2506 阅读 · 0 评论 -
android adb源码分析(1)
ADB是Android debug bridge的缩写,它使用PC机可以通过USB或网络与android设备通讯。adb的源码位于system/core/adb目录下,先来看下编译脚本Android.mk:# Copyright 2005 The Android Open Source Project## Android.mk for adb#LOCAL_PATH:= $(call my原创 2016-07-28 21:31:38 · 15519 阅读 · 4 评论 -
android adb源码分析(2)
本篇分析usb_linux_client.c中的usb_init(),它的代码如下:void usb_init(){ if (access(USB_FFS_ADB_EP0, F_OK) == 0) { usb_ffs_init(); } else{ usb_adb_init(); }}调用usb_adb_ini原创 2016-07-28 22:22:58 · 3137 阅读 · 0 评论 -
android /system/vold源码分析(8)
DirectVolume::handleBlockEventint DirectVolume::handleBlockEvent(NetlinkEvent *evt) { const char *dp = evt->findParam("DEVPATH"); PathCollection::iterator it; for (it = mPaths->begin();原创 2016-06-14 22:15:13 · 1378 阅读 · 0 评论 -
android /system/vold源码分析(7)
process_config()分析:process_config函数用来解析/ fstab.xxx的配置文件.这个函数还初始化了VolumeManage和DirectVolume。有关VolumeManage的初始化基本是这个函数内进行,除此函数,VolumeManage的初始化工作做得很少。process_config()的代码如下:static int process_config(Volu原创 2016-06-13 22:55:19 · 1770 阅读 · 0 评论 -
android /system/vold源码分析(6)
接着分析CommandListener,FrameworkListener是它的直接父类。FrameworkListener类的代码:class FrameworkListener : public SocketListener {public: static const int CMD_ARGS_MAX = 26; /* 1 out of errorRate will be原创 2016-06-10 23:11:05 · 1361 阅读 · 0 评论 -
android /system/vold源码分析(5)
CommandListener继承关系:SocketListener ---> FrameworkListener ---> CommandListener对比NetlinkHandle的继承关系:SocketListener ---> NetlinkListener ---> NetlinkHandlernm->start()执行流程(1)nm->start() 即 NetlinkManager原创 2016-06-10 22:43:39 · 1809 阅读 · 0 评论 -
android /system/vold源码分析(4)
继续看后面的代码: /* Process the pending list, since it is owned by the thread, * there is no need to lock it */ while (!pendingList->empty()) { /* Pop the first item from原创 2016-06-10 22:35:41 · 1314 阅读 · 0 评论 -
android /system/vold源码分析(3)
NetlinkHandlerclass NetlinkHandler: public NetlinkListener {public: NetlinkHandler(int listenerSocket); virtual ~NetlinkHandler(); int start(void); int stop(void);protected: v原创 2016-06-10 14:29:55 · 1317 阅读 · 0 评论 -
android /system/vold源码分析(2)
NetlinkManager.cpp/hint NetlinkManager::start() { struct sockaddr_nl nladdr; int sz = 64 * 1024; int on = 1; memset(&nladdr, 0, sizeof(nladdr)); nladdr.nl_family = AF_NETLINK;原创 2016-06-10 11:41:30 · 1411 阅读 · 0 评论 -
android /system/vold源码分析(1)
void是类似linux中udev功能的程序,它管理着可热插拔设备的热插拔工作。main函数完成的VolumeManager, CommandListerer, NetlinkManager的初始化工作,并执行:vm->start()nm->start()cl->startListener()int main() {//下面定义了VOLD中三个重要的类 VolumeManager *vm原创 2016-06-10 10:51:31 · 1750 阅读 · 0 评论 -
android policy源码阅读(1)-policy,PolicyManager
接口源代码文件目录位于framework\base\core\java\com\android\internal\policy。 policy的实现代码位于frameworks/base/policy,生成的文件位于./out/target/product/beaglebone/system/framework/android.policy.jar。 PolicyManager主要用于创建W原创 2016-05-02 16:10:23 · 2749 阅读 · 0 评论 -
android传感器sensor
HAL层的头文件代码位于hardware\libhardware\include\hardware\sensors.h。 HAL层支持13种类型的传感器:/** * Sensor types */#define SENSOR_TYPE_ACCELEROMETER 1#define SENSOR_TYPE_MAGNETIC_FIELD 2#define SENS原创 2015-08-31 22:21:15 · 1969 阅读 · 0 评论 -
编写android HAL代码
很重要的一点,android代码是运行在linux应用层的,包括HAL层的代码。 HAL的三个结构体:hw_module_t, hw_module_methods_t, hw_device_t。 hardware\libhardware\include\hardware\Hardware.h:struct hw_module_t;struct hw_module_methods_t;原创 2015-08-31 21:56:39 · 1538 阅读 · 0 评论 -
android系统裁剪方法
android系统裁剪优化一直是各个厂商定制产品的关键步骤,包括浅层次的去除不必要的apk(android apk裁剪定制 )和深层次的裁剪整个编译系统和框架层. android作为开源系统,各个产品同质化严重,只有深层次的裁剪定制自己的系统,才能充分体现各自产品的特性,也是优化各自产品的关键步骤,此篇文章主要关注编译系统和框架层的裁剪,抛砖引玉, 还有很多地方可以改进的地方,基于工作中时间限...转载 2018-03-16 11:56:12 · 2750 阅读 · 0 评论