导航:首页 > 操作系统 > androiddevice驱动

androiddevice驱动

发布时间:2022-05-19 05:36:54

‘壹’ 关于android系统蓝牙都用什么模块,有单独的android驱动吗

Android系统的源码中蓝牙部分的分布式这样的:
1. App部分主要包括OPP和PBAP以及HFP,当然还有settings部分,代码分布如下:
(1) /packages/app/Bluetooth/src/com/android/bluetooth/opp
(2) /packages/app/Bluetooth/src/com/android/bluetooth/pbap
(3) /packages/app/Phone/src/com/android/phone/ 中和BT相关的部分,主要是HFHS打电话相关的
(4) /packages/app/Settings/src/com/android/settings/bluetooth/ 主要是蓝牙开启,搜索,配对等

2. Framework部分主要包括BluetoothAdapter,BluetoothService,BluetoothEventLoop,BluetoothA2dpService等核心类,代码分布如下:
(1)/frameworks/base/core/java/android/server/ 包含BluetoothService,BluetoothEventLoop等核心类,但是并没有向用户应用程序提供接口,属于系统的类。
(2)/frameworks/base/core/java/android/bluetooth 包含了BluetoothAdapter, BluetoothSocket, BluetoothServerSocket等一系列类,这些类是系统向应用程序提供的接口,编写蓝牙相关的应用程序时会用到这些类,检查BT是否打开,搜索设备等等。如果编写蓝牙应用程序,需要熟悉该部分类的功能。
(3) /frameworks/base/core/jni/ 中包含Bluetooth相关的文件,如 android_server_BluetoothService.cpp 该部分主要是java层和c/c++层进行通信的

3. Bluez部分,主要包括各个协议的实现,如A2dp,AVRCP,AVDTP,HID,HDP,PAN,DUN以及对BT host的实现,通过该部分向BT Controler部分发送HCI命令,代码分布服下:
/external/bluetooth/bluez

4. BluetDroid部分,主要用于开关蓝牙,芯片上电部分(不属于驱动,可以算是硬件抽象层(HAL)), 代码分布如下:
/system/bluetooth/

5. kernel部分,主要包括RFCOMM,L2CAP等协议以及HCI的实现,代码分布如下:
/kernel/net/bluetooth/

6. driver部分,该部分代码还真没了解过,代码分布:
/kernel/drivers/bluetooth/
另外,driver部分和具体芯片密切相关,有时在下面的目录下也会有:
/vendor/
/device/

‘贰’ 如何学习android 驱动开发

随着智能手机的飞跃发展,特别是Android智能机的爆炸性发展,Android驱动工程师是越来越受欢迎的一个职位,而且是一个非常值得人期待的职位,因为可能你参与研发的一款手机就能改变了很多人的生活,所以,进阶吧,Android驱动程序猿,那怎样成为一名优秀的Android驱动程序猿,我来发表一下我的意见吧,希望各位网友不要轻易拍砖。

Android驱动的基础知识
首先作为Android驱动程序猿,你必须清楚的了解你要做的是什么,平时需要用到的基础知识,对Android的基本框架的了解还是非常的有必要,对linux下的编程基础也需要了解,因为严格来说,Android驱动是基于Linux驱动,个人强烈推荐阅读Linux Device Driver 3rd版,这本书讲了Linux下设备驱动的基础知识,作为Android驱动程序猿,你需要能最好读懂这本书,而且是反复的阅读这本书,因为我发现每次重新读这本书,都有新的收获,这本书很值得一读,强烈五星级推荐;而且还要会基本的C编程,能很好的读懂和编写一些C程序,而且懂一些基础的Java那就更好了,因为Framework层的代码与驱动层的代码联系也比较紧密,稍微懂一些Java代码,你会发现你对整个驱动框架的了解会更加的熟悉,相关的Linux编译脚本和Linux编译体系,因为商业开发的一些原因,Android本身的文件架构体系可能会被一些编译脚本而改变,加入新设备驱动,你需要了解整个的驱动编译体系,那样书写驱动程序也会更加的清晰!
\
Android/Linux相关驱动框架知识
为详细了解一下Android驱动程序员需要会的技术,我特意网络了各家Android驱动程序员招聘需求对Android程序猿的要求,选择哪几家呢,国产手机的代表,中兴,华为,酷派,联想,小米,魅族,VIVO都是非常不错的国产手机厂商,而且研发的Android智能手机越来越好,我甚至还专门去看了一下新兴Android智能机公司,包括锤子手机官网的Android驱动工程师招聘需求,One Plus One的官网连个加入我们的链接都木有,创业型的公司不知道是人才暂时饱和,还是啥原因,居然没有招聘信息,汇总发现,这些公司要求差异不是特别大,出了需要基本的Android调试能力,你还需要对Android各模块驱动框架的了解,比如,某锤科技的Android驱动工程师招聘需求,大伙可以去试试,锤子手机号称是在做最好的手机,比目前的旗舰手机都要好一点点,加入它,还蛮有期待的! \ 某米公司的Android驱动工程师也需要Android/Linux相关的知识,中兴和联想的Android招聘需求就比较笼统了,估计是大公司的缘故吧, \ 中兴的官网居然开始找不到驱动工程师的招聘,我的个神,废了我好大劲,才找到相关的招聘信息! \
相关的硬件知识和通信知识
Android驱动平时工作就是调试各种外围设备,是直接跟硬件打交道的职位,需要你看的懂电路原理图,了解基本的显示原理和基本的摄像头成像原理等等,这是跟你平时工作非常相关的基础知识,做Android智能手机,你也需要了解基本的通信相关知识,射频原理和基本的Modem相关知识,只有懂相关的硬件知识和通讯设备相关的基础知识,你才可以写出更好的Android驱动程序,才能调试出更满意的效果!

热爱驱动开发和不断学习
其实这点是非常的重要,应该摆在第一位,首先是你必须喜欢这份工作,你才可以做的更好,兴趣是最好的老师,这句话是真心的大实话,而目前的社会状态是什么赚钱,就一窝蜂的冲去做那个,结果,最后可能做的很不开心,然后,钱也没捞到;如今,我的大学同学很有一部分都放弃了所学的专业对口工作,有去卖保险的,有去工厂做普工的,有去做销售的,有去吃铁饭碗的,当然职业肯定不分贵贱好坏,我说这一点,主要是建议大家去坚持最初的梦想!我的梦想就是做出一款可以改变人们生活的移动终端,让这个世界因为我而有一点点的不同,童鞋们,一起坚持梦想吧! 此外,做Android驱动工程师需要的是不断的学习,时刻保持着一股激情,不断的学习才能更好的完成日常的驱动开发任务,并能保持对开发的的敏锐感觉,我觉得乔布斯的:Stay hungry,Stay foolish说的很好,一直被当做是我的座右铭,来激励我坚持做一个更好的Android驱动工程师,写这篇博客的目的就是分享我的一些小看法,日后我还是会不断更新我的博客,分享一些驱动开发相关的文档和博客,和广大的驱动程序猿一起进步!

‘叁’ 无法启动此程序,因为计算机中丢失AndroidDevice.dll.什么问题啊

文件丢失,可能是你不小心删掉了,重新装一下软件吧

‘肆’ samsung android usb device三星GT-15770无法更新驱动是怎么回事啊

这肯定是出现在手机连接电脑时的提示吧,简单的说就是驱动问题。
建议下载三星最新版的PC Studio,安装后就能连接。

‘伍’ 检测到您的Android设备加载了错误的驱动程序,如果您的Android设备有多种连接模式。

首先,我也遇到了这个问题,现在已经自己解决了,所以第一时间来回复你,希望对你有帮助。
1.右键单击我的电脑,依次选择属性。硬件,设备管理器,android device,xinyi composite adb interface,右键选择停用
2.启动豌豆荚,到这里已经成功了。

‘陆’ 如何学习Android驱动开发

一、Android驱动的基础知识
1.Android驱动是基于Linux驱动,强烈推荐阅读Linux Device Driver 3rd版,这本书讲了Linux下设备驱动的基础知识,要求反复细读。
2.能读懂和编写一些C程序。
3.能懂Java基础,因为Framework层的代码与驱动代码联系比较紧密,稍懂一些Java代码,会发现对整个驱动框架的了解更加熟悉。

二、Android/Linux相关驱动框架知识
1.需要Android/Linux相关的知识。
2.需要对Android各模块驱动框架的了解。
3.需要基本的Android调试能力。

三、相关的硬件知识和通信知识
1.Android驱动平时的工作就是调试各种外围设备,是直接跟硬件打交道,需要看得懂电路原理图,了解基本的显示原理和基本的摄像头成像原理等。
2.做Android手机,需要了解基本的通信相关知识,射频原理和基本的Modem相关知识,只有懂相关的硬件知识和通讯设备相关的基础知识,才可以写出更好的Android驱动程序。

四、热爱驱动开发和不断学习
做Android驱动开发需要的是不断的学习,时刻保持着一股激情,不断的学习才能更好的完成日常的驱动开发任务,并能保持对开发的敏锐感觉。就如乔布斯所说的:Stay hungry, Stay foolish.

‘柒’ 手机找不到android HSUSB device 驱动

装个豌豆荚就自动装驱动的了

‘捌’ 求LG ANDROID USB DEVICE的驱动如题 谢谢了

我建议您在电脑上下载一个驱动精灵,会自动帮你找到驱动的

‘玖’ 如何写一个Android USB接口驱动

说到 android 驱动是离不开 Linux 驱动的。Android 内核采用的是 Linux2.6 内核 (最近Linux 3.3 已经包含了一些 Android 代码)。但 Android 并没有完全照搬 Linux 系统内核,除了对Linux 进行部分修正,还增加了不少内容。android 驱动 主要分两种类型:Android 专用驱动 和 Android 使用的设备驱动(linux)。
Android 专有驱动程序:
1)Android Ashmem 匿名共享内存; 为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。
2)Android Logger 轻量级的LOG(日志) 驱动;
3)Android Binder 基于 OpenBinder 框架的一个驱动;
4)Android Power Management 电源管理模块;
5)Low Memory Killer 低内存管理器;
6)Android PMEM 物理内存驱动;
7)USB Gadget USB 驱动(基于 gaeget 框架);
8)Ram Console 用于调试写入日志信息的设备;
9)Time Device 定时控制设备;
10)Android Alarm 硬件时钟;

Android 上的设备驱动:
1)Framebuff 显示驱动;
2)Event 输入设备驱动;
3)ALSA 音频驱动;
4)OSS 音频驱动;
5)v412摄像头:视频驱动;
6)MTD 驱动;
7)蓝牙驱动;
8)WLAN 设备驱动;
Android 专有驱动程序

1.Android Ashmem
为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。
设备节点:/dev/ashmen .主设备号 10.
源码位置: include/linux/ashmen.h Kernel /mm/ashmen.c
相比于 malloc 和 anonymous/named mmap 等传统的内存分配机制,其优势是通过内核驱动提供了辅助内核的内存回收算法机制(pin/unoin)
2.Android Logger
无论是底层的源代码还上层的应用,我们都可以使用 logger 这个日志设备看、来进行调试。
设备节点: /dev/log/main /dev/log/event /dev/log/radio
源码位置:include/linux/logger.h include/linux/logger.c
3.Android Binder
IPC Binder 一种进程间通信机制。他的进程能够为其它进程提供服务 ----- 通过标准的 Linux 系统调用 API。
设备节点 :/dev/binder
源码位置:Kernel/include/linux/binder.h Kernel/drivers/misc/binder.c
4.Android Power Management
一个基于标准 linux 电源管理的轻量级 Android 电源管理系统,在 drivers/android/power.c kernel/power/
5.Low Memory Killer
它在用户空间中指定了一组内存临界值,当其中某个值与进程描述中的 oom_adj 值在同一范围时,该进程将被Kill掉(在parameters/adj中指定oome_adj 的最小值)。它与标准的Linux OOM机制类似,只是实现方法不同
源码位置:drivers/misc/lowmemorykiller.c
6.Android PMEM
PMEM 主要作用就是向用户空间提供连续的物理内存区域。
1.让 GPU 或 VPU 缓冲区共享 CPU 核心。
2.用于 Android service 堆。
源码位置:include/linux/android_pmem.h drivers/android/pmem.c
7.USB Gadget
基于标准 Linux USB gaeget 驱动框架的设备驱动。
源码位置:drivers/usb/gadet/
8.Ram Console
为了提供调试功能,android 允许将调试日志信息写入这个设备,它是基于 RAM 的 buffer.
源码位置: drivers/staging/android/ram_console.c
9.Time Device
定时控制,提供了对设备进行定时控制的功能。
源码位置:drivers/staging/android/timed_output.c(timed_gpio.c)
10.Android Alarm
提供一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。
设备节点:/dev/alarm
源码位置:drivers/trc/alarm.c
Android 设备驱动
1. Framebuffer 帧缓存设备
Framebuffer 驱动在 Linux 中是标准的显示设备的驱动。对于 PC 系统,它是显卡的驱动 ; 对于嵌入式 SOC 处理器系统,它是 LCD 控制器或者其他显示控制器的驱动。它是一个字符设备,在文件系统中设备节点通常是 /dev/fbx 。 每个系统可以有多个显示设备 , 依次用 /dev/fbO 、 /dev/fb l
等来表示。在 Android 系统中主设备号为 29 ,次设备号递增生成。
Android 对 Framebuffer 驱动的使用方式是标准的 , 在 / dev / graphie / 中的 Framebuffer 设备节点由 init 进程自动创建 , 被 libui 库调用 。 Android 的 GUI 系统中 , 通过调用 Framebuffer 驱动的标准接口,实现显示设备的抽象。

Framebuff的结构框架和实现 :

linux LCD驱动(二)--FrameBuffer

Linux LCD驱动(四)--驱动的实现
2.Event输入设备驱动
Input 驱动程序是 Linux 输入设备的驱动程序 , 分为游戏杆 (joystick) 、 鼠标 (mouse 和 mice)和事件设备 (Event queue)3 种驱动程序。其中事件驱动程序是目前通用的程序,可支持键盘 、 鼠标、触摸屏等多种输入设备。 Input 驱动程序的主设备号是 l3 ,每一种 Input 设备从设备号占 用5 位 , 3 种从设备号分配是 : 游戏杆 0 ~ 61 ; Mouse 鼠标 33 ~ 62 ; Mice 鼠标 63 ; 事件设备 64 ~ 95 ,各个具体的设备在 misc 、 touchscreen 、 keyboard 等目录中。
Event 设备在用户空问使用 read 、 ioctl 、 poll 等文件系统的接口操作, read 用于读取输入信息, ioctl 用于获取和设置信息, poll 用于用户空间的阻塞,当内核有按键等中断时,通过在中断中唤醒内核的 poll 实现。

Event 输入驱动的架构和实现:
Linux设备驱动之——input子系统

3.ALSA音频驱动
高级 Linux 声音体系 ALSA(Advanced Linux Sound Architecture ) 是为音频系统提供驱动 的Linux 内核组件,以替代原先的开发声音系统 OSS 。它是一个完全开放源代码的音频驱动程序集 ,除了像 OSS 那样提供一组内核驱动程序模块之外 , ALSA 还专门为简化应用程序的编写提供相应的函数库,与 OSS 提供的基于 ioctl 等原始编程接口相比, ALSA 函数库使用起来要更加方便一些
利用该函数库,开发人员可以方便、快捷地开发出自己的应用程序,细节则留给函数库进行内部处理 。 所以虽然 ALSA 也提供了类似于 OSS 的系统接口 , 但建议应用程序开发者使用音频函数库,而不是直接调用驱动函数。
ALSA 驱动的主设备号为 116 ,次设备号由各个设备单独定义,主要的设备节点如下:
/ dev / snd / contmlCX —— 主控制 ;
/ dev / snd / pcmXXXc —— PCM 数据通道 ;
/ dev / snd / seq —— 顺序器;
/ dev / snd / timer —— 定义器。
在用户空问中 , ALSA 驱动通常配合 ALsA 库使用 , 库通过 ioctl 等接口调用 ALSA 驱动程序的设备节点。对于 AIJSA 驱动的调用,调用的是用户空间的 ALsA 库的接口,而不是直接调用 ALSA 驱动程序。
ALSA 驱动程序的主要头文件是 include / sound ./ sound . h ,驱动核心数据结构和具体驱动的注册函数是 include / sound / core . h ,驱动程序 的核心实现是 Sound / core / sound . c 文件。
ALSA 驱动程序使用下面的函数注册控制和设备:
int snd _ pcm _ new (struct snd _ card * card , char * id , int device , int playback _ count , int capture _ count , struct snd _ pcm ** rpcm) ;
int snd ctl _ add(struct snd _ card * card , struct snd _ kcontrol * kcontro1) ;
ALSA 音频驱动在内核进行 menuconfig 配置时 , 配置选项为 “ Device Drivers ” > “ Sound c ard support ” 一 > “ Advanced Linux Sound Architecture ” 。子选项包含了 Generic sound devices( 通用声音设备 ) 、 ARM 体系结构支持,以及兼容 OSS 的几个选项。 ALsA 音频驱动配置对应的文件是sound / core / Kconfig 。
Android 没有直接使用 ALSA 驱动,可以基于 A-LSA 驱动和 ALSA 库实现 Android Audio 的硬件抽象层; ALSA 库调用内核的 ALSA 驱动, Audio 的硬件抽象层调用 ALSA 库。
4.OSS音频驱动
OSS(Open Sound System开放声音系统)是 linux 上最早出现的声卡驱动。OSS 由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口。
OSS 是字符设备,主设备号14,主要包括下面几种设备文件:
1) /dev/sndstat
它是声卡驱动程序提供的简单接口,它通常是一个只读文件,作用也只限于汇报声卡的当前状态。(用于检测声卡)
2)/dev/dsp
用于数字采样和数字录音的设备文件。对于音频编程很重要。实现模拟信号和数字信号的转换。

3)/dev/audio
类似于/dev/dsp,使用的是 mu-law 编码方式。

4)/dev/mixer
用于多个信号组合或者叠加在一起,对于不同的声卡来说,其混音器的作用可能各不相同。

5)/dev/sequencer
这个设备用来对声卡内建的波表合成器进行操作,或者对 MIDI 总线上的乐器进行控制。
OSS 驱动所涉及的文件主要包括:
kernel/include/linux/soundcard.h
kernel/include/linux/sound.h 定义 OSS 驱动的次设备号和注册函数
kernel/sound_core.c OSS核心实现部分
5.V4l2视频驱动
V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。V4L2提供了很多访问接口,你可以根据具体需要选择操作方法。需要注意的是,很少有驱动完全实现了所有的接口功能。所以在使用时需要参考驱动源码,或仔细阅读驱动提供者的使用说明。
V4L2的主设备号是81,次设备号:0~255,这些次设备号里也有好几种设备(视频设备、Radio设备、Teletext、VBI)。
V4L2的设备节点: /dev/videoX, /dev/vbiX and /dev/radioX
Android 设备驱动(下)

MTD 驱动
Flash 驱动通常使用 MTD (memory technology device ),内存技术设备。
MTD 的字符设备:
/dev/mtdX
主设备号 90.
MTD 的块设备:
/dev/block/mtdblockX

主设备号 13.
MTD 驱动源码

drivers/mtd/mtdcore.c:MTD核心,定义MTD原始设备
drivers/mtd/mtdchar.c:MTD字符设备
drivers/mtd/mtdblock.c:MTD块设备
MTD 驱动程序是 Linux 下专门为嵌入式环境开发的新一类驱动程序。Linux 下的 MTD 驱动程序接口被划分为用户模块和硬件模块:
用户模块 提供从用户空间直接使用的接口:原始字符访问、原始块访问、FTL (Flash Transition Layer)和JFS(Journaled File System)。

硬件模块 提供内存设备的物理访问,但不直接使用它们,二十通过上述的用户模块来访问。这些模块提供了闪存上读、写和擦除等操作的实现。

蓝牙驱动

在 Linux 中,蓝牙设备驱动是网络设备,使用网络接口。
Android 的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权, 所以Android 框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。

蓝牙协议部分头文件:
include/net/bluetooth/hci_core.h
include/net/bluetooth/bluetooth.h
蓝牙协议源代码文件:
net/bluetooth/*
蓝牙驱动程序部分的文件:
drivers/bluetooth/*

蓝牙的驱动程序一般都通过标准的HCI控制实现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特率等基础设置。比如CSR的芯片一般通过BCSP协议完成最初的初始化配置,再激活标准HCI控制流程。对Linux来说,一旦bluez可以使用HCI与芯片建立起通信(一般是hciattach + hciconfig),便可以利用其上的标准协议(SCO, L2CAP等),与蓝牙通信,使其正常工作了。

WLAN 设备驱动(Wi-Fi)(比较复杂我面会专门写个wifi分析)

在linux中,Wlan设备属于网络设备,采用网络接口。
Wlan在用户空间采用标准的socket接口进行控制。
WiFi协议部分头文件:
include/net/wireless.h
WiFi协议部分源文件:
net/wireless/*
WiFi驱动程序部分:
drivers/net/wireless/*

‘拾’ 驱动如何卸载Android Device,电脑上装的刷机驱动

这只是软件卸载就行,你用360软件管理去找到卸载了~

阅读全文

与androiddevice驱动相关的资料

热点内容
解压小熊手机壳 浏览:345
成都市区建成面积算法 浏览:660
智能家居单片机 浏览:97
买男装用什么app好 浏览:855
文件夹合并了怎么拆开 浏览:259
波段副图源码无未来函数 浏览:88
livecn服务器地址 浏览:259
程序员这个工作真的很吃香吗 浏览:846
程序员和数学分析师待遇 浏览:680
压缩气弹簧怎么拆 浏览:322
华为公有云服务器添加虚拟ip 浏览:211
程序员和运营哪个累 浏览:26
抖音安卓信息提示音怎么设置 浏览:456
光速虚拟机的共享文件夹 浏览:251
程序员培训机构发的朋友圈真实性 浏览:744
天干地支简单算法 浏览:299
下载个压缩文件 浏览:300
普通人电脑关机vs程序员关机 浏览:630
米酷建站源码 浏览:115
氢气app怎么搜搭配 浏览:619