struct hw_module_t; //模块类型
struct hw_module_methods_t; //模块方法
struct hw_device_t; //设备类型
这几个数据结构是在Android工作目录/hardware/libhardware/include/hardware/hardware.h文件中定义.
hal源代码目录,一般在Android 源代码目录/hardware/libhardware
根据id找到结构体,放入module结构体
module结构体是继承于hw_module_t,且内部的变量名字为
函数返回结构体,调用,结构体方法中open方法,返回控制结构体。控制结构体,控制结构体,包含操作函数
int hw_get_module(const char *id, const struct hw_module_t **module);
一般情况下,驱动是在操作系统给出的统一接口下工作的。应用通过统一系统调用接口访问设备, 中间具体是通过驱动来完成的
系统给应用程序的调用接口是什么?write?read?open?close?ioctl?驱动实现这些接口,实现具体定义。给上层调用。上层
只是使用函数,调用它,得到结果。 函数体的实现是由驱动定义的。
gps驱动是在内核中,通过系统接口write,reade等调用?在外层通过hal调用?还是驱动没有统一访问接口,直接对上处理出数
据。这些已经编译好的函数,对于个人都是不可知的。
都是为了设备移植。编译,复用。 统一接口是软件开发的重要原则。
目前的问题和思路:
1.直接操纵硬件,直接根据硬件参数可以相关协议,操纵硬件。
2.知道驱动向上的接口,然后直接加载so,调用
3.通过hal,获得模块的接口及其方法。
存在的问题:每种手机硬件都是不一样的,
第一种情况,gps硬件是不是都一样
gps驱动接口是不是都一样
hal给出的是不是都一样
第三种,Android系统驱动与传统电脑驱动调用的区别,是否调用驱动接口是一样的。gps不是打印机,随时更换,万一坏了,再
热插拔换一个
厂家手机系统的过程,基于每种硬件,就是Android移植,改底层驱动,都是自定义的,对于上层应用来说,
就是拿到源代码,主要改底层驱动。然后编译系统,安装。
原则上讲,只要是sdk,框架层的接口一致,在sdk开发阶段的能用,更下层随便改,随便实现都是可以的么??
struct hw_module_methods_t; //模块方法
struct hw_device_t; //设备类型
这几个数据结构是在Android工作目录/hardware/libhardware/include/hardware/hardware.h文件中定义.
hal源代码目录,一般在Android 源代码目录/hardware/libhardware
根据id找到结构体,放入module结构体
module结构体是继承于hw_module_t,且内部的变量名字为
函数返回结构体,调用,结构体方法中open方法,返回控制结构体。控制结构体,控制结构体,包含操作函数
int hw_get_module(const char *id, const struct hw_module_t **module);
一般情况下,驱动是在操作系统给出的统一接口下工作的。应用通过统一系统调用接口访问设备, 中间具体是通过驱动来完成的
系统给应用程序的调用接口是什么?write?read?open?close?ioctl?驱动实现这些接口,实现具体定义。给上层调用。上层
只是使用函数,调用它,得到结果。 函数体的实现是由驱动定义的。
可以这样认为,linux中的设备文件其实就是驱动程序,write?read?open?close?ioctl?就是驱动对上层提供的系统接口。
gps驱动是在内核中,通过系统接口write,reade等调用?在外层通过hal调用?还是驱动没有统一访问接口,直接对上处理出数
据。这些已经编译好的函数,对于个人都是不可知的。
都是为了设备移植。编译,复用。 统一接口是软件开发的重要原则。
目前的问题和思路:
1.直接操纵硬件,直接根据硬件参数可以相关协议,操纵硬件。
2.知道驱动向上的接口,然后直接加载so,调用
3.通过hal,获得模块的接口及其方法。
存在的问题:每种手机硬件都是不一样的,
第一种情况,gps硬件是不是都一样
gps驱动接口是不是都一样
hal给出的是不是都一样
第三种,Android系统驱动与传统电脑驱动调用的区别,是否调用驱动接口是一样的。gps不是打印机,随时更换,万一坏了,再
热插拔换一个
厂家手机系统的过程,基于每种硬件,就是Android移植,改底层驱动,都是自定义的,对于上层应用来说,
就是拿到源代码,主要改底层驱动。然后编译系统,安装。
原则上讲,只要是sdk,框架层的接口一致,在sdk开发阶段的能用,更下层随便改,随便实现都是可以的么??