- 博客(20)
- 资源 (6)
- 收藏
- 关注
原创 ARM linux的中断处理过程
一、前言本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:1、第二章描述了中断处理的准备过程2、第三章描述了当发生中的时候,ARM硬件的行为3、第四章描述了ARM的中断进入过程4、第五章描述了ARM的中断退出过程本文涉及的代码来自3.14内核。另外,本文注意描述ARM指令集的内容,有些source co
2015-01-30 17:19:28 2131
原创 Linux中的地址空间
有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。至于程序执
2015-01-30 17:13:49 793
转载 Linux内核地址空间分布和进程地址空间
内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访
2015-01-30 16:56:17 1651
转载 kmap的实现分析与实验
kmap/unkmap系统调用是用来映射高端物理内存页到内核地址空间的api函数,他们分配的内核虚拟地址范围属于[PKMAP_BASE,PAGE_OFFSET]即[0xbfe00000,0xc0000000]范围,大小是2M的虚拟空间,为了映射该块虚拟地址,所使用的二级页表的大小刚好是一个物理page的总计是两个pte table(4KB)kmap的调用流程分析:arch/arm/
2015-01-30 16:47:04 1633
转载 linux arm的存储分布
linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览,我们按从低地址到高地址的顺序逐个描述,每项的描述包括如下的内容的组和:地址范围大小,虚拟转物理的接口函数,各个区域对应的分配函数,该区域有什么作用,使用场合等等。首先开始第一个区域:CPUvector page null pointer trap该区域的大小是一个
2015-01-30 16:43:12 1086
转载 linux arm mmu基础
ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为16KB,而在第一级页表中的每个entry的最低2bi
2015-01-30 16:39:47 888
转载 Android4.0.3 显示系统深入理解
1. 简介 网上已经有很多兄弟对Android的显示系统做了深入解剖,很是佩服。可最近小弟在研究Android4.0时发现出入比较大,也许是Android4.0的修改比较多吧!因为小弟没有看Android4.0以前的代码。 面对这么复杂一个Android显示系统,如何入手呢? 根据以前的经验,不管它有多么复杂,其功能不就是以下三步曲吗?
2015-01-29 13:47:42 2055
转载 android surfaceflinger研究
这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后当这块内容忘记的时候,能快速的通过这个记录捡起来。 一. android显示系统的建立 我们看Surfa
2015-01-29 13:44:56 3266
转载 Android 4.4 Graphic系统详解(4)HWUI概述
1 概述Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑。实质上就是Android3.0以前,几乎所有的图形绘制都是由Skia完成,Skia是一个向量绘图库,使用CPU来进行运算;所以从Android3.0 开始,Google用hwui取代了Skia,准确的说,是推荐取代,因为Opengl的支持不完全,有少
2015-01-28 17:48:00 14896
转载 Android 4.4 Graphic系统详解(3) 一个view的绘制之旅
本章从Graphic的角度来分析Android系统中一个基础的view是如何被绘制出来的(只讨论硬件加速打开的场景):下面我们以TextView这个类的onDraw函数为例看下,这个类是很多view的父类。[cpp] view plaincopyprotected void onDraw(Canvas canvas) {
2015-01-28 17:46:42 4709
转载 Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史
2015-01-28 17:41:47 20381 6
转载 Android 4.4 Graphic系统详解(1) SurfaceFlinger的启动过程
init启动SurfaceFlingerSurfaceFlinger目前的启动方式是做为init进程中的一个Service来启动。在init中添加如下配置代码:[cpp] view plaincopy# Set this property so surfaceflinger is not started by system_init setprop system_init.sta
2015-01-28 17:36:52 9754 1
转载 Android 4.4 Graphic Architecture
Graphic Architecture本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/devices/graphics/architecture.html大量文字以及术语的理解基于自身的理解,可能并不准确。文中有部分英文原文我也不能准确理解,对于这种语句,我在翻译的语句后加了(?)符号。This documen
2015-01-28 17:32:27 7170 3
转载 Android 如何使用GPU硬件加速
1.名词解释GPU:Graphic Processing Unit (图形处理器)OpenGL:Open Graphic Library 定义了一个跨编程语言、跨平台的编程接口的规格,不同厂商会有不同的实现方法,它主要用于三维图象(二维的亦可)绘制。SurfaceFlinger:Android中负责Surface之间叠加、混合操作的动态库Skia:Android中的
2015-01-28 17:31:27 6045
转载 Android Audio System
之一:AudioTrack如何与AudioFlinger交换音频数据引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前An
2015-01-06 09:59:41 1337
转载 Android音频系统之AudioPolicyService
1.1 AudioPolicy Service在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性,而且为各个模块独立扩展功能提供了保障。1.1.1 AudioPolicyService概述汉语中有很多与策略有关联的俗语,比如“因地制宜”、“具体问题具体分析”;战争中
2015-01-06 09:48:48 1109
转载 Android音频系统之AudioTrack
1.1 AudioTrack1.1.1 AudioTrack应用实例对于Android应用开发人员来讲,音频回放最熟悉的莫过于MediaPlayer,而AudioTrack相信用的人相对会少很多。这是因为MediaPlayer提供了更完整的封装和状态控制,使得我们用很少的代码就可以实现一个简单的音乐播放器。而相比MediaPlayer,AudioTrack更为精练、高效,实际上MediaPlaye
2015-01-06 09:42:31 2439
转载 Android音频系统之AudioFlinger
1.1 AudioFlinger在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点。作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上(为上层提供访问接口)启下(通过HAL来管理音频设备)的作用。只有理解了AudioFlinger,才能以此为基础更好地深入到其它模块,因而我们把它放在前面进行分析。 1.1.1
2015-01-06 08:54:20 11384 1
转载 audio_policy.conf文件分析
不同的Android产品在音频的设计上通常是存在差异的,而这些差异可以同过Audio的配置文件audio_policy.conf来获得。在Android系统中音频配置文件存放路径有两处,存放地址可以从AudioPolicyManagerBase.cpp文件中知道: #define AUDIO_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_pol
2015-01-05 18:21:31 8666
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人