Linux时间子系统系列文章之目录

作者:linuxer 发布于:2014-12-23 9:59 分类:时间子系统

本文对近期要撰写的Linux时间子系统的相关文章进行规划。

另外,需要说明的是这里的时间概念就是牛顿经典力学中的时间,一般而言,当进入微观领域(例如原子或者各种基本粒子级别)或者宏观领域(整个银河系啊、宇宙大爆炸什么的)的时候,时间变成一个相对的概念,不过还是让物理学家去研究吧。

阅读全文>>

标签: Linux时间子系统

评论(25) 浏览(33620)

Linux电源管理(12)_Hibernate功能

作者:Physh 发布于:2014-12-22 11:51 分类:电源管理子系统

本文简要分析了Linux一种Hibernation实现机制——Swap Suspend的是实现方法。本文会尽量从机制出发,不会深入代码分析,如果您感兴趣,可以参照附件给出的流程图,阅读内核代码,相信您也可以找到其中乐趣。

A. Swap Suspend的原因

B. 如何实现STF

C. Swap Suspend的关键

阅读全文>>

标签: Kernel hibernation

评论(23) 浏览(24989)

Linux cpuidle framework(1)_概述和软件架构

作者:wowo 发布于:2014-12-17 23:04 分类:电源管理子系统

在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何时停、怎么停,却要仔细斟酌,因为实际的软硬件环境是非常复杂的。

我们回到Linux kernel上,Linux系统中,CPU被两类程序占用:一类是进程(或线程),也称进程上下文;另一类是各种中断、异常的处理程序,也称中断上下文。

进程的存在,是用来处理事务的,如读取用户输入并显示在屏幕上。而事务总有处理完的时候,如用户不再输入,也没有新的内容需要在屏幕上显示。此时这个进程就可以让出CPU,但会随时准备回来(如用户突然有按键动作)。同理,如果系统没有中断、异常事件,CPU就不会花时间在中断上下文。

在Linux kernel中,这种CPU的无所事事的状态,被称作idle状态,而cpuidle framework,就是为了管理这种状态。

注:cpuidle framework系列文章会以ARM64作为示例平台,由于ARM64刚刚发布不久,较早版本的kernel没有相关的代码,因此选用了最新的3.18-rc4版本的kernel。

阅读全文>>

标签: Linux framework cpuidle

评论(42) 浏览(65520)

关于spin_lock的问题

作者:Physh 发布于:2014-12-12 14:10 分类:Linux内核分析

spin_lock的分析文章Google一下有很多,这里只是分享一些关于spin_lock思考过的问题。

阅读全文>>

标签: spin_lock

评论(4) 浏览(20858)

Linux时间子系统之(十二):periodic tick

作者:linuxer 发布于:2014-12-11 18:59 分类:时间子系统

tick device layer是clock event core模块的用户,tick device layer利用clock event core模块提供的接口实现了各种tick device功能:周期性tick、tickless mode、broadcast tick等。本文从最简单的周期性tick开始,描述tick device的基本概念以及周期性tick的工作原理。

阅读全文>>

标签: 周期性tick periodic tick

评论(7) 浏览(25509)

ARM WFI和WFE指令

作者:wowo 发布于:2014-12-10 22:43 分类:ARMv8A Arch

蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚。

WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture定义,由ARM core实现。听着挺简单,但怎么会有两个指令?它们的区别是什么?使用场景是什么?深究起来,还挺有意思,例如:能想象WFE和spinlock的关系吗?

阅读全文>>

标签: Architecture aarch64 ARM wfe wfi

评论(44) 浏览(108779)

ARM概念梳理:Architecture, Core, CPU,SOC

作者:wowo 发布于:2014-12-9 22:54 分类:ARMv8A Arch

本文简单梳理一下ARM有关的概念,包括ARM architecture、ARM core、ARM CPU(或MCU)以及ARM Soc。我们这些以ARM平台为主的嵌入式工程师,几乎每天都会和这些概念打交道,也似乎非常理解它们。但仔细想想,却有些说不清道不明的感觉,因而有必要整理一下思路,也就顺手记录下来了。

阅读全文>>

标签: Architecture ARM core soc

评论(11) 浏览(29367)

Linux时间子系统之(十六):clockevent

作者:linuxer 发布于:2014-12-9 19:56 分类:时间子系统

clockevent模块的代码位于linux/kernel/time/clockevents.c,是用来管理系统中的能够触发中断的timer硬件资源的一个模块,该模块的功能分成四个部分:

1)向上层的其它driver(我们称之clock event user)提供操作clock event的通用API。

2) 实现clock event控制的通用逻辑,这部分和硬件无关,我们也称之clock event core(其实内核有各种core、input core,USB core,I2C core等等,概念是类似)。 有了它,clock event user(例如high resolution timer)再也不用担心底层的硬件细节了,特别是底层的timer硬件是arch相关的时候(不要怀疑,linux kernel有过这样的时代)。

3)将和硬件相关的clock event控制逻辑封装成操作函数集,并向底层clockevent chip driver提供注册接口。这样,clock event控制的通用逻辑就可以直接调用底层操作函数,进行具体的硬件操作。

4)实现sysfs用户空间接口。

本文将分成4个章节,分别描述这四个部分的代码逻辑。

阅读全文>>

标签: clockevent

评论(31) 浏览(29075)

为什么会有“ARMv8A Architecture”这个分类

作者:wowo 发布于:2014-12-6 15:40 分类:ARMv8A Arch

2013年9月11日(是的,911),在ARM公司发布UEFI 64-bit之后,ARM社区release了ARMv8A版本的ARM Architecture Reference Manual(我已经下载,感兴趣的同学可以找我要)。在release note中,作者给出了这样一个设问句:“Why develop ARMv8-A?”。本文也效仿一下,以自问自答的形式,说明为什么会在博客中增加这样一个分类,以及期望达成的目的。

阅读全文>>

标签: Architecture arm64 aarch64 armv8-a

评论(16) 浏览(18123)

kobject在字符设备中的使用

作者:linuxer 发布于:2014-12-4 18:14

关于kobject的基本概念的描述请参考Linux设备模型(2)_Kobject中的描述。本文主要以字符设备为例,描述内核中使用kobject的一个场景,以便加深对kobject这个内核神器的理解。

阅读全文>>

标签: kobject cdev

评论(6) 浏览(14922)

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