![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 77
CodeFarmerL
软件架构,硬件建模、硬件IP验证、智能网卡、DPU、Android、NPU、AI、RISC-V、NIC(network_interconnect)
展开
-
Android HDL数据类型
本部分介绍了 HIDL 数据类型。有关实现详情,请参阅 HIDL C++(如果是 C++ 实现)或 HIDL Java(如果是 Java 实现)。与 C++ 的相似之处包括:structs 使用 C++ 语法;unions 默认支持 C++ 语法。结构体和联合都必须具有名称;不支持匿名结构体和联合。HIDL 中允许使用 typedef(和在 C++ 中一样)。允许使用 C++ 样式的...原创 2018-03-13 15:25:11 · 1640 阅读 · 0 评论 -
Android Linux Boot
在该函数中会调用 kernel_thread() 函数生成一个内核进程,该内核进程会在新的环境下调用 kernel_init() 函数,在该函数中调用 try_to_run_init_process() 函。在 start_kernel() 函数中进行了 Linux 大量的 初始化化,例如中断系统,文件系统,安全系统,内存分配,性能稳定性等模块的初始化,以及 CPU 的启动等等,最后调用 rest_init() 函数。init进程父进程为0号进程,执行根目录底下的init可执行程序,是用户空间进程。原创 2023-06-16 11:07:04 · 100 阅读 · 0 评论 -
Android 源码分析指Light
调用流程和电源指示灯调用流程类似,区别在于使用LightsManager.getLight()传入的Id不同。通知中指示灯的初始化在NotificationRecord中。原创 2023-06-13 15:42:14 · 239 阅读 · 0 评论 -
Android 平台water mark实现
【代码】Android 平台water mark实现。原创 2023-06-13 15:25:04 · 309 阅读 · 0 评论 -
Android通信之 EVENTFD
EVENTFD(2) Linux Programmer's Manual EVENTFD(2)...原创 2018-02-25 15:55:10 · 678 阅读 · 0 评论 -
Android通信之 INotify
INotifyINotify是Linux内核提供的一种文件系统变化通知机制。它可以为应用程序监控文件系统的变化,如文件的新建、删除、读写等。INotify机制有两个基本对象,分别为inotify对象与watch对象,都使用文件描述符表示。inotify对象对应一个队列,应用程序可以向inotify对象添加多个监听。当被监听的事件发生时,可以通过read()函数从inotify对象中...原创 2018-02-25 15:56:35 · 975 阅读 · 0 评论 -
Android 应用程序请求Vsync
App Request Vsync/frameworks/base/core/java/android/view/ViewRootImpl.java[ViewRootImpl.java–>ViewRootImpl.scheduleTraversals()] void scheduleTraversals() { if (!mTraversalSchedu...原创 2018-02-25 15:43:45 · 994 阅读 · 0 评论 -
关于Android应用程序消息循环Looper和Handler简析
android version:7.1.1_r6 Android应用程序的消息处理机制也是由消息循环、消息发送和消息处理这三个部分组成1. 消息循环frameworks/base/core/java/android/app/ActivityThread.java public static void main(String[] args) { .........原创 2018-02-25 15:39:47 · 343 阅读 · 0 评论 -
快速消息队列 (FMQ)
HIDL 的远程过程调用 (RPC) 基础架构使用 Binder 机制,这意味着调用涉及开销、需要内核操作,并且可以触发调度程序操作。不过,对于必须在开销较小且无内核参与的进程之间传输数据的情况,则使用快速消息队列 (FMQ) 系统。FMQ 会创建具有所需属性的消息队列。MQDescriptorSync 或 MQDescriptorUnsync 对象可通过 HIDL RPC 调用发送,并可供接收进程用于访问消息队列。原创 2018-02-25 15:26:21 · 9112 阅读 · 0 评论 -
Android服务和数据传输
本部分介绍了如何注册和发现服务,以及如何通过调用 .hal 文件内的接口中定义的方法将数据发送到服务。注册服务HIDL 接口服务器(实现接口的对象)可注册为已命名的服务。注册的名称不需要与接口或软件包名称相关。如果没有指定名称,则使用名称“默认”;这应该用于不需要注册同一接口的两个实现的 HAL。例如,在每个接口中定义的服务注册的 C++ 调用是:status_t status =...原创 2018-02-25 12:02:47 · 851 阅读 · 0 评论 -
Android通信之 Epoll
Epoll无论是从设备节点中获取原始输入事件还是从inotify对象中读取文件系统事件,都面临一个问题,就是这些事件都是偶发的。也就是说,大部分情况下设备节、inotify对象这些文件描述符中都是无数据可读的,同事有希望有事件到来时可以尽快地对事件做出反应。为解决这个问题,我们不希望不断地轮询这些描述符,也不希望为每一个描述符创建一个单独的线程进行阻塞时在读取,因为这都会导致资源被...原创 2018-02-25 15:53:33 · 1065 阅读 · 1 评论 -
Android通信之 BitTube
BitTubeBitTube的实现很简洁,就是一对”parcel-able”模式的socket,用Linux/Unix中的术语来说叫“socketpair”。“socketpair”是Linux/Unix系统中用于进程间通信的一种机制,和“pipe”十分类似。“socketpair”利用socket为双方建立了全双工的通信管道(communication pipe)。通过文件描述符的复...原创 2018-02-25 15:48:21 · 1644 阅读 · 0 评论 -
Android Light
Lightnote: Android O1 LightsService启动/frameworks/base/services/java/com/android/server/SystemServer.java [SystemServer.java::run()] private void run() { ...... /...原创 2018-02-25 16:04:17 · 1638 阅读 · 0 评论 -
Android Choreographer 初始化
Choreographer Initframeworks/base/core/java/android/view/ViewRootImpl.java[ViewRootImpl.java–>ViewRootImpl.ViewRootImpl()] public ViewRootImpl(Context context, Display display) { m...原创 2018-02-25 15:46:31 · 497 阅读 · 0 评论 -
Android 使用 Binder IPC
本页介绍了 Android O 中对 Binder 驱动程序进行的更改、提供了有关使用 Binder IPC 的详细信息,并列出了必需的 SELinux 政策。对 Binder 驱动程序进行的更改从 Android O 开始,Android 框架和 HAL 现在使用 Binder 互相通信。由于这种通信方式极大地增加了 Binder 流量,因此 Android O 包含了几项改进,旨在...原创 2018-02-25 17:16:04 · 403 阅读 · 0 评论 -
Android 线程模型
线程模型标记为 oneway 的方法不会阻塞。对于未标记为 oneway 的方法,在服务器完成执行任务或调用同步回调(以先发生者为准)之前,客户端的方法调用将一直处于阻塞状态。服务器方法实现最多可以调用一个同步回调;多出的回调调用会被舍弃并记录为错误。如果方法应通过回调返回值,但未调用其回调,系统会将这种情况记录为错误,并作为传输错误报告给客户端。直通模式下的线程在直通模式下,大多数调...原创 2018-03-13 11:14:44 · 181 阅读 · 0 评论 -
Android 转换 HAL 模块
您可以通过转换 hardware/libhardware/include/hardware 中的标头将预装的 HAL 模块更新为 HIDL HAL 模块。使用 c2halc2hal 工具可处理大部分转换工作,从而减少所需进行的手动更改次数。例如,要为 NFC HAL 生成 HIDL .hal 文件,请使用以下命令:make c2halc2hal -r android.hardwa...原创 2018-03-13 11:47:39 · 304 阅读 · 0 评论 -
android cat /proc/meminfo 字段分析
cat /proc/meminfo 字段分析:/ $ cat /proc/meminfoMemTotal: 877368 kB :所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)(HighTotal + LowTotal),系统从加电开始到引导完成,BIOS等要保留一些内存,内核要保留一些内存,最后剩下可供系统支配的内存就是MemTotal。这个值在...原创 2018-04-26 13:01:42 · 1932 阅读 · 0 评论 -
Android 接口哈希
本文档介绍了 HIDL 接口哈希,该哈希是一种旨在防止意外更改接口并确保接口更改经过全面审查的机制。这种机制是必需的,因为 HIDL 接口带有版本编号,也就是说,接口一经发布便不得再更改,但不会影响应用二进制接口 (ABI) 的情况(例如更正备注)除外。布局每个软件包根目录(即映射到 hardware/interfaces 的 android.hardware 或映射到 vendor/...原创 2018-02-25 10:52:54 · 540 阅读 · 0 评论 -
硬件抽象层 (HAL)
HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并由 Android 系统适时地加载。 图 1. HAL 组件您必须为您的产品所提供的特定硬件实现相应的 HAL(和驱动程序)。HAL 实现通常会内置在共享库模块(...原创 2018-02-24 23:09:46 · 5897 阅读 · 0 评论 -
Android之Adapter系列之SpinnerAdapter接口
SpinnerAdapter和ListAdapter一样,是一个接口,比较简单,仅仅继承Atapter,并添加了getDropDownView方法原创 2016-08-04 15:12:57 · 650 阅读 · 0 评论 -
Android之Adapter系列之ListAdapter接口
ListAdapter同样是一个接口,比较简单,仅仅继承Atapter,并添加了两个方法原创 2016-08-04 14:04:51 · 773 阅读 · 0 评论 -
Android之Adapter系列之Adapter接口
Android之Adapter系列之Adapter接口原创 2016-08-04 08:57:47 · 417 阅读 · 0 评论 -
Android之Adapter系列之BaseAdapter类
Android之Adapter系列之BaseAdapter类原创 2016-08-04 15:37:20 · 425 阅读 · 0 评论 -
AMS对象创建过程
1. AMS继承关系图2. AMS对象创建原创 2016-08-01 21:36:23 · 689 阅读 · 0 评论 -
am命令启动Acitivity流程图
am命令启动Acitivity流程图原创 2016-08-03 00:13:01 · 593 阅读 · 0 评论 -
Android系统Styles and Themes
1.样式和主题 2.定义样式 3.继承 4.样式属性 5.如何使用样式和主题 6.对视图使用样式 7.如何根据一个平台版本选择一个主题 8.使用平台相关的样式和主题原创 2016-08-03 10:22:00 · 497 阅读 · 0 评论 -
Android之Adapter系列之SimpleAdapter类
Android之Adapter系列之SimpleAdapter类原创 2016-08-04 15:38:09 · 479 阅读 · 0 评论 -
android设计模式系列之组合模式
android设计模式系列之组合模式原创 2016-08-07 00:03:41 · 1713 阅读 · 1 评论 -
Android系统架构
Android 系统架构包含以下组件: 图 1. Android 系统架构应用框架应用框架最常被应用开发者使用。如果您是硬件开发者,则应该了解开发者 API,因为很多此类 API 都会直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。Binder IPCBinder 进程间通信 (IPC) 机制允许应用框架跨越进程...原创 2018-02-24 23:07:13 · 218 阅读 · 0 评论 -
Android接口和软件包
HIDL 是围绕接口进行编译的,接口是面向对象的语言使用的一种用来定义行为的抽象类型。每个接口都是软件包的一部分。软件包软件包名称可以具有子级,例如 package.subpackage。已发布的 HIDL 软件包的根目录是 hardware/interfaces 或 vendor/vendorName(例如 Pixel 设备为 vendor/google)。软件包名称在根目录下形成一...原创 2018-02-24 23:07:52 · 226 阅读 · 0 评论 -
Android 之 HIDL
如果有一个 IFoo.hal,BsFoo.h 会封装 HIDL 生成的方法,以提供额外的功能(例如使 oneway 事务在其他线程中运行)。oneway 方法在各自的线程中运行,因为它们不需要等待 HAL 来处理它们(这意味着,在直通模式下使用 oneway 方法的所有 HAL 对于线程必须是安全的)。要将运行早期版本的 Android 的设备更新为使用 Android O,您可以将惯用的(和旧版)HAL 封装在一个新 HIDL 接口中,该接口将在绑定式模式和同进程(直通)模式提供 HAL。原创 2018-02-24 23:08:26 · 929 阅读 · 0 评论 -
Treble
Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project Treble 适用于搭载 Android 8.0 及后续版本的所有新设备(这种新的架构已经在 Pixel 手机的开发者预览版中投入使用)。原创 2018-02-24 23:09:06 · 672 阅读 · 0 评论 -
HAL 类型
为了更好地实现模块化,Android 8.0 对 Android 操作系统底层进行了重新架构。作为此变化的一部分,运行 Android 8.0 的设备必须支持绑定式或直通式 HAL:绑定式 HAL。以 HAL 接口定义语言 (HIDL) 表示的 HAL。这些 HAL 取代了早期 Android 版本中使用的传统 HAL 和旧版 HAL。在绑定式 HAL 中,Android 框架和 HA...原创 2018-02-24 23:09:27 · 1346 阅读 · 0 评论 -
Android 接口和架构
Android 可让您自由实现自己的设备规格和驱动程序。硬件抽象层 (HAL) 提供了一种用于在 Android 平台堆叠和硬件之间创建软件钩的标准方法。Android 操作系统也是开放源代码系统,因此您可以贡献自己的接口和增强功能。在将 Android 移植到您的硬件之前,请花点时间了解 Android 系统架构。由于您的驱动程序和 HAL 会与 Android 进行交互,因此了解 Andr...翻译 2018-02-24 23:10:05 · 284 阅读 · 0 评论 -
Android之Adapter系列文章介绍
Android之Adapter系列文章介绍原创 2016-08-02 16:30:07 · 321 阅读 · 0 评论