linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
作者:wowo 发布于:2017-6-27 22:30 分类:GPIO子系统
本站之前的三篇文章[1][2][3]介绍了pin controller(对应的pin controller subsystem)、gpio controller(对应的GPIO subsystem)有关的基本概念,包括pin multiplexing、pin configuration等等。本文将基于这些文章,单纯地从pin controller driver的角度(屏蔽掉pinctrl core的实现细节),理解pinctrl subsystem的设计思想,并掌握pinctrl驱动的移植和实现方法。标签: Linux driver GPIO subsystem pinctrl
Linux DMA Engine framework(3)_dma controller驱动
作者:wowo 发布于:2017-5-18 21:56 分类:Linux内核分析
本文将从provider的角度,介绍怎样在linux kernel dmaengine的框架下,编写dma controller驱动。标签: driver controller framework dma engine
Linux DMA Engine framework(2)_功能介绍及解接口分析
作者:wowo 发布于:2017-5-2 22:47 分类:Linux内核分析
从我们的直观感受来说,DMA并不是一个复杂的东西,要做的事情也很单纯直白。因此Linux kernel对它的抽象和实现,也应该简洁、易懂才是。不过现实却不甚乐观(个人感觉),Linux kernel dmaengine framework的实现,真有点晦涩的感觉。为什么会这样呢?
如果一个软件模块比较复杂、晦涩,要么是设计者的功力不够,要么是需求使然。当然,我们不敢对Linux kernel的那些大神们有丝毫怀疑和不敬,只能从需求上下功夫了:难道Linux kernel中的driver对DMA的使用上,有一些超出了我们日常的认知范围?
要回答这些问题并不难,将dmaengine framework为consumers提供的功能和API梳理一遍就可以了,这就是本文的目的。当然,也可以借助这个过程,加深对DMA的理解,以便在编写那些需要DMA传输的driver的时候,可以更游刃有余。
标签: Linux Kernel 内核 API dma engine
Linux DMA Engine framework(1)_概述
作者:wowo 发布于:2017-3-30 22:01 分类:Linux内核分析
前面文章介绍“Linux MMC framework”的时候,涉及到了MMC数据传输,进而不可避免地遭遇了DMA(Direct Memory Access)。因而,择日不如撞日,就开几篇文章介绍Linux的DMA Engine framework吧。
本文是DMA Engine framework分析文章的第一篇,主要介绍DMA controller的概念、术语(从硬件的角度,大部分翻译自kernel的document[1])。之后,会分别从Provider(DMA controller驱动)和Consumer(其它驱动怎么使用DMA传输数据)两个角度,介绍Linux DMA engine有关的技术细节。
标签: Linux Kernel 内核 framework dma engine
蓝牙协议分析(10)_BLE安全机制之LE Encryption
作者:wowo 发布于:2017-3-28 11:52 分类:蓝牙
前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3]。说实话,在这危机四伏的年代,这两种“捂着脸讲话(其它人不知道是谁在讲话,因而不能插话、不能假传圣旨,但讲话的内容却听得一清二楚)”的方法,实在是小儿科。对于物联网的应用场景来说,要做到安全,就必须对传输的数据进行加密,这就是LE Encryption要完成的事情(当然,只针对面向连接的数据),具体请参考本文的介绍。标签: 蓝牙 Bluetooth BLE 安全 Encryption
玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据
作者:wowo 发布于:2017-3-11 11:42 分类:蓝牙
在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了):
物联网中的IOT设备有两个主要特点:
1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置、控制等功能)。
2)数量和种类繁多(消费者面对的可是数量众多的不同厂家、不同类型的设备)。基于这两个特点,手机等终端设备一般通过APP(或APK)对IOT设备进行控制,不同厂家的不同设备,通常需要不同的APP/APK。于是出现了这样的结果:
如果你家里有一个小米yeelight的床头灯,你需要安装一个yeelight的APP/APK;
如果你手上戴一个百度智能手环,你需要安装一个百度智能手环APP/APK;
如果你跑步时戴一个xxx运动蓝牙耳机,你需要安装一个xxx运动蓝牙耳机APP/APK;
如果你要骑摩拜单车,你需要安装一个摩拜单车APP/APK;
如果你也行骑一下优拜单车,你需要安装一个优拜单车APP/APK;
……(要列的话,我觉得永远都列不完,大家可以想象一下,这是不是一个灾难??)
既然有问题,肯定就有人试图解决,于是微信IoT、阿里小智、亚马逊IoT等等,互联网大佬们就各显神通了。最终谁能称霸天下,现在还不得而知,本文也不去讨论这些。
作为蓝牙BLE的介绍文章,本文将以微信IoT的“微信蓝牙精简协议”为例,通过“把一个蓝牙适配器模拟成微信计步器”,分别从BLE技术(怎样注册一个GATT service)和微信IoT(微信物联网平台的思路和想法)两个角度,窥一窥IoT江湖的冰山一角(权当开阔眼界了)。
标签: 蓝牙 Bluetooth BLE golang 微信 airsync iot
Linux MMC framework(2)_host controller driver
作者:wowo 发布于:2017-3-8 21:33 分类:通信类协议
本文是Linux MMC framework的第二篇,将从驱动工程师的角度,介绍MMC host controller driver有关的知识,学习并掌握如何在MMC framework的框架下,编写MMC控制器的驱动程序。同时,通过本篇文章,我们会进一步的理解MMC、SD、SDIO等有关的基础知识。标签: Linux Kernel 内核 driver mmc host
Linux MMC framework(1)_软件架构
作者:wowo 发布于:2017-1-10 22:24 分类:通信类协议
由[1]中MMC、SD、SDIO的介绍可知,这三种技术都是起源于MMC技术,有很多共性,因此Linux kernel统一使用MMC framework管理所有和这三种技术有关的设备。
本文将基于[1]对MMC技术的介绍,学习Linux kernel MMC framework的软件架构。
标签: Linux Kernel 内核 架构 Architecture framework mmc
X-022-OTHERS-git操作记录之合并远端分支的更新
作者:wowo 发布于:2017-1-2 22:26 分类:X Project
本文将以“X Project”的开发过程为例,介绍“合并远端分支的更新”的方法。事情的起因如下:
“X Project”是一个学习嵌入式Linux开发全过程的小项目,项目开始的时候,u-boot、linux kernel等代码,都是直接从官方仓库的当前状态获取的(具体可参考[2])。以u-boot为例,“X Project”的u-boot[3]是2016年4月23日从u-boot的官方仓库[1]拷贝而来的。
随着时间的推移,官方仓库可能有很多更新,例如修复bug、添加新功能等,在合适的时间点,需要将这些更新合并。下面就以“X Project”的u-boot为例,介绍合并的步骤。
标签: git remote u-boot merge denx add
MMC/SD/SDIO介绍
作者:wowo 发布于:2016-12-25 21:52 分类:基础技术
熟悉Linux kernel的人都知道,kernel使用MMC subsystem统一管理MMC、SD、SDIO等设备,为什么呢?到底什么是MMC?SD和SDIO又是什么?为什么可以用MMC统称呢?
在分析Linux kernel的MMC subsystem之前,有必要先介绍一些概念,以便对MMC/SD/SDIO有一个大致的了解,这就是本文的目的。
功能
最新评论
文章分类
随机文章
文章存档
- 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)