Fix-Mapped Addresses

作者:linuxer 发布于:2016-9-9 12:44 分类:内存管理

某天,wowo同学突然来了一句:如果要在start_kernel中点LED,ioremap在什么时间点才能调用呢?我想他应该是想通过点 LED灯来调试start_kernel之后的初始化的代码(例如DTB解析部分的代码)。那天,我们两个花了二十分钟的时间,讨论相关的问题,我觉得很 有意思,因此决定写fix mapped address这样的一份文档。

在汇编代码中,由于没有打开MMU,想怎么访问外设都很简单,直 接使用物理地址即可,然而,进入start kernel之后(打开了MMU),想要访问硬件都是那么的不方便,至少需要通过ioremap获取了虚拟地址之后才可以访问。但是,实际上,在内核的启 动的初始阶段,内存管理子系统还没有ready,ioremap还不能调用(在mm_init之后可以正常使用)。

实际上,这个需求是和 early ioremap模块相关,此外,还有一些其他的需求,内核合并了这些需求并提出了fix mapped address的概念。本文就是描述关于fix mapped address的方方面面,BTW,本文的代码来自4.4.6内核,体系结构相关的代码依然选择的是ARM64。

阅读全文>>

标签: fixmap

评论(9) 浏览(20377)

Linux内存模型

作者:linuxer 发布于:2016-8-31 12:01 分类:内存管理

在linux内核中支持3中内存模型,分别是flat memory model,Discontiguous memory model和sparse memory model。所谓memory model,其实就是从cpu的角度看,其物理内存的分布情况,在linux kernel中,使用什么的方式来管理这些物理内存。另外,需要说明的是:本文主要focus在share memory的系统,也就是说所有的CPUs共享一片物理地址空间的。

本文的内容安排如下:为了能够清楚的解析内存模型,我们对一些基本的术语进行了描述,这在第二章。第三章则对三种内存模型的工作原理进行阐述,最后一章是代码解析,代码来自4.4.6内核,对于体系结构相关的代码,我们采用ARM64进行分析。

阅读全文>>

标签: Model Memory

评论(24) 浏览(37551)

ARM64架构下地址翻译相关的宏定义

作者:linuxer 发布于:2016-8-12 18:50 分类:内存管理

本文主要分析linux-4.4.6/arch/arm64/include/asm目录下的若干和地址翻译相关的头文件(例如page.h、 pgtable.h、pgtable-hwdef.h、pgtable-prot.h等文件)中的各种宏定义以及相关的ARM64硬件知识。硬肯ARM ARM文档有时候太费劲,结合linux源代码会让学习变得简单一些。

阅读全文>>

标签: arm64 地址翻译

评论(5) 浏览(16572)

ARMv8之Observability

作者:linuxer 发布于:2016-5-25 18:22 分类:ARMv8A Arch

在ARMv8关于memory order描述章节中,大量使用了observer、observed、completion等术语,本文主要是澄清这些术语,为后续描述memory order和memory barrier相关指令打下基础。另外,在几个星期前,和codingbelief同学讨论DMB指令的时候,他提出了一个尖锐的问题:什么是PE observes memory access,是指 cpu 执行了 memory access 指令么?当时我对这些概念也比较模糊,未能回答他的疑问,现在希望这份文档可以解决这个问题。

阅读全文>>

标签: ARMv8 observer observed

评论(8) 浏览(10939)

ARMv8之memory model

作者:linuxer 发布于:2016-5-18 12:09 分类:ARMv8A Arch

从阅读ARMv8手册的第一天起,我就饱受memory order、memory barrier、coherent、consistency等概念的残害,各种痛苦,各种迷茫,各种试图放弃,各种欲罢不能……,现在,终于收拾心情,再 次出发,希望这次能把近期关于ARMv8上的memory model相关的知识点整理出来,让自己更清楚一些,也顺便希望能够和大家一起探讨。

本文主要关注shared-memory system,其他的系统不在本文的考虑范围。

阅读全文>>

标签: Model ARMv8 sequential consistency relaxed

评论(7) 浏览(17919)

ARMv8之Atomicity

作者:linuxer 发布于:2016-5-13 19:18 分类:ARMv8A Arch

本文主要解析ARMv8手册中的Atomicity这个概念。首先给出为何定义这样的概念,定义这个概念的作用为何?然后介绍Atomicity相关的概 念,很多时候我们引用了手册的原文,但是由于这些原文象天书一样难懂(可读性比较差),因此,我们使用程序员可理解的一些语言来描述这些概念。最后给出 ARMv8上,各种内存操作指令,针对各种memory type,其Atomicity的特性为何。

阅读全文>>

标签: Coherent Single-copy atomicity Multi-copy

评论(8) 浏览(17997)

Common Clock Framework系统结构

作者:linuxer 发布于:2016-4-21 19:23 分类:电源管理子系统

之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理。

本文内容包括三个部分,第二章给出了整个CCF相关的block diagram图,随后在第三章对各个模块进行功能层面的描述。最后,第四章给出了各个block之间的接口描述。

另外,在阅读CCF代码的过程中,我准备用两份文档来分享我对CCF的理解。这一份是系统结构,另外一份是逻辑解析。

阅读全文>>

标签: framework clock common

评论(11) 浏览(23779)

Debian下的WiFi实验(二):无线网卡自动连接AP

作者:linuxer 发布于:2016-3-24 18:18 分类:Linux应用技巧

自从我的T450能够WiFi上网之后,在Debian下上网,更新软件包什么的再也不用看老婆的脸色了,哈哈。虽然如此,但是隐隐约约总是觉得很 不方便,对了,就是每次开机都需要输入一系列的命令,之后才能愉快的玩耍,唉!如果无线网卡能自动连接AP并且自动分配IP地址就好了。人类就是这么懒惰 (当然也可以说是为了提高用户体验),而懒惰也不断的推进技术的进步。

本文主要描述Debian 8下面,如何配置无线网卡在开机过程中自动连接AP。如果你非常着急,可以直接去看第五章,那里说明了如何修改配置完成这一目标。如果你想了解这个开机过程wifi如何自动连接AP的过程,中间的三个章节给出了一些细节说明。

阅读全文>>

标签: systemd wifi udev

评论(1) 浏览(14587)

systemd:为何要创建一个新的init系统软件

作者:linuxer 发布于:2016-3-17 18:27 分类:Linux应用技巧

当我把我的电脑升级到Debian 8的时候,赫然发现旧的SysV init的东西似乎是消失了,取而代之的是systemd。当然,它不是个新东西,只不过一方面多年来我只是关注内核,很少理会用户空间的东西,此外,公 司的操作系统始终封存在linux2.6.23上,各种rootfs的software package也从未升级,因此我已经和世界脱轨了。不过没有关系,活到老学到老,本文主要解决一个问题:多年来SysV init系统软件已经象呼吸一样自然了,为何会有systemd这个新的init system呢?

本来想自己整理一下资料,写一篇相关文档,最终发现systemd项目的发起者的一篇博客其实完美的回答了这个问题,因此本文实际上也就是针对http://0pointer.de/blog/projects/systemd.html 文档的翻译,这篇博文中详细的描述了systemd的故事。

阅读全文>>

标签: systemd

评论(2) 浏览(18694)

Debian下的WiFi实验(一):通过无线网卡连接AP

作者:linuxer 发布于:2016-3-8 18:42 分类:Linux应用技巧

最近入手了一台T450,顺便在上面安装了Windows和Debian 8。一般而言,在windows下的时候通过WiFi上网毫无压力,当然,做为linuxer,我其实也很少在T450上启动windows,那么问题来 了,如何在Debian 8下使用WiFi呢?

具体的场景是这样的,我们家的网络是通过ADSL进入internet,ADSL modem的网线连接到了台式机,而台式机经常被夫人霸占,我的T450的以太网口毫无用武之地。买个hub吧又想省点钱,好在在某些外事活动中被赠送了 一个随身WiFi的小东西,这样台式机就变成了一个AP。同时,夫人还丢下一句话:你不是搞IT的吗,这么能,用WiFi吧。

好吧,反正有线无线都一样,只要能上网就OK了。本文主要记录T450笔记本在Debian 8系统上如何通过WiFi上网的。

阅读全文>>

标签: wpa_supplicant

评论(5) 浏览(15310)

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