玩转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
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设计厂商给出的资料都是语焉不详,从哪里得到有用的信息,是一个相当困难的事情。大家只能各显神通了。
玩转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
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
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
蓝牙协议分析(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)为例,说明这个特性。
Linux I2C framework(3)_I2C consumer
作者:wowo 发布于:2016-3-23 22:05 分类:通信类协议
本文从I2C consumer的角度,介绍怎么在linux中,利用I2C framework提供的接口,编写I2C slave device的驱动程序。蓝牙协议分析(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
Linux I2C framework(2)_I2C provider
作者:wowo 发布于:2016-2-26 22:49 分类:通信类协议
本文从Provider的角度,介绍怎么借助I2C framework管理I2C相关的SOC资源。换句话说,就是怎么编写I2C controller驱动。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”。
功能
最新评论
- wangjing
写得太好了 - wangjing
写得太好了! - DRAM
圖面都沒辦法顯示出來好像掛點了。 - Simbr
bus至少是不是还有个subsystem? - troy
@testtest:只要ldrex-modify-strex... - gh
Linux 内核在 sparse 内存模型基础上实现了vme...
文章分类
随机文章
文章存档
- 2025年4月(5)
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)