Android 从上层到底层-----kernel层】的更多相关文章

CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 1.在dts文件中增加 led 设备 path:kernel/arch/arm/boot/dts/firefly-rk3288.dts firefly-led{ //匹配内容 compatible = "firefly,led"; //led引脚及有效电平 led-work = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW&g…
CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 MainActivity.java package com.aaron.led; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.wid…
CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 led_jni.h path:hardware/rockchip/firefly/led_jni/led_jni.cpp #include "jni.h" #include <hardware/led_hal.h> #define LOG_TAG "led_jni" #include <utils/Log.h> #…
CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 led_hal.c path:hardware/rockchip/firefly/led_hal/led_hal.c #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h&g…
参考: https://blog.csdn.net/liuhangtiant/article/details/85149369 http://blog.sina.com.cn/s/blog_7943319e0101a5ds.html 前言 已经对系统调用比较熟悉了,但是没有脚踏实地地跟过系统调用,如何实现上层到底层具体是如何调用的. 所以,本文会以chmod系统调用函数为例,对此进行分析.平台:SDM630,Android Q 上层(daemon)系统调用的执行路径 我们假如编译出一个可执行文件…
近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬件方面的各项参数不被外泄,而一个设备的驱动程序包含了硬件的一些重要参数,所以驱动的开源势必会使硬件厂商蒙受损失,Google为了保护硬件厂商的利益,所以在Android系统中加入了HAL层,在HAL层中不必遵循GPL协议,所以代码可以封闭. 所以如果硬件驱动开源的写在Kernel里,Framewor…
本文转载自:http://blog.csdn.net/jscese/article/details/42291149 之前的四篇博文记录的都是linux中的input体系相关的东西,最底层以我调试的usb触摸屏的设备驱动为例,贴出链接: Linux/Android——usb触摸屏驱动 - usbtouchscreen (一) Linux/Android——输入子系统input_event传递 (二) Linux/Android——input子系统核心 (三) Linux/Android——inp…
http://blog.chinaunix.net/uid-26215986-id-3552456.html 原文地址:Android Camera 通过V4L2与kernel driver的完整交互过程 作者:xinyuwuxian Android Camera 通过V4L2与kernel driver的完整交互过程 之前在 Android Camera 的执行流程 http://blog.chinaunix.net/uid-26765074-id-3499537.html 这篇文章中已经详细…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 看本篇文章之前,建议先查看: Android源码剖析之Framework层基础版 前面讲了framework的整体层次和基础定义与服务,接下来我们讲讲窗口的创建,底层与应用层界面的交互和管理. 一.窗口的创建 上一篇我们讲了三种窗口的类型,本篇接着讲窗口的创建过程,拿Activity创建窗口为例 最终声明一个新的 ViewRootImpl来承载新的View, 执行setView方法,将给mPane…
本文转载自:https://blog.csdn.net/myfriend0/article/details/80016739 创建Android守护进程(底层服务) 前言 Android底层服务,即运行在 linux 下的进程,是 Android 系统运行的基础,完成 Android 或者说计算机最基本的功能.比如连接服务(包括 WIFI,BT 等等):比如 Android 的 adb 功能:比如存储监控等等.没有这些底层服务,上层也就没有了对应的功能. Android 底层服务往往是常驻内存,…
Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6内核层,核心库层,应用框架层,应用层.我今天重点介绍一下应用框架层Framework,其实也是我自己的学习心得. Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求.写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等.这些都是framework提供给我们…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 既然写到后记篇,就代表本系列到此为止,暂时告一段落:其他一些Manager随后有时间再补,就像源码的一些翻译一样,有时间总会补上的,同时也希望大家一如既往的喜欢,直言不讳的提出宝贵意见. 后记将讲述输入模块和编译系统内容,以及对整个系统的总结. 一言不合就来图,且看下图,有关硬件消息传递-以下是消息在硬件中处理后如何传递到Window层的过程 硬件的消息,由触屏和按键触发,通过驱动处理,形成Up.…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 前面讲过Wms.Ams与Activity的一系列交互,包括创建过程.消息传递.窗口展示等,紧接上篇介绍最终的实现者-窗口和View,上篇对窗口已经有了比较多的介绍,本篇我们再对View再更深一步的了解. 首先明确下View的功能,主要用来展示画布即交互的图片背景等,而且承接各种手势动作消息,以及这两者之间的一系列内容:其他的属于窗口的概念:也可以说内容展示除了窗口就是View. 消息分发指:1.将…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 关于Framework,就是应用层底下的控制层,离应用层最近,总想找个机会,写写WindowMangerService和ActivityManagerService(注意非控件,而是指一类服务)以及其他一些东西,对底层做一个更为全面的认识.而很早以前,写过一篇文章,来简述Android系统-" Android高级之系统介绍",同样今天我们在讲Framework层时也会再对系统做一个回顾:…
1.Service Manager的Java代理对象 在Java层中,Service Manager的代理对象类型为ServiceManagerProxy.它继承并且实现了IServiceManager接口,其中四个成员函数和一个变量如下: getService.checkService:获取Java服务代理对象 addService:注册Java服务 listService:获取已经注册的java服务表mRemote:类型为Ibinder,指向了一个BinderProxy对象.这个对象用来描述…
Binder底层是基于C实现的,因此可以作为Native进程与App层交互数据的渠道.其应用场景为:Native Service.Hal驱动设置.应用层JNI服务等. Android 4.4引入SEAndroid/SELinux 安全机制,至Android 5.0以后,Android完全采用此安全机制,对应用访问和操作文件权限进行限制,采用管道.共享内存.LocalSocket等方式进行跨进程交互面临着文件访问权限问题,若非修改固件源码的sepolicy文件(AOSP给定路径为/device/m…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 上一篇我们主要讲了Ams,篇幅有限,本篇再讲讲Wms,即WindowManagerService,管理窗口的服务.主要负责窗口的创建.删除.状态等与手机交互的事情,与Ams配合使用,在SystemServer中创建,用来保持窗口层级关系方便SurfaceFlinger绘制屏幕,和传递窗口信息给InputManager调用InputDispatcher将输入消息派发到顶层窗口. Activity.V…
上文已经对boot.img其中组成部分之一ramdisk.img做了分析,boot.img另外一个重要的组成部分就是kernel了, 这里所说的kernel,可以只理解为位于out/target/product/tcc8800/中的kernel文件,本文主要分析kernel的拷贝 过程以及如何被打包到boot.img中.经过分析得知位于out/target/product/tcc8800/中的kernel文件其实就是内核 编译后的Image文件,位于kernel/arch/arm/boot目录下…
1. JNI 注册 1.1. JNI的基础结构       JAVA == JNI == Native Code      JNI(Java Native Interface)是Java与Native Code(C/C++/...)代码交互的中介,Java+JNI构成主程序, JNI+Native Code以动态库的形式供程序调用.      JNI的实现可涉及两个关键类:JNIEnv和JavaVM.两者都可以理解为函数表(Function Pointer Table), 前者是使用Java程序…
转载请标明出处:  http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 android正常模式启动流程 主要流程例如以下: 1.系统加电.运行bootloader,bootloader会将内核载入到内存中. 2.内核载入到内存之后首先进入内核引导阶段,最后调用start_kernel进入内核启动.start_kernel终于会启动init程序 3.init程序负责解析init.rc…
本文转载自:https://blog.csdn.net/edw200/article/details/52192631 本人是从事Linux嵌入式开发的,安卓wifi控制在安卓JAVA层已经做得非常成熟了,但我需要写一个控制wifi的程序,需要写一堆JAVA,我本是就不懂JAVA,所以决定跳过JAVA框架和应用层,直接从C框架层入手. 1.Android WIFI框架 WIFI的基本架构 : 1.wifi用户空间的程序和库: external/wpa_supplicant/ 生成库libwpac…
原文 MVP for Android:How to organize presentation layer http://antonioleiva.com/mvp-android/ 译文 MVP(Model-View-Presenter)模式是著名的MVC(Model-View-Controller)模式的衍生.这段时间,MVP在Android应用开发上得到重视.越来越多的人讨论它,可是可靠的和结构化的信息仍然非常少.这就是为什么我想利用这个博客鼓舞这样的讨论,而且把我们所知 以最好的方式应用到…
Libevent提供了一些API用来进行DNS域名解析,并且提供了实现简单DNS服务器的能力. 本章首先描述域名解析的上层功能,然后介绍底层功能及服务器功能. 注意:Libevent的当前DNS客户端实现有一些限制,它不支持TCP查询,DNSSsec或者任意记录类型.将来的Libevent版本中可能会修复这些问题. 前言:可移植的阻塞型域名解析 为了帮助移植那些已经使用阻塞域名解析的应用程序,Libevent提供了一个标准getaddrinfo接口的可移植实现.这对于需要运行在某些特殊平台上的应…
1 添加ndk对log支持若需要添加ndk对log的支持,只需要通过以下2步即可实现. 1.1 修改Android.mk如生成的库文件是“.so文件”,则在Android.mk中添加如下内容:LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog如生成的库文件是“.a文件”,则在Android.mk中添加如下内容:LOCAL_LDLIBS:=-llog 1.2 在.c或.cpp文件中引用log头文件添加如下内容:// 引入log头文件#include  <android…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 讲到实战,就不得不拿两个例子来说明,本篇想拿的是应用最广泛的两个:Ams和Wms,一个管理activity,一个管理窗口,而前面我们已经讲了不少,本篇不再赘述. 关于Ams对activity的管理,无非这几个方面:启动哪个activity.物理按键对activity处理.内存骤减时activity的回收规则,以及暂停activity的一系列操作. 先说如何启动activity?有哪些知识点. Am…
Android源码修改,编译后得到system.img 替换\AndroidSDK\system-images\android-21\android-tv\armeabi-v7a\目录中的system.img android-21\android-tv\armeabi-v7a\ 依据使用的android API版本 硬件架构…
当目录路径从n层按back键退回到n-19层的时候,file manager自己主动退出,比方在63层按back 键退回到44层的时候,file manager自己主动退出.   1.FileManager默认设计, FileManager种仅仅记录最多20条操作路径的记录, 假设超出就会把最早增加的记录删除. 贵司能够參考alps/mediatek/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoManager.ja…
一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*FindClass)(JNIEnv*, const char*); jclass dpclazz = (*env)->FindClass(env, "com/renhui/sffmpegandroidstreamer/MainActivity"); if(dpclazz==0) { LOGI…
boot.img(kernel.img+ramdisk.img) ramdisk.img(/) system.img(/system) userdata.img(/data) cache.img(/cache) recovery.img(kernel.img+ramdisk-recovery.img) ramdisk-recovery.img(/)…
U-Boot与Linux内核的交互 说明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440. 目录 一.简介 1.1标记列表二.设置标记存放的地址 2.1相关的结构体定义 2.2标记存放地址的设定三.标记的设置 3.1设置标记ATAG_CORE 3.2设置内存标记ATAG_MEM 3.3设置命令行标记ATAG_CMDLINE 3.4设置ATAG_NONE 一.简介 U-Boot与Linux内核的交互是单向的,U-Boot将各类参数传递给内核.由于他们不能同时运行,传递办法只能有一…