android 整体框架
文章平均质量分 89
Android 整体框架内容
雪饼android之路
这个作者很懒,什么都没留下…
展开
-
【Android】 Generic Boot Partition
在 Android 12 中,通用boot映像称为 通用内核映像 (GKI),包含通用 ramdisk 和 GKI 内核。对于搭载 Android 13 的设备,通用 ramdisk 将从boot.img中删除并放置在单独的init_boot.img中。此更改使boot.img仅包含 GKI 内核。原创 2023-12-27 23:00:00 · 1262 阅读 · 0 评论 -
【Android】在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这个内置的应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务。至此,我们就完整地学习了在Android的Linux内核空间添加硬件驱动程序、在Android的硬件抽象层添加硬件接口、在Android的Application Frameworks层提供硬件服务以及在Android的应用层调用硬件服务的整个过程了,希望能为读者进入Android系统提供入门帮助。转载 2022-12-23 10:09:48 · 143 阅读 · 0 评论 -
【Android】在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
因此,软件和硬件的关系,在一定程度上可以说,硬件是为软件服务的。在前面的几篇文章中,我们着重介绍了Linux内核层、硬件抽象层和运行时库层提供的自定义硬件服务接口,这些接口都是通过C或者C++语言来实现的。这样,重新打包后的system.img系统镜像文件就在Application Frameworks层中包含了我们自定义的硬件服务HelloService了,并且会在系统启动的时候,自动加载HelloService。二. 在Android系统中,硬件服务一般是运行在一个独立的进程中为各种应用程序提供服务。转载 2022-12-23 09:34:30 · 117 阅读 · 0 评论 -
【Android】在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
注意,在hello_init函数中,通过Android硬件抽象层提供的hw_get_module方法来加载模块ID为HELLO_HARDWARE_MODULE_ID的硬件抽象层模块,其中,HELLO_HARDWARE_MODULE_ID是在中定义的。Android硬件抽象层会根据HELLO_HARDWARE_MODULE_ID的值在Android系统的/system/lib/hw目录中找到相应的模块,然后加载起来,并且返回hw_module_t接口给调用者使用。转载 2022-12-23 08:54:54 · 145 阅读 · 0 评论 -
【Android】在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一方面实现,即如何在硬件抽象层中增加硬件模块来和内核驱动程序交互。完成这个内核驱动程序后,便可以在Android系统中得到三个文件,分别是/dev/hello、/sys/class/hello/hello/val和/proc/hello。在硬件接口结构体中,fd表示设备文件描述符,对应我们将要处理的设备文件"/dev/hello",set_val和get_val为该HAL对上提供的函数接口。hello.c的内容较多,我们分段来看。转载 2022-12-23 07:45:00 · 355 阅读 · 0 评论 -
【Android】在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/val。这个程序的作用中,打开/dev/hello文件,然后先读出/dev/hello文件中的值,接着写入值5到/dev/hello中去,最后再次读出/dev/hello文件中的值,看看是否是我们刚才写入的值5。四. 在hello目录中新建Android.mk文件。转载 2022-12-23 07:15:00 · 132 阅读 · 0 评论 -
【Android】在Ubuntu上为Android系统编写Linux内核驱动程序
此外,还定义了一个字符设备结构体hello_android_dev,这个就是我们虚拟的硬件设备了,val成员变量就代表设备里面的寄存器,它的类型为int,sem成员变量是一个信号量,是用同步访问寄存器val的,dev成员变量是一个内嵌的字符设备,这个Linux驱动程序自定义字符设备结构体的标准方法。四.在hello目录中增加hello.c文件,这是驱动程序的实现部分。这里,提供了三种访问设备寄存器的方法,一是通过proc文件系统来访问,二是通过传统的设备文件的方法来访问,三是通过devfs文件系统来访问。转载 2022-12-23 07:00:00 · 512 阅读 · 0 评论 -
【Android】Android硬件抽象层(HAL)概要介绍和学习计划
把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?因此,Android才会想到把对硬件的支持分成硬件抽象层和内核驱动层,内核驱动层只提供简单的访问硬件逻辑,例如读写硬件寄存器的通道,至于从硬件中读到了什么值或者写了什么值到硬件中的逻辑,都放在硬件抽象层中去了,这样就可以把商业秘密隐藏起来了。大家想想,Android放在内核空间的驱动程序对硬件的支持是不完整的,把Linux内核移植到别的机器上去时,由于缺乏硬件抽象层的支持,硬件就完全不能用了,这也是为什么说Android是开放系统而不是开源系统的原因。转载 2022-12-22 23:45:00 · 442 阅读 · 0 评论