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

评论(1) 浏览(17615)

页面回收的基本概念

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

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

阅读全文>>

标签: 页面回收

评论(1) 浏览(13635)

/proc/meminfo分析(一)

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

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

阅读全文>>

标签: meminfo

评论(18) 浏览(28302)

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

评论(5) 浏览(27014)

Dynamic DMA mapping Guide

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

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

阅读全文>>

标签: dma Mapping

评论(8) 浏览(54265)

CMA模块学习笔记

作者:linuxer 发布于:2017-6-28 18:29 分类:内存管理

本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文。

学习的基本方法是这样的:一开始,我自己先提出了若干的问题,然后带着这些问题查看网上的资料,代码,最后整理形成这样以问题为导向的index,顺便也向笨叔叔致敬。笨叔叔写了一本书叫做《奔跑吧Linux内核》,采用了问答的方式描述了4.x Linux内核中的进程管理、内存管理,同步和中断子系统。7月将和大家见面,敬请期待。

阅读本文最好手边有一份linux source code,我使用的是4.4.6版本。

阅读全文>>

标签: Memory CMA Contiguous Allocator

评论(16) 浏览(42862)

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

评论(7) 浏览(59944)

为什么会有文件系统(二)

作者:驴肉火烧 发布于:2017-6-27 21:06 分类:文件系统

距我将全套盗墓笔记成功保存在8MB空间里已经过去了19天58分钟32秒,我渐渐发觉更高、更快、更强的绝不限于奥运精神,也充分体现了人类贪婪的本质,无尽的需求催生出这光怪陆离的大千世界。

就在今天下午,我得到一个通知,要么继续使用连续的存储空间,但是只能有4MB,要么去使用不连续的存储空间,总量可以仍然是8MB,那一刻,我的内心反而是平静的,因为我知道,这就是现实,一个不够优秀的系统是无法满足各种刁钻的需求的,并且我并不想丢掉一半的盗墓笔记,所以我必须使用不连续的存储空间,一个不算坏的消息是,就算是不连续,但是每块最小也有2048字节,并且连续的存储空间是2048字节对齐的,还有什么好说的,撸起袖子加油干,这很2017。

阅读全文>>

标签: 文件系统

评论(13) 浏览(13479)

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

评论(5) 浏览(23281)

Linux的时钟

作者:linuxer 发布于:2017-5-17 18:55 分类:时间子系统

时钟或者钟表(clock)是一种计时工具,每个人都至少有一块,可能在你的手机里,也可能佩戴在你的手腕上。如果Linux也是一个普通人的话,那么她的手腕上应该有十几块手表,包括:CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_PROCESS_CPUTIME_ID、CLOCK_THREAD_CPUTIME_ID、CLOCK_MONOTONIC_RAW、CLOCK_REALTIME_COARSE、CLOCK_MONOTONIC_COARSE、CLOCK_BOOTTIME、CLOCK_REALTIME_ALARM、CLOCK_BOOTTIME_ALARM、CLOCK_TAI。本文主要就是介绍Linux内核中的形形色色的“钟表”。

阅读全文>>

标签: clock

评论(26) 浏览(22375)

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