玩转BLE(2)_使用bluepy扫描BLE的广播数据

作者:wowo 发布于:2016-5-19 15:17 分类:蓝牙

在linux平台下,bluez是一个很不错的软件,提供了很多基于命令行的测试工具,如hciconfig、hcitool、hcidump、bluetoothctl等。利用这些工具,我们可以方便的测试、demo各种蓝牙功能。例如,在“玩转BLE(1)_Eddystone beacon”中,我们利用hcitool命令,演示了将手机变成一个Beacon设备的神奇效果。

Beacon的演示,从本质上看,是BLE Advertising(广播)功能的测试和验证。自然而然的,我们会好奇:怎么接收这些广播数据呢(其实就是BLE Scanning功能)?这就是本文要介绍的内容。

虽然hcitool(以及后来的bluetoothctl)可以进行简单的LE scan操作,但返回的结果仅包括简单的地址和名称,显然无法满足我们的需求(要知道,BLE的广播数据可能包含其它内容哦,如我们的Beacon演示)。怎么办呢?不着急,强大的python出马了。

阅读全文>>

标签: 蓝牙 Bluetooth BLE scan bluepy advertising

评论(15) 浏览(38260)

X-002-HW-S900芯片boot from USB有关的硬件描述

作者:wowo 发布于:2016-5-12 22:01 分类:X Project

本文将以S900芯片[1]为例,介绍和“【任务1】启动过程-Boot from USB有关的硬件行为。其它人可以借鉴该文档,描述自己所使用平台的硬件特性,以完成该任务。

为了方便操作,这里以“填空题”的形式,给出我们关心的key point,只要我们能够把这些填空题完成,就可以放心的去coding了。题目如下:

1)CPU上电后,从哪种设备(                )的哪个地址(                )开始执行。

2)用(                )方式,可以让CPU进入USB download(或者UART download)模式。

3)进入USB download之后,设备使用哪个USB接口(        )和主机通信。

4)进入download模式后,哪一段地址范围(通常为SRAM)可以用来执行程序:(                )~(                ),size有多大(                )

5)用什么协议(                )可以通过USB将bin文件上传到指定的地址。

6)用什么协议(                )可以让CPU跳转到到指定地址继续执行。

注1:Boot这一块的资料,国内的IC设计厂商给出的资料都是语焉不详,从哪里得到有用的信息,是一个相当困难的事情。大家只能各显神通了。

阅读全文>>

标签: USB s900 hw boot

评论(18) 浏览(14005)

玩转BLE(1)_Eddystone beacon

作者:wowo 发布于:2016-4-29 22:50 分类:蓝牙

你相信两条命令就可以把自己的破手机变成一个Beacon节点吗?不相信的话就接着往下看吧。

通过前几篇“蓝牙协议分析”相关的文章,特别是“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”,相信大家对BLE协议栈已经有了基本的认识。在继续后续的分析之前,我们有必要换个视角,从应用的角度,以“玩”的心态,学习并理解BLE的工作原理,并作为后续分析文章的引子和入口。这就是撰写“玩转BLE”系列文章的缘由。

之所以起名为“玩转”,是因为我不会在这些文章中涉及任何的技术细节,仅仅是描述一些操作步骤,普及一些蓝牙BLE有关的使用场景。

另外,由于Linux平台使用的蓝牙协议栈是Bluez[1],Bluez协议栈提供了很多方便、灵活又强大的测试工具(如hcitool、gatttool等)。因此,简单起见,在写“玩转”系列文章的时候,我会尽可能的使用这些测试工具,而不引入复杂的编程手段。从另一个角度看,“玩转”系列文章也是BLE测试的一些步骤总结,方便自己和他人查阅。

本文是“玩转”系列文章的第一篇,以简单的两条hcitool命令,将自己的手机或者开发板变成一个BLE Beacon节点,进而体会BLE技术的简洁和神奇。

阅读全文>>

标签: BLE eddystone beacon hcitool

评论(16) 浏览(33850)

X-001-PRE-git介绍及操作记录

作者:wowo 发布于:2016-4-26 22:27 分类:X Project

git是一个高效、实用的版本管理工具,但并不是一个容易掌握的工具,刚接触的时候,总有一种云里雾里的感觉。因此本文将结合“X Project”的开发过程,记录git的操作记录,从实战的角度,理解并学习git。

注1:有关“X Project”的介绍和讨论,可参考“http://www.wowotech.net/forum/viewtopic.php?id=2”。

阅读全文>>

标签: git remote push origin commit

评论(17) 浏览(15154)

X-000-PRE-开发环境搭建

作者:wowo 发布于:2016-4-23 20:20 分类:X Project

本文是“X Project”的第一篇文章,介绍怎么从零开始搭建“X Project”的开发环境(同样适用于其它的嵌入式Linux开发)。通过该过程,可以使读者对嵌入式Linux开发的基本流程有一个简单的了解,以达到“知其然、知其所以然”的目的。

注1:有关“X Project”的介绍和讨论,可参考“http://www.wowotech.net/forum/viewtopic.php?id=2”。

阅读全文>>

标签: x project git gerrit build environment

评论(31) 浏览(16290)

蓝牙协议分析(4)_IPv6 Over BLE介绍

作者:wowo 发布于:2016-4-9 16:44 分类:蓝牙

蓝牙是个奇葩的家伙:它总是以后来者的身份出现,很喜欢打仗,而且还不落下风(有点像某讯的风格)。90年代末期和Wi-Fi的无线标准之争如此,当前和802.15.4系(ZigBee、RF4CE、Thread等)的IoT之争,也如此。

90年代末期,蓝牙刚出道的时候,就曾叫嚣着把Wi-Fi(802.11)从地球上抹去。反过来,1999年Wi-Fi 802.11b标准发布后,也宣称会把蓝牙干掉。最终,二者划江而治,瓜分了天下,Wi-Fi占据了家庭和办公室中的电脑网络,而蓝牙成为了广受欢迎的电脑和外设之间的连通性工具。

与此同时,在IoT的战场上,以ZigBee(2001年)为代表的802.15.4技术,苦心经营近15年,依旧不愠不火、默默无闻,而蓝牙BLE技术问世(2010年)至今,短短5年左右的时间,已经红遍大江南北,装机量爆棚。于是,硝烟再起。

标准之争,不是本文的议题,我们要思考的问题是:蓝牙有何长处,可以支撑它四处征战?答案是“灵活性”。本文将以用于支持IPv6的IPSP(Internet Protocol Service Profile)为例,说明这个特性。

阅读全文>>

标签: BLE ipv6 ipss ipsp

评论(5) 浏览(28536)

Linux I2C framework(3)_I2C consumer

作者:wowo 发布于:2016-3-23 22:05 分类:通信类协议

本文从I2C consumer的角度,介绍怎么在linux中,利用I2C framework提供的接口,编写I2C slave device的驱动程序。

阅读全文>>

标签: Linux I2C consumer slave

评论(14) 浏览(20045)

蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

作者:wowo 发布于:2016-3-12 22:32 分类:蓝牙

通过“蓝牙协议分析(2)_协议架构”的介绍,大家对蓝牙协议栈应该有了简单的了解,但是,肯定还有“似懂非懂、欲说还休”的感觉。有这种感觉太正常了,毕竟蓝牙协议是一个历史悠久又比较庞大的协议,没那么容易理解。

因此,本文将换个视角,从协议栈设计者的角度,思考如下问题:

为什么会有蓝牙协议栈(Why)?

怎样实现蓝牙协议栈(How)?

蓝牙协议栈的最终样子是什么(What)?

另外,我们知道,当前的蓝牙协议包含BR/EDR、AMP、LE三种技术,为了降低复杂度,本文将focus在现在比较热门的BLE(Bluetooth Low Energy)技术上(物联网嘛!),至于BR/EDR和AMP,触类旁通即可。

阅读全文>>

标签: Bluetooth BLE l2cap gap 蓝牙低功耗 att gatt

评论(50) 浏览(91340)

Linux I2C framework(2)_I2C provider

作者:wowo 发布于:2016-2-26 22:49 分类:通信类协议

本文从Provider的角度,介绍怎么借助I2C framework管理I2C相关的SOC资源。换句话说,就是怎么编写I2C controller驱动。

阅读全文>>

标签: Linux driver I2C

评论(13) 浏览(21046)

Linux I2C framework(1)_概述

作者:wowo 发布于:2016-2-14 22:01 分类:通信类协议

I2C协议是嵌入式系统中广泛使用的一类通信协议,主要用于CPU和各种外设之间的低速数据通信。Linux kernel使用I2C framework抽象、管理相应的资源,并以各种形式,向各类使用者提供API。另外,作为总线(bus)的一种,I2C framework的实现体现了linux设备模型的精髓,值得研究与学习。这就是攥写“Linux I2C framework”系列文章的缘由和目的。

按照分析各类framework的老规矩,蜗蜗会从4个角度分4篇文章介绍I2C framework:

1)Linux I2C framework的整体介绍,包括基础知识、软件框架、API汇整等。就是本文。

2)从Provider的角度,介绍怎么借助I2C framework管理I2C相关的SOC资源。换句话说,就是怎么编写一个I2C driver。具体可参考“Linux I2C framework(2)_I2C provider”。

3)从Consumer的角度,介绍I2C framework为使用者提供了哪些功能、哪些API,以及怎样利用I2C framework编写程序。具体可参考“Linux I2C framework(3)_I2C consumer”。

4)从内部实现的角度,分析I2C framework的实现逻辑。具体可参考“Linux I2C framework(4)_I2C core”。

阅读全文>>

标签: Linux Architecture framework I2C

评论(20) 浏览(25943)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog