Android系统中底层Reboot流程

1 月 29 日
阅读 26 分钟
400
本文主要关注 Android 系统底层的 Reboot 流程,主要涉及 Native、Kenrel、Recovery、Bootloader。

Android平台上ABI的确认

2022-10-08
阅读 4 分钟
3.1k
ABI 即 Application binary interface,是 CPU 与指令集专属的应用程序二进制接口。它定义了一套规则,允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。

USB传输速率

2022-09-30
阅读 2 分钟
1.3k
注:表中的数据包大小和每帧传输次数是最大速率时的配置,不代表可选最大值。帧间隔为1ms。最大速率计算时考虑协议开销,周期传输(等时和中断)还需要考虑90%的带宽限制。

Uinput Module

2022-08-01
阅读 5 分钟
2.4k
uinput是一个内核模块,可以从用户空间模拟输入设备。通过写入/dev/uinput(或 /dev/input/uinport)设备,进程可以创建具有特定功能的虚拟输入设备。一旦创建了这个虚拟设备,进程就可以通过它发送事件,这些事件将传递给用户空间和内核中事件消费者。

Multi-touch Protocol

2022-08-01
阅读 6 分钟
849
kernel/Documentation/input/multi-touch-protocol.rst:Copyright: |copy| 2009-2010 Henrik Rydberg mailto:rydberg@euromail.se

Android OTA升级(二)之ota_from_target_files文件分析

2022-05-27
阅读 30 分钟
3k
此部分为全包升级主要实现过程,涉及到ota_from_target_files 文件,这个也是制作全包和差分包的主要工具,接下来我们就着重分析怎么利用这个工具制作full_ota_package的。

Android OTA升级(一)之Makefile文件分析

2022-05-27
阅读 18 分钟
2.5k
此篇文章主要介绍 Android ota 包(Android L)的编译制作过程,侧重于 Makefile 中编译 ota 的流程,从指定 target 到编译 cmd 等流程。

Android 鼠标光标的图形合成

2022-04-12
阅读 16 分钟
3.7k
一直很好奇鼠标光标是如何实现的,它反映很快、延迟很小,没有受到 Android 显示系统的影响。正好最近做相关的工作,跟着源码好好研究一下。本文参考 Android 9.0 源码。

Binder、HwBinder 和 VndBinder

2021-12-09
阅读 2 分钟
4.1k
碰到研究过 Android 进程间通信的朋友,我通常喜欢请教 Binder 相关的问题。但是,太细节的问题有点吹毛求疵了,对于本质的理解是我期望的。标题的问题通常是我最喜欢问的一个。

什么时候不适合使用Shell脚本

2021-12-09
阅读 1 分钟
1.5k
一个shell脚本是一个类似于"小吃店的(quick and dirty)"方法, 在你使用原型设计一个复杂的应用的时候. 在工程开发的第一阶段, 即使从功能中取得很有限的一个子集放到shell脚本中来完成往往都是非常有用的. 使用这种方法, 程序的结果可以被测试和尝试运行, 并且在处理使用诸如C/C++, Java或者Perl语言编写的最终代码前, ...

Android 系统性能优化

2021-06-22
阅读 2 分钟
3.4k
这篇不讲细节,讲方法,讲思路。看到好多人在做系统优化时完全摸不着头脑,毫无章法的乱打乱撞,实在忍不住想说几句,又不好直说,还是写下来做个笔记吧。

Android 系统实时调度优先级

2021-06-01
阅读 2 分钟
4.5k
之前在Android进程调度中介绍过Android使用的调度策略。Android对调度策略和优先级的管理是很谨慎的,一般情况下不需要应用和服务调整自己的优先级。但是,一些有系统开发能力的厂商有时会对优先级进行修改。如果没有经过充分考虑,可能会对系统运行产生不良影响,尤其是修改实时调度策略。

configfs_sample.c 理解

2020-12-25
阅读 12 分钟
2k
转载:[链接]1. 编译运行代码从如下链接获得:[链接]编写 Makefile 文件: {代码...} 编译生成内核模块: {代码...} 其中,configfs_sample.ko 使编译好的内核模块,使用如下命令加载该模块: {代码...} 如果出现如下错误:modprobe: FATAL: Module configfs_sample.ko not found in directory /lib/modules/4.15.0-117-...

configfs-用户空间控制的内核对象配置

2020-12-25
阅读 11 分钟
4k
configfs 是一个基于内存的文件系统,它提供了与sysfs相反的功能。sysfs 是一个基于文件系统的内核对象视图,而configfs 是一个基于文件系统的内核对象管理器(或称为config_items)。

数字音频接口

2020-12-24
阅读 6 分钟
5.3k
I2S 是飞利浦定义的数字音频传输标准,用于数字音频数据在系统内器件之间传输。使用三根数据线:SD(数据线)、WS(帧时钟,也称LRCLK)、SCLK(位时钟,也称BCLK)。I2S 分为 i2s-standard mode ,i2s-MSB-Left-justified mode,i2s-MSB-Right-justified mode三种模式。标准的 I2S 时序如下图所示,

Android log 输出控制

2020-12-24
阅读 5 分钟
7.8k
很简单的话题。当我听到有人在讨论自己实现机制控制 log 输出时,我觉得还是有必要记录一下。最近让我比较困扰的是,很多 Android 基本的技巧都不被知晓。许多人的“锤子”意识很严重,一直使用以往的经验处理一切问题。

Logcat 读取 Kernel Log

2020-11-25
阅读 7 分钟
12.2k
最近做 Android 系统开发,系统开发通常要建立自己的 Log 系统,抓取 Android Log、Kernel Log 和其他一些特定的 Log。对于 Kernel Log 的需求也很简单,

Android ANR 原理

2020-06-18
阅读 26 分钟
6.7k
ANR:Application Not Responding,即“应用程序无响应”。Android 运行时,AMS 和 WMS 会监测应用程序的响应时间,如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会上报 ANR。

IoT OS 初步设想

2020-04-23
阅读 1 分钟
1.4k
IoT OS 主要是运行在嵌入式设备上。因为嵌入式设备的硬件千差万别,性能也差距很大。为兼容所有嵌入式设备,IoT OS 必须保持轻小的特点和良好的兼容性。同时保证其灵活性和易扩展,从而可以适应不同的外围设备。

Android 中看不见的外部存储路径

2020-04-17
阅读 5 分钟
5.2k
这个问题起源一个bug的分析过程,APP的cache路径无法通过adb进行访问。基于Android 5.1代码进行分析 在 Android 应用中,获取存储路径的方法通常使用以下几个, Environment.getDownloadCacheDirectory():/cache ,cache目录路径。 Environment.getRootDirectory():/system,system目录路径。 Environment.getDataDire...

Linux 设备树(Device Tree)(转载)

2020-04-02
阅读 37 分钟
5.8k
Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称 "this whole ARM thing is a f*cking pain in the ass",引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对...

FrameBuffer 架构

2020-03-26
阅读 2 分钟
5.3k
FrameBuffer 是 Linux 系统中的一种显示驱动接口。FrameBuffer 将显示硬件进行抽象,对用户表现为一块显示内存,用户空间进程可以直接操作这块内存空间完成写屏操作。FrameBuffer 在设备上表现为一个字符设备,设备节点为 /dev/fb*。用户对设备节点进程 open、mmap、ioctl、read、write 等操作,就可以控制最终的显示输出。

V4L2框架概述(转载)

2020-03-24
阅读 18 分钟
3.9k
本文开启 linux 内核 V4L2 框架部分的学习之旅,本文仅先对 V4L2 的框架做一个综述性的概括介绍,然后接下来的文章中会对 V4L2 框架的各个子模块进行一个全面的介绍,包括每一部分的实现原理,如何使用,用在什么地方等等。预计接下来的文章大概有5篇(不带本篇)。坑已经挖好了,开始吧。

ALSA 架构

2020-03-24
阅读 3 分钟
6.1k
ALSA 架构 主要内容来之参考文档,对一些描述做了些修正. ALSA 的基本架构可以用上图表示,组成部分主要有: ALSA 应用:可能是 Native Application 或 Server,用户通过调用 ALSA 库来实现声音的播放、录制和控制。 ALSA Library :ALSA 用户空间库,提供统一的API,常见有 tinyalsa、alsa-lib等。 ALSA Layer:内核中 A...

Android 图形系统框架简介

2020-03-23
阅读 5 分钟
6.2k
Image Stream Producers:图形生产者,用来生成图形缓冲区,以供图形消费者使用。例如OpenGL ES、Canvas 2D 和 mediaserver 视频解码器。

Android make 中变量记录

2020-02-24
阅读 2 分钟
6.7k
转换mk文件到bp文件 {代码...} 编译不同类型的模块 编译成 Native 动态库 {代码...} {代码...} 编译成 Native 静态库 {代码...} {代码...} 编译成 Native 执行程序 {代码...} {代码...} 编译成头文件库 {代码...} {代码...} 编译成 Java 库 {代码...} {代码...} 编译成 Java 静态库 {代码...} {代码...} 编译成 App 应用...

Android 编译命令

2020-02-13
阅读 2 分钟
6.2k
lunch:选择编译的产品类型,并存储在当前环境中。 lunch <product_name>-<build_variant>

Android Sepolicy 相关工具

2020-02-12
阅读 4 分钟
4.2k
./build_policies.sh ~/android/master ~/tmp/build_policies./build_policies.sh ~/android/master ~/tmp/build_policies sailfish-eng walleye-eng

Android.bp 简介

2020-01-21
阅读 4 分钟
9.7k
从 Android 7.0 开始,Ninja 成为默认的编译框架。Ninja 是一个致力于速度的小型编译系统(类似于Make),它的设计就是为了更快的编译。Ninja 可以通过其他高级的编译系统生成其输入文件,Android 使用 Kati 把 makefile 转换成 Ninja 文件。

系统屋索引

2020-01-16
阅读 1 分钟
1.3k
索引 Linux Linux内存管理Linux内核内存管理Linux Storage Stack DiagramLinux进程调度Cgroup 用法 Android架构 Android Treble 简介Android 分区Android 启动原因Android VNDK简介Android 动态链接库隔离 Android Framework Android进程调度Android Low Memory KillerAndroid OOM AdjustmentsAndroid 共享内存Android中...