- 博客(20)
- 资源 (6)
- 收藏
- 关注
转载 linux 驱动之LCD驱动(有framebuffer)
<简介> LCD驱动里有个很重要的概念叫帧缓冲(framebuffer),它是Linux系统为显示设备提供的一个接口,应用程序在图形模式允许对显示缓冲区进行读写操作。用户根本不用关心物理显示缓冲区的具体位置及存放方式,因为这些都由缓冲区设备驱动完成了。启动开发板后执行ls /dev/fb* 命令可以看到,帧缓冲设备的主设备号为29,对应/dev/fbn设备文件,一般为/dev/fb0在弄清楚LCD驱动架构之前,我们先弄清楚几个重要的结构体,为了减短篇幅,有一些不是很重要...
2020-05-19 18:49:48 647
原创 Android SurfaceFlinger服务(八) ----- 图像的输出
SurfaceFlinger合成后就进行图像的输出的工作。在图像输出时,存在硬件合成器与不存在的情况有些差别。软件合成时用到图像缓冲区生产者与消费者模型。首先来看看图像缓冲区的初始化。void SurfaceFlinger::init() { ALOGI( "SurfaceFlinger's main thread ready to run. " "Init...
2020-04-25 14:38:24 567
原创 Android SurfaceFlinger服务(七) ----- 图像的合成
android应用中申请的Surface在SurfaceFlinger服务中都有对应有图层Layer与之对应。将这些图层合并且输出到显示外设是SurfaceFlinger的工作重点。本文来分析下合成的过程。合成工作在接收到VSync消息(MessageQueue::REFRESH)后开始。void SurfaceFlinger::onMessageReceived(int32_t what)...
2020-04-25 14:35:14 1104
原创 Android SurfaceFlinger服务(六) ----- VSync信号的分发
HWComposer模块产生VSync信号后要经过分发才能送达到关心VSync事件的模块中去。VSync信号分发大致流程为HWComposer->SurfaceFlinger->DispSync->DispSyncSource->各个具体模块。下面具体分析下这个流程。在上一篇文章中分析到硬件或者软件VSync信号产生时,会回调SurfaceFlinger的onVSync...
2020-04-25 14:32:46 354
原创 Android SurfaceFlinger服务(五) ----- VSync信号的产生
Android为了增强界面流畅度引入了VSync机制。VSync信号一般由硬件产生,为了兼容一些老的机器,也可以软件产生。因些,就可以分为硬件VSync和软件VSync。VSync的生成逻辑主要在HWComposer里面。相关文件如下:frameworks/native/services/surfaceflinger/DisplayHardware/HWComposer.cpp framew...
2020-04-25 14:28:30 468
原创 Android SurfaceFlinger服务(四) ----- 消息机制MessageQueue
SurfaceFlinger有着自己的消息队列MessageQueue,用来处理显示相关的消息,比如Vsync消息。相关文件:frameworks/native/services/surfaceflinger/MessageQueue.h frameworks/native/services/surfaceflinger/MessageQueue.cpp类MessageQueue和Ha...
2020-04-25 14:26:11 484
原创 Android SurfaceFlinger服务(三) ----- 本地图层Layer创建
在上一篇文章中,主要分析了Surface的创建过程,对于Layer图层的创建并没有深入跟踪分析。这篇文章将分析Layer图层的创建,并分析handle gbp这两个变量的来源。在SurfaceFlinger中会根据flags的值创建不同的layer。这里主要以创建普通layer为例进行分析。status_t SurfaceFlinger::createNormalLayer(const ...
2020-04-25 14:22:26 679
原创 Android SurfaceFlinger服务(二) ----- 本地Surface创建
Android显示系统层次分析应用层,app从WindowManager服务获取图层,渲染图层 WindowManager管理层,主要管理APP渲染的图层,调用SurfaceFlinger服务, 创建Surface,并将Surface传递给应用 SurfaceFlinger层,对上层负责Surface的创建,对下层管理各个显示设备, 以及将Surface合成合显示到显示设备上 显示驱动层...
2020-04-25 14:19:19 387
原创 Android SurfaceFlinger服务(一) ----- BufferQueue分析
生产者和消费者模型是编程中运用比较广泛的模型。在SurfaceFlinger图像绘制、合成、显示也用到了该模型。利用该模型合理的管理图像缓冲区buffer。让整个android系统从绘制到显示的过程有条不紊的进行。BufferQueue图像缓冲管理者。其成员函数createBufferQueue创建一个缓冲区队列。void BufferQueue::createBufferQueue(s...
2020-04-25 14:12:33 863
原创 Android AAPT详解
AAPT是什么AAPT - Android Asset Packaging Tool,看全称,就可知道AAPT是Android资源打包工具。在讲这个之前,是有必要简单说下Android是如何构建一个APK的。上图是Google官方发布的一张非常经典的Apk打包流程图。流程概述:工程的资源文件(res文件夹下的文件),通过AAPT打包成R.java类(资源索引表),...
2020-01-20 11:06:12 1531
原创 Nexus6P 刷机 root
刷机1.配置ADB环境变量点此链接下载platform-tools,最新的windows版本名称为platform-tools-latest-windows.zip,然后解压(本人解压到download目录下),配置环境变量。2.安装手机驱动一般USB链接上手机,电脑会自动下载并安装上驱动。3.在设置开发者选项中打开oem选项4.解锁BootLoader手机关机,长按...
2020-01-09 09:38:13 1849
原创 使用SurfaceView绘制复杂效果
效果如下风扇动画粒子动画1.动画分析:根据复杂动画分解成简单的动画上面的两个动画可以分解成最外层扩展动画以及里面六边形动画最外层动画分解:一个六边形从中心出发到外边,然后到另一个角,然后收回。里面的动画可以遮挡外边的六边形,最里面的六边形路径动画被里面六边形黑色背景遮挡。中心六边形动画:可以分成4层,最下层为六边形半透明背景,第二层为风扇或...
2019-11-13 17:34:53 353
原创 Windows 中 使用python 一键下载android s代码
为了在window方便看代码,所以下载google原生android q代码,写了一段python脚本方便下载1. 安装GITgit官网下载:https://git-scm.com/downloads/安装git到如下路径C:/Program Files/Git2. 安装PYTHONpython官网下载:https://www.python.org/downloads/...
2019-11-05 09:40:15 305
原创 两圆的外切线与内切线的切点算法
最近想画两球水滴效果所有在网上找两圆外切点和内切点的算法,找了很久没有找到所以自己写了一个工具类来计算两圆的公切线点。具体效果如下图:根据CircleUtils类的getCircleTangentPointOut方法返回外切点坐标[r1p1, r1p2, r2p1, r2p2],依次为左边圆的两个切点坐标和右边两个切点坐标。根据CircleUtils类的getCircleTangent...
2019-10-26 15:09:33 7132 1
原创 ESP8266
开发环境地址https://pan.baidu.com/s/1dD8kEYX乐鑫芯片论坛网站https://bbs.espressif.com/安信集成商可论坛https://www.ai-thinker.com/https://github.com/espressif/ESP8266_RTOS_SDKhttps://github.com/espressif/ESP8266_NONOS_SDKht...
2018-05-14 23:41:17 1114
原创 驱动模型 从底层驱动到HAL到JNI到app到云端服务器
app通过二维码开关扫描请求云服务器对蜂鸣器的开或关 概述:arm端建立服务与云端连接等待云服务器的命令,手机扫描二维码通过二维码里面的设备号和开或者关信息发送到云端服务器,云端服务器根据设备号找到对应的arm端发送相应的开或关命令,从而实现手机APP云端控制1.硬件原理图 蜂鸣器连接(GPD0_1)管脚2.芯片手册蜂鸣器的控制地址为 int id = 0xe02000a0;配置为...
2018-05-14 23:35:47 301
原创 JNI调用串口
SerialTool.c#include <termios.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>#include <jni.h>#include &q
2018-05-14 23:33:11 482
转载 如何写RenderScript应用
简介 RenderScript本质是封装了Native OpenGL2.0接口,使界面渲染不需要通过Android虚拟机,从而达到近似Native OpenGL的渲染效率。除此之外,RenderScript名为“Script”,是一种脚本语言。这表明了它比Native OpenGL拥有更好的可移植性,能在不同处理器和GPU上运行。为了做到这一点,其实是有一个叫做Low LevelVirtual
2018-01-31 11:31:39 566
转载 RenderScript(google API)
RenderScriptRenderScript是一个基类。这个类的一个对象创建本地工作线程,用于处理来自这些对象的命令。该基类不提供任何,提供简单数据处理能力类的扩展。对于扩展功能使用派生类如RenderScriptGLElement RenderScript最基本的数据类型。一个元素代表一个内存分配的一个单元格。元素是Renderscript的
2018-01-31 11:20:32 295
dagger-compiler-2.15.jar 等关于dagger2的jar包
2018-04-10
gcc 4.6.4 依赖以及安装说明打包
2018-03-28
阿里巴巴 编程规范 android java
2018-03-14
mod_wsgi.so
2017-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人