• Android HAL 层原理分析

    Android HAL 简介 Android 系统硬件抽象层(Hardware Abstract Layer)运行在用户空间中,它向下屏蔽了硬件驱动的实现细节,向上提供了硬件访问的服务。通过 HAL 层,Android 系统分为两层来支持硬件设备,其中一层实现在用户空间,另外一层实现在内核空间中,它在 Android 系统框架中的位置如下图所示。传统的 Linux 系统则把对硬件的支持和管理全部放在内核空间中,即把对硬件的全部支持都放在硬件驱动模块当中。 为什么要添加一个 HAL 层? Android 在用户空间中新建一个的 HAL...


  • Android NDK vs AOSP Build System

    前言 最近自己一直在做有关 Android 系统源码底层的开发,就经常接触到 Android NDK 和 AOSP(Android Open Source Project) Build System 这两个东西,但是由于他们两者都可以将 C/C++ 代码编译成可执行文件或者动态链接库,导致我经常将这两者弄混淆了。所以,痛定思痛,不想再被这种似四而非的感觉折磨了,今天就抽空写下这篇文章来捋清楚两者之间关系。 Android NDK Android NDK...


  • 单生产者和单消费者共同操作同一个环形缓冲区的问题

    问题描述 本问题只针对单个生产者进程和单个消费者进程的问题进行讨论。 生产者进程和消费者进程之间通过共享内存的方式进行IPC通信。 环形缓冲区存放在共享内存中,并且环形缓冲区中环形缓冲单元的个数为 2^N 个(N为大于1的正整数),环形缓冲区的数据结构定义为: #define RING_BUFFER_SIZE N struct RingBuffer{ int w_pos; //环形缓冲区写入位置值 int r_pos; //环形缓冲区读取位置值 data_block data[(1<<N)]; //data_block...


  • Ubuntu 软件源详解

    什么是软件源? Ubuntu 中安装软件的方式 在 Ubuntu 中软件安装的方式和 Windows 系统中双击 exe 文件的傻瓜式软件安装的方式有很大的不同,它主要可以分为下面三种安装方式: 通过 apt 包管理工具从软件源中安装 通过 deb 格式的软件包安装 从软件源码手动编译安装 软件源介绍 Ubuntu 系统中软件源其实本质上就是一个软件仓库,在这个仓库中包含了...


  • Git 常用命令

    1. 我为什么要做这个 Cheat Sheet? 从接触 Git 到现在已经快两年多了,虽然以前入门学习 Git 时刷过一遍 《Pro Git》(这本书就像是 Git 的红宝书,非常值得你全部通读一遍),但是因为那时并没有什么机会去使用 Git,所以曾经看过的许多 Git 命令也就慢慢淡忘了,感觉自己的 Git 水平还仅仅停留在 add, commit,...