Device Tree(四):文件结构解析

作者:smcdef 发布于:2017-9-24 11:08 分类:统一设备模型

通过linuxer发表的三篇设备树的文章,我想你应该对设备已经有一个非常充分的认识了。本篇文章即作为一篇Device Tree的总结性文章,同时也作为linuxer文章的补充。本篇文章曾发表在Linuxer公众号,链接为

http://mp.weixin.qq.com/s/OX-aXd5MYlE_YoZ3p32qWA

阅读全文>>

标签: 设备树

评论(17) 浏览(52960)

X-025-KERNEL-Linux gpio driver的移植之基本功能

作者:wowo 发布于:2017-9-13 22:18 分类:X Project

本文将基于本站GPIO subsystem[1]相关的文章,结合”X Project”的开发过程,实现一个简单的gpio driver,并利用gpiolib提供的sysfs api进行简单的测试,进而加深对gpio相关概念的理解。

注1:本文后续的描述,kernel基于本站“X Project”所使用的kernel版本,硬件基于 ”X Project”所使用的“Bubbugum-96”平台[2]

阅读全文>>

标签: sysfs driver GPIO porting gpiolib

评论(2) 浏览(22274)

蓝牙协议分析(11)_BLE安全机制之SM

作者:wowo 发布于:2017-9-7 19:49 分类:蓝牙

注1:此SM是Security Manager的缩写,非彼SM,大家不要理解歪了!

书接上文,我们在“蓝牙协议分析(10)_BLE安全机制之LE Encryption”中介绍了BLE安全机制中的终极武器----数据加密。不过使用这把武器有个前提,那就是双方要共同拥有一个加密key(LTK,Long Term Key)。这个key至关重要,怎么生成、怎么由通信的双方共享,关系到加密的成败。因此蓝牙协议定义了一系列的复杂机制,用于处理和加密key有关的操作,这就是SM(Security Manager)。

另外,在加密链路建立之后,通信的双方可以在该链路上共享其它的key(例如在“蓝牙协议分析(9)_BLE安全机制之LL Privacy”中提到的IRK),SM也顺便定义了相应的规范。

阅读全文>>

标签: 蓝牙 Bluetooth BLE SMP 配对 pairing 鉴权 authentication security

评论(17) 浏览(86539)

Linux reset framework

作者:wowo 发布于:2017-9-1 10:46 分类:电源管理子系统

大家都知道,复杂IC内部有很多具有独立功能的硬件模块,例如CPU cores、GPU cores、USB控制器、MMC控制器、等等,出于功耗、稳定性等方面的考虑,有些IC在内部为这些硬件模块设计了复位信号(reset signals),软件可通过寄存器(一般1个bit控制1个硬件)控制这些硬件模块的复位状态。

Linux kernel为了方便设备驱动的编写,抽象出一个简单的软件框架----reset framework,为reset的provider提供统一的reset资源管理手段,并为reset的consumer(各个硬件模块)提供便捷、统一的复位控制API。

reset framework的思路、实现和使用都非常简单、易懂(参考kernel有关的API--include/linux/reset-controller.h、include/linux/reset.h可知),不过麻雀虽小,五脏俱全,通过它可以加深对Linux kernel的设备模型、驱动框架、分层设计、provider/consumer等设计思想的理解,因此本文将对其进行一个简单的罗列和总结。

阅读全文>>

标签: Linux Kernel 内核 framework reset

评论(0) 浏览(15866)

页面回收的基本概念

作者:linuxer 发布于:2017-8-25 19:01 分类:内存管理

本文主要介绍了一些page reclaim机制中的基本概念。这份文档其实也可以看成阅读ULK第17章第一小节的一个读书笔记。虽然ULK已经读了很多遍,不过每一遍还是觉得有收获。Linux内核虽然不断在演进,但是页面回收的基本概念是不变的,所以ULK仍然值得内核发烧友仔细品味。

阅读全文>>

标签: 页面回收

评论(1) 浏览(12384)

/proc/meminfo分析(一)

作者:linuxer 发布于:2017-8-17 19:27 分类:内存管理

本文主要分析/proc/meminfo文件的各种输出信息的具体含义。

阅读全文>>

标签: meminfo

评论(18) 浏览(25650)

linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合

作者:wowo 发布于:2017-8-10 22:17 分类:GPIO子系统

按理说,kernel中gpio subsystem和pinctrl subsystem的关系应该非常清楚:

pinctrl subsystem管理系统的所有管脚,GPIO是这些管脚的用途之一,因此gpio subsystem应该是pinctrl subsystem的client(也可叫做backend、consumer),基于pinctrl subsystem提供的功能,处理GPIO有关的逻辑。 

不过,实际情况却不是这么简单,它们之间有着较为紧密的耦合(看一看kernel中pinctrl和gpio相关的实现就知道了)。本文将对这种耦合进行一个简单的分析,解释为什么要这样设计。

阅读全文>>

标签: GPIO subsystem pinctrl range

评论(4) 浏览(25158)

《奔跑吧,Linux内核》已经上架预售了

作者:linuxer 发布于:2017-8-5 12:10 分类:技术漫谈

不想当将军的士兵不是好士兵,不想写进程调度器的麻醉师不是好的麻醉师,不想钻研内核的FAE不是好的FAE。 笨叔叔就是这样的一个有点特别的FAE,写了一本书叫做《奔跑吧Linux内核》,每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。而作为FAE,每次被客户吊打之后,总是想知道Linux的内核机制是什么,吊打久了,各种内核的脉络也就慢慢清晰了。在无数的不眠之夜以后,全球首本基于4.0内核的书籍诞生了。人们常说喜剧的内核是悲剧,那么Linux的内核呢?或许笨叔叔可以给你答案……

阅读全文>>

标签: 奔跑吧 Linux内核

评论(15) 浏览(19829)

X-024-OHTHERS-在windows平台下使用libusb

作者:wowo 发布于:2017-7-23 22:21 分类:X Project

话说我们“X Project”的第一个任务就是通过USB将主机上的Image文件下载到开发板的Ram中执行(参考[1]中有关的内容),为此我们在host中porting了一个简单的应用程序(称作DFU[2]),负责和开发板ROM中的代码交流,下载并执行Image文件。为了方便,该应用程序使用libusb[3]进行USB有关的操作。

libusb不止使用起来简单,还有一个极大的优点,就是“跨平台”的特性。我们之前的例子[4]都是在Linux平台下操作的,最近由于win10内置了Ubuntu,Linux平台有关的开发工作,基本上都可以在这里完成了,因此就不需要费时、费神地切换到纯Linux环境下工作了。

不过呢,Win10的Ubuntu好是好,但没法像纯Linux系统那样支持USB设备,DFU有关的工作就无法在这里正常工作,因此就发挥libusb的特性,把“X Project” DFU[2]有关的代码在Windows下跑起来,也算感受一下“跨平台”的魅力。具体步骤如下。

阅读全文>>

标签: MinGW libusb windows zadig dfu

评论(1) 浏览(19340)

Dynamic DMA mapping Guide

作者:linuxer 发布于:2017-7-20 19:23 分类:内存管理

这是一篇指导驱动工程师如何使用DMA API的文档,为了方便理解,文档中给出了伪代码的例程。另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在DMA API的描述方面是一致的。

阅读全文>>

标签: dma Mapping

评论(8) 浏览(46538)

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