欢迎来到天天文库
浏览记录
ID:37709133
大小:934.55 KB
页数:23页
时间:2019-05-29
《diagram android》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、绿色箭头:表示插入SD卡后事件传递以及SD卡挂载 红色箭头:表示挂载成功后的消息传递流程 黄色箭头:表示MountService发出挂载/卸载SD卡的命令 Android各层次调用流程概述 2012-07-0718:16:33Android的硬件抽象层: 简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。 也就是说,把对硬件的支持分成了两层, 一层放在用户空间(UserSpace),(硬件抽象层) 一层放在内核空间(KernelSpace),(Linux内核驱动程序) 下面这个图阐述了硬件抽象层
2、在Android系统中的位置,以及它和其它层的关系:二,简单的总结进入到Android源代码工程的external目录,创建hello目录:cdexternalmkdirhello 在hello目录中新建Android.mk文件: LOCAL_PATH:=$(call my-dir) include$(CLEAR_VARS) LOCAL_MODULE_TAGS:=optional LOCAL_MODULE:= hello LOCAL_SRC_FILES:=$(callall-subdir-c-files) include$(BUILD_EX
3、ECUTABLE)注意,BUILD_EXECUTABLE表示我们要编译的是可执行程序。 使用mmm命令进行编译: mmm./external/hello 编译成功后,就可以在out/target/product/gerneric/system/bin目录下,看到可执行文件hello了。 重新打包Android系统文件system.img: makesnod 这样,重新打包后的system.img文件就包含刚才编译好的hello可执行文件了。 七.运行模拟器,使用/system/bin/hello可执行程序来访问Linux内核驱动程序。
4、emulator-kernel./kernel/common/arch/arm/boot/zImage& adbshell cdsystem/bin ./hello ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ 三,编写硬件抽象层 进入到在hardware/libhardwa
5、re/include/hardware目录,新建hello.h文件: cdhardware/libhardware/include/hardware vihello.h hello.h文件的内容如下: #ifndefANDROID_HELLO_INTERFACE_H#defineANDROID_HELLO_INTERFACE_H#include__BEGIN_DECLS /*定义模块ID*/#define HELLO_HARDWARE_MODULE_ID "hello" /*硬件模块结构体*/struct
6、hello_module_t { struct hw_module_t common;}; /*硬件接口结构体*/struct hello_device_t { struct hw_device_t common; intfd; // 设备文件描述符 int(*set_val)(structhello_device_t*dev,intval); // 为该HAL对上提供的函数接口 int(*get_val)(structhello_device_t*dev,int*val);};__END_DECLS#endif
7、 进入到hardware/libhardware/modules目录,新建hello目录,并添加hello.c文件。hello.c的内容较多,我们分段来看。 首先是包含相关头文件和定义相关结构: #defineLOG_TAG"HelloStub" #include #include #include #include #include #include #defineDEVICE_N
8、AME
此文档下载收益归作者所有