作者:wowo · 发布于 2017-12-18 16:18
· USB
从1996年1月USB1.0正式发布至今(2017年9月 USB3.2发布),USB已经走过了21个年头。在这21年的时间了,USB标准化组织( USB Implementers Forum,USB-IF)折腾出来了各式各样、五花八门的接口形态:Type A、Type A SuperSpeed、Type B、Type B SuperSpeed、Mini-A、Mini-B、Micro-A、Micro
作者:linuxer · 发布于 2017-12-11 17:59
· 进程管理
本文主要描述了主调度器(schedule函数)中的同步处理。
作者:linuxer · 发布于 2017-11-17 15:47
· 内存管理
数学大师陈省身有一句话是这样说的:了解历史的变化是了解这门学科的一个步骤。今天,我把这句话应用到一个具体的Linux模块:了解逆向映射的最好的方法是了解它的历史。本文介绍了Linux内核中的逆向映射机制如何从无到有,如何从笨重到轻盈的历史过程,通过这些历史的演进过程,希望能对逆向映射有更加深入的理解。
作者:wowo · 发布于 2017-11-09 22:37
· 内存管理
内存(memory)在Linux系统中是一种牵涉面极广的资源,上至应用程序、下至kernel和driver,无不为之魂牵梦绕。加上它天然的稀缺性,导致内存管理(Memory Management,简称MM)是linux kernel中非常重要又非常复杂的一个子系统。 重要性就不多说了,Kernel自有分寸。关于复杂性(鉴于Linux kernel优秀的抽象能力),应该不会被普通人(Linux系统的
作者:wowo · 发布于 2017-10-13 22:20
· 内存管理
我们在那些需要和用户空间交互大量数据的子系统(例如MMC [1] 、Video、Audio等)中,经常看到scatterlist的影子。对我们这些“非英语母语”的人来说,初见这个词汇,脑袋瞬间就蒙圈了。scatter可翻译成“散开、分散”,list是“列表”的意思,因而scatterlist可翻译为“散列表”。“散列表”又是什么?太抽象了! 之所以抽象,是因为这个词省略了主语----物理内存(Ph
作者:wowo · 发布于 2017-09-27 22:27
· X Project
我们在[1][2]中提到过,鉴于gpio的特殊性,pinctrl subsystem特意留了一个后门(gpio range),gpio driver可以通过这个后门直接向pinctrl subsystem申请将某个pin用作gpio功能。本文将根据一个简单的示例,介绍这个后门的使用方法,以加深对相关机制的理解。 注1:本文的测试方法和[3]中的一致,即:通过gpiolib sysfs api控制L
作者:smcdef · 发布于 2017-09-24 11:08
· 统一设备模型
通过linuxer发表的三篇设备树的文章,我想你应该对设备已经有一个非常充分的认识了。本篇文章即作为一篇Device Tree的总结性文章,同时也作为linuxer文章的 补充。 本篇文章曾发表在Linuxer公众号,链接为 : http://mp.weixin.qq.com/s/OX-aXd5MYlE_YoZ3p32qWA
作者:wowo · 发布于 2017-09-13 22:18
· X Project
本文将基于本站GPIO subsystem [1] 相关的文章,结合” X Project ”的开发过程,实现一个简单的gpio driver,并利用gpiolib提供的sysfs api进行简单的测试,进而加深对gpio相关概念的理解。 注1:本文后续的描述,kernel基于本站“ X Project ”所使用的kernel版本,硬件基于 ” X Project ”所使用的“Bubbugum-9
作者:wowo · 发布于 2017-09-07 19:49
· 蓝牙
注1:此SM是Security Manager的缩写,非彼SM,大家不要理解歪了! 书接上文,我们在“ 蓝牙协议分析(10)_BLE安全机制之LE Encryption ”中介绍了BLE安全机制中的终极武器----数据加密。不过使用这把武器有个前提,那就是双方要共同拥有一个加密key(LTK,Long Term Key)。这个key至关重要,怎么生成、怎么由通信的双方共享,关系到加密的成败。因此蓝
作者:wowo · 发布于 2017-09-01 10:46
· 电源管理子系统
大家都知道,复杂IC内部有很多具有独立功能的硬件模块,例如CPU cores、GPU cores、USB控制器、MMC控制器、等等,出于功耗、稳定性等方面的考虑,有些IC在内部为这些硬件模块设计了复位信号(reset signals),软件可通过寄存器(一般1个bit控制1个硬件)控制这些硬件模块的复位状态。 Linux kernel为了方便设备驱动的编写,抽象出一个简单的软件框架----rese