- 博客(22)
- 资源 (56)
- 收藏
- 关注
转载 [android源码分析]sdp Server的启动分析
SDP server是蓝牙启动过程中的一个非常重要部分。本文简单介绍一下这个函数的实现。[cpp] view plaincopyint start_sdp_server(uint16_t mtu, const char *did, uint32_t flags) { //这里传入的flags是SDP_SERVER_COMPAT //所以compat值是有效
2013-12-31 16:40:30 2236
转载 [android源码解析]bluetoothd默认初始化中main.conf的解析
上文我们从总体上把握了bluetoothd启动的流程,下面我们就具体的细节来详细分析一下,首先要看到的就是init_defaults,在它里面最重要也是最有意义的就是main.conf的解析了。我们通常需要修改某个配置就去修改main.conf中的内容,那么这些内容又是如何真正被配置呢?本文就来和你一一说来。2.2.1 默认的初始化简介这个函数会初始化一些默认的配置,在main.c
2013-12-31 16:39:17 3498
转载 [android源码分析]bluetoothd service的启动的总体流程分析
本篇文章将会从总体流程上解释一下每一个函数的意义,具体的每一个函数的解释将是一个很长的过程,后面的文章中我将会针对每一个有意义的函数来具体分析。在具体分析bluetoothdservice的启动之前,我们先来看一下bluetoothd service究竟是什么,他同样定义在init.rc中:servicebluetoothd /system/bin/bluetoothd -n
2013-12-31 16:38:40 3897
转载 [android源码分析]enable_native中的hci dev注册和up
2、enableNative的分析 enable Native是真正的蓝牙使能的函数,蓝牙打开的一系列操作都是通过他来真正实现的。可以认为,这个函数蓝牙使能的主干,其余几个方面都可以认为是旁枝末节而已,因此,无论如何,我们必须了解到这个函数真正的精髓所在。 先来看jni层究竟是如何实现这个函数的:[cpp] view plainc
2013-12-31 16:37:25 2628 1
转载 Android4.0中蓝牙适配器state machine(状态机)的分析
今天晓东和大家来一起看一下Android4.0中蓝牙适配器(Bluetooth Adapter)的状态机变化的过程。首先,我们需要了解一下,蓝牙适配器究竟有哪些状态,从代码可以清晰地看到(frameworks/base/core/java/android/server/bluetoothadapterstatemachine.java):[java] view plaincop
2013-12-31 16:34:33 4720 1
转载 Android启动之bluetooth
前一段时间我们分析了kernel中bluetooth的初始化操作,从这一章起,晓东将会和大家一起正式进入到Android中bluetooth的分析。毫无疑问,我们依然需要知道在Android启动的时候,蓝牙究竟有做些什么。 首先我们来回顾一下Android启动的一般流程,有人把它归结为4个步骤,分别为1)init进程启动;2)Native服务启动;3)System se
2013-12-31 16:30:41 4406 1
转载 Kernel中uart接口的bluetooth driver初始化分析
在前面几篇文章中,我们把kernel中bluetooth stack相关的初始化分析完成,今天晓东带大家来一起分析uart接口的bluetooth driver的初始化。首先,我们来到kernel/drivers/bluetooth目录,看hci_ldisc.c文件。又见到我们熟悉的module_init:module_init(hci_uart_init);好吧,动手来看吧:
2013-12-31 16:26:50 7286
转载 Kernel中Hid和Bnep的初始化
有了前面的L2CAP,RFCOMM的初始化分析,再来分析Hid和Bnep的代码就轻松很多了。基本来说,这两个protol没有太多的新意,直接看代码就可以看出来了。[cpp] view plaincopystatic int __init hidp_init(void) { int ret; BT_INFO("HIDP
2013-12-31 16:26:17 1805 1
转载 Kernel中rfcomm层的初始化
篇文章《kernel中bluetooth的初始化》一文中晓东和大家分享了HCI层,L2CAP层以及SCO层的初始化流程,今天晓东继续和大家一起来看rfcomm层的初始化流程。 在正式开始之前,我们先来看一下rfcomm层是什么,百度百科是这样介绍rfcomm的:“一个基于欧洲电信标准协会ETSI07.10规程的串行线性仿真协议。此协议提供RS232控制和状态信号,如基带上的
2013-12-31 16:24:45 3078 1
转载 kernel中bluetooth的初始化
我们大家都知道,Android其实是基于linux之上进行运行的。在Android系统的运行之初,首先是kernel层的一系列的初始化。今天晓东就先和大家来简单分析一下在开机之后,kernel中和bluetooth的初始化相关的内容有哪些。 我们仍然还是才kernel/net/bluetooth下面的代码开始查看,搜索一下initcall相关的内容也就只有在af_bluet
2013-12-31 16:13:12 3594 1
转载 Kernel中bluetooth相关的config选项
有了前几篇对bluetooth的初步了解,今天晓东就和大家正式开始bluetooth的代码阅读了。在开写这篇文章之前,晓东也很纠结,究竟该从哪里开始着手写相关的内容。最初的打算是准备从蓝牙的开关开始着手的,这是一条大家很好理解也很容易上手的路线。但后来好好想想,还是放弃了这样的想法,因为,我们的这次的系列文章准备稍微讲得深入一点,协议层是肯定要涉及的,而不是简单的浮在JNI之上去分析。所以,今天我
2013-12-31 16:10:31 5286
转载 Android4.0中Bluetooth的代码结构
也许在看了上一篇的《Android中bluetooth的架构》一文后,你已经有了强烈的想去动手看看源代码的冲动了吧?没错,看源码绝对是一个很好的理解方法,但是涉及到Bluetooth的源代码究竟在哪里呢?也许,有人很快就能够找到一些内容,但也许有同学还比较茫然,不知道究竟该去哪里阅读,没关系,这篇文章就由晓东来给您详细说一下在Android中Bluetooth的代码有哪些。
2013-12-31 16:05:29 1859
转载 Android中bluetooth的架构
既然我们想要系统地进行分析一下Android的bluetooth,那么就有必要首先来从总体架构上看一下bluetooth在Android中是处于哪些层次,做到手中有枪,心里不慌。Bluetooth从总体来看,基本的架构图如下: 这张图是我拷贝的网上的一份介绍bluetooth的ppt上,他应该也是出于某一份大牛之手,可惜的是我并没有能够找到具体的出处,若有人看到可以告诉我一
2013-12-31 15:55:49 3803
原创 Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发
一、Android Bluetooth现状在android官网可以了解到android4.2新增了部分新功能,但是对于BT熟悉的人或许开始头疼了,那就是Android4.2引入了一个新的蓝牙协议栈针。谷歌和Broadcom之间的合作,开发新的蓝牙协议栈,取代了基于堆栈的Bluez。因此市场上出现了老设备的兼容问题,很多蓝牙设备在android4.2手机上不能使用。N
2013-12-31 15:52:50 4155 1
原创 android中的/system/bin/input工具
input工具提供一种在终端输入命令来控制系统的方式# inputusage: input ... input text input keyevent input tap input swipe #input keyevent 4 //4 表示KEYCODE_BACK常用的几种事件:82 -->
2013-12-19 15:45:20 2535
转载 ARM Linux为什么要引进Device Tree
1. 原因 A lot of very similar C code to support each and every board. Linux kernel老的Probing机制 关键是: 要提供一个board file,用于registers SOC的各个设备. 要提供一
2013-12-18 17:01:34 3482
原创 linux 用户空间与内核空间——高端内存详解
摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本文旨在探讨内核空间的地址映射。 Linux内核地址空间划分通常32位Linux内核虚
2013-12-04 18:04:27 52126 7
转载 运行地址和加载地址
运行地址和加载地址 在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢? 加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般
2013-12-04 16:19:04 1837
转载 linux-3.2.36内核启动4-setup_arch中的内存初始化3(arm平台 bootmem_init源码分析)
void__init bootmem_init(void){ unsigned long min, max_low, max_high; max_low = max_high = 0; find_limits(&min, &max_low,&max_high);static void __init
2013-12-03 11:41:10 2118
转载 linux-3.2.36内核启动3-setup_arch中的内存初始化2(arm平台 分析建立页表)
又是一个国庆七天假,之前有很多打算可是到最后,只有linux愿意陪我。介绍pageing_init之前,我们了解几个定义pte_t 页表项pmd_t 页中间目录项pud_t 页上级目录pgd_t 页全局目录项我的arm平台#define PMD_SHIFT 21#define PGDI
2013-12-03 11:40:24 2739
转载 linux-3.2.36内核启动2-setup_arch中的内存初始化1(arm平台 分析高端内存和初始化memblock)
上一篇微博留下了这几个函数,现在我们来分析它们 sanity_check_meminfo(); arm_memblock_init(&meminfo, mdesc); paging_init(mdesc); request_standard_resources(mdesc); 在上一微博有展现根
2013-12-03 11:39:27 4669
转载 linux-3.2.36内核启动1-启动参数(arm平台 启动参数的获取和处理,分析setup_arch)
最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动。看的过程中总结了一点东西,希望可以帮助大家调试内核。当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人太多了,像这种内核启动的上古代码早就被人分析的彻彻底底。这注定我写的只能是烂微博了。为了此微博有存在的必要,我会显示内核启动打印的代码位置(用绿色表示)及出现错误打印的原因(用红色
2013-12-03 11:38:51 2760
Android核心分析
2011-12-25
佛山网通EPON的FTTH工程方案设计
2011-12-25
ARM---Cortex-A8处理器
2022-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人