自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux 中断异常分析

语言描述: 深入理解LINUX内核中,关于X86系列的描述: 异常是同步中断,中断时异步中断;都用中断向量表表示; 中断向量表 中断描述符0 中断描述符1 ...... 中断描述符255 其中,中断描述符为中断门描述符、任务门描述符、陷阱们描述符之一;每个描述符都包含特权等级,段地址,处理程序偏移地址; 接着分析我们的ARM: Q:ARM为什么能支持如此

2016-05-07 12:23:48 254

原创 Linux kernel 内存子系统

理论概述: 内核把物理页作为内存管理的基本单位;使用struct page结构来描述当前机器上的每一个物理页;比如内核支持4KB的页大小,机器上有1GB物理内存,那么意味着会有262144个struct page; 内核把物理页划分为不同的区;同一区内的内存具有相似的特征;一般会有ZONE_DMA/ZONE_NORMAL/ZONE_HIGHEM;比如X86上会有三个区来划分物理内存;但ARM就没

2016-05-05 22:58:40 302

原创 Android Graphic SurfaceFlinger分析

概述 SurfaceFlinger主要功能是先合成,然后显示;合成是重点; 流程 当VSYNC到来后,SurfaceFlinger收集所有Client‘画好’的Layers,然后调用hwcomposer.prepare去检测那些个Layer可使用hwcomposer合成;不能被hwc合成的,使用opengles合成,具体合成是通过一个for循环,遍历所有不能被hwc合成并且能在当前Displa

2016-05-05 16:49:32 430

原创 Android Graphic SurfaceFlinger 疑难解答

参考代码:android4.4.2 aosp 名称约定: SF : SurfaceFlinger BQ : BufferQueueQ:SF如何同步所有Client的合成、设置等需求? A:mStateLock、SF中的mCurrentStates/mDrawingStates、Layer中的mCurrentStates/mDrawingStates; mCurrentState

2016-05-03 21:24:54 355

原创 Linux Graphics Binder分析

首先明确在Android中,binder由4部分组成: binder client binder service binder servicemanager binder driver 其中,前三个在用户空间,binder driver在内核空间; 先分析binder servicemanager,顾名思义,它是服务管理者; frameworks/native/cmds/servic

2016-04-28 11:01:39 120

原创 Linux内核我个人理解

linux驱动水深,容易迷路;时常想想,内核运行起来后剩下什么? 在分析驱动时,总是是不是在想,驱动当一些初始化完后,剩下什么? 内核中什么是重要的? 中断:它是内核能够及时响应外界事件的关键; 一堆线程:它是内核工作的核心,可以说,内核中就是这么一堆线程在不断的循环; 驱动:它的作用就是当内核中的线程在需要的时候能够操作对应硬件设备的结构;打个不确切的比方,内核就是一块板子,驱动就

2016-04-25 18:46:42 94

原创 欢迎使用CSDN-markdown编辑器

Android Graphics 分析之Vsync机制 先对几个重点结构进行描述 -SurfaceFlinger::mPrimaryDispSync 它会生成一个thread,并等待某个消息; -EventThread::EventThread 它也会创建一个thread,并等候消息; 整体描述 Vsync在SurfaceFlinger::init()的后半段开始进行初始化,几个

2016-04-22 19:02:54 120

Android Graphics 分析 Vsync信号

android版本:android4.4.2 aosp 相关变量及结构: SurfaceFlinger::mPrimaryDispSync这个变量在SF初始化过程中,在其构造函数中创建了一个线程,启动阶段会首先休眠等待,具体一会分析;

2016-04-22 13:54:37 110

原创 linux graphics driver分析

硬件平台:rk3288 开发板:firefly-rk3288 软件版本:android4.4+linux3.10.37 VGA: 通过SDA7123芯片转换而来,数据源来自lcdc0控制器,挂载在i2c4控制器上; HDMI: 内置导出,数据源来自lcdc0控制器,挂载在i2c5控制器上; 疑问:VGA是如何知道自己所支持的分辨率大小呢?是VGA芯片自身还是显示器得来的?

2016-04-21 22:05:22 475

原创 Android Graphics 分析 关于应用程序、opengles、bufferqueue

前提介绍 由于厂家提供的opengl/egl库不开源,所以我们参考了android自带的libGLES_android.so的源码实现; frameworks/native/opengl/libagl 参考程序为bootanimation; android版本为4.4.2 aosp版本; 分析过程: 出队列: 本以为是eglCreateWindowSurface时会去调用

2016-04-21 17:57:09 711

原创 Android Graphics 分析 创建Surface函数调用流程

基于Android4.4.2 aosp源码 初始化流程: SurfaceComposerClient::createSurface Client::createSurface SurfaceFlinger::createLayer SurfaceFlinger::createNormalLayer Layer::Layer Layer::onFirstRef { Buffer

2016-04-21 14:13:12 567

原创 SurfaceFlinger的分析理解,基于android4.4.2 aosp源码

整体描述: 每一个应用程序,对应SF中的一个Client对象; 每一个应用程序的Surface,对应SF中对应Client对象中的一个Layer对象; 应用程序在Surface上借助skia或者opengles去绘制图形,绘制的结果通过调用eglSwapBuffer()从而进入对应Layer对象监控的BufferQueue中;这个过程底层涉及的过程为: 从Layer控制的BufferQue

2016-04-20 15:12:53 190

原创 linux irq部分简介

今天在rockchip的rk3066平台上的声卡驱动中想加一个中断用来进行耳机插拔检测,在使用request_irq()时,在flags中设置为上下边沿触发,结果竟然返回失败,大体检查了一下代码,发现问题出在平台相关代码的GPIO IRQ中,主要是代码不支持同时设置上下边沿触发,只能设置为上边沿或者下边沿触发模式。由于我们freescale iMX6平台没有这个问题,而且也能正确的触发,所以我回来

2015-08-27 21:16:53 989

原创 linux驱动开发理解

所有的Linux驱动都是一个模型:         内核提供一个设备结构体,里边包括设备的各种属性状态及设备的操作方法;         驱动开发要做的就是向kernel申请该设备结构体,填充设备结构体的属性状态,实现设备的操作方法;然后注册进kernel;然后,设备就处于一种可用状态;         设备结构体的属性状态是在修改硬件后更新的;操作方法是不变的;          ua

2013-05-15 22:29:46 391

原创 驱动开发中相关硬件FAQ

1:时序图中的setup time  和 hold time是什么意思? 2:时序图中的上升沿和下降沿都起什么作用?

2012-07-27 10:25:48 115

原创 linux命令学习笔记

command [-option] param1 param2 ...... 格式就是这样;牢记!鸟哥的那本还真不错

2012-07-27 09:34:17 166

电子工程师必看!!

全看懂了 那就牛逼啦! 名字:电子工程师必会20模拟电路

2011-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除