魅族内核团队

一个有内涵的技术分享平台

Linux Signal

信号的基本使用场景:使用 ctrl+c 中止一个程序,或者使用 kill pid 命令杀掉一个进程。Linux 信号机制基本上每个同学都用过,但是信号的具体实现机制还是有很多人不清楚的。在很多人的概念中信号是一种异步机制,像中断一样。但是除了硬中断,信号也是由中断实现的吗?如果不是中断,系统又怎么样来利用软件机制模拟类似如异步中断的动作? 本文的代码分析基于 Linux Kernel 3.......

剖析 Android M 锁屏密码存储方式

Android M 之前锁屏密码的存储在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 SQLite 数据库 /data/system/locksettings.db 中。密码在存储的时候,会将输入的密码加上此随机数组成新的字符串。然后对新的字符串分别进行 SHA-1 和 MD5 加密,将加密后的密文通过 MD5 +......

球面拟合算法

引言在传感器数据融合以及工业测量中,常常需要对已知的数据或者是已知的结构的特征参数进行检测,来评估数据的信噪比或者结构的质量是否符合产品的需求。一般的,可以通过记录大量数据或者通过结构的离散点,来反解出它的特征参数。以球面为例,这些特征参数可以是球的半径,或者是球心等。对于球体拟合算法,通常有代数拟合和几何拟合。在本例中,以一般的代数拟合方法为主进行介绍。 原理分析以下图的数据为例,我们可以......

相机系统综述 —— ISP

ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号。它在相机系统中占有核心主导的地位,是构成相机的重要设备。 主要内部构成如下图所示,ISP 内部包含 CPU、SUP IP、IF 等设备,事实上,可以认为 ISP 是一个 SOC,可以运行各种算法程序,实时处理图像信号。 CPU CPU 即中央处理器,可以运行 AF、LSC 等各种......

CPUIDLE 之低功耗定时器

在 Linux 操作系统中,Idle 进程(又叫 Swapper 进程)的 pid 号是 0,是所有进程的祖先,它是在 Linux 初始化阶段从无到有创建的一个内核线程。stark_kernel() 函数初始化内核需要的所有数据结构,激活中断,创建另一个叫进程 1 的内核线程(init 进程)。新创建内核线程的 PID 为 1,并与进程 0 共享进程所有的内核数据结构。创建 init 进程后......

zram 简介

zram 技术的由来zramzram_tech(也称为 zRAM,先前称为 compcache)是 Linux 内核的一项功能,可提供虚拟内存压缩。zram 通过在 RAM 内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能。由于 zram 可以用内存替代硬盘为系统提供交换空间的功能,zram 可以在需要交换 / 分页时让 Linux 更好利用 RAM ......

Android Sensor Framework 概览

1. OverviewAndroid Sensor Framework 的整体架构如图 1 所示: Android Sensor Framework 可以分为 3 大部分,各个部分的主要功能如下: SDK 这一部分主要功能是为 Application 提供 Java API 接口,以便 Application 可以开启所需的 Sensor 并获取数据。 Framework 这一......

SLAB 分配器和 kmalloc

为什么要有 SLAB一般来说,一个新东西的产生总是为了解决某一个现有的问题的。那么,slab 是为了解决什么问题呢?我们知道,在 Linux 内核中的内存管理是使用伙伴系统 (Buddy System),但是这个系统有一个问题就是,它的最小单位是页,即 PAGE_SIZE ,在 x86 架构中这个常数一般是 4k 。但是很多情况下我们要分配的单元大小是远远小于 4k 的,如果使用伙伴系统的话......

Android 5.1 上的 MTK GPS

本文主要介绍手机上几种常见的定位技术,以及 Android 5.1 上的 MTK GPS。 几种常见的定位技术介绍纯 GPS 定位数据直接来源于卫星,即搜星,然后下载卫星数据。通过卫星的位置(从卫星上接收),卫星到接收机的距离来测算接收机的位置 在无辅助信息的条件下用 GPS 定位,需捕获到至少四颗卫星(因为卫星和接收机都有时间差,4 个未知数需 4 个方程才能解) 蜂窝基站 / WIFI定......

WrapFS 简介

初识 WrapFSWrapFS 是一种堆栈式文件系统,堆栈式文件系统的一个基本功能就是把操作和参数转换成底层文件系统的操作和参数。这就意味着我们会在 WrapFS 层上创建一个文件对象后会在底层文件对应着创建一个对象,要说明的是,WrapFS 层的这个文件对象只保存在内存里面,断电后会消失,真正文件里面的数据保存在底层文件系统里面。 WrapFS 的意义从 WrapFS 的发明者有这样的回......