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
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进行分析。
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源代码会让学习变得简单一些。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之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
ARMv8之Atomicity
作者:linuxer 发布于:2016-5-13 19:18 分类:ARMv8A Arch
本文主要解析ARMv8手册中的Atomicity这个概念。首先给出为何定义这样的概念,定义这个概念的作用为何?然后介绍Atomicity相关的概 念,很多时候我们引用了手册的原文,但是由于这些原文象天书一样难懂(可读性比较差),因此,我们使用程序员可理解的一些语言来描述这些概念。最后给出 ARMv8上,各种内存操作指令,针对各种memory type,其Atomicity的特性为何。标签: Coherent Single-copy atomicity Multi-copy
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的理解。这一份是系统结构,另外一份是逻辑解析。
Debian下的WiFi实验(二):无线网卡自动连接AP
作者:linuxer 发布于:2016-3-24 18:18 分类:Linux应用技巧
自从我的T450能够WiFi上网之后,在Debian下上网,更新软件包什么的再也不用看老婆的脸色了,哈哈。虽然如此,但是隐隐约约总是觉得很 不方便,对了,就是每次开机都需要输入一系列的命令,之后才能愉快的玩耍,唉!如果无线网卡能自动连接AP并且自动分配IP地址就好了。人类就是这么懒惰 (当然也可以说是为了提高用户体验),而懒惰也不断的推进技术的进步。
本文主要描述Debian 8下面,如何配置无线网卡在开机过程中自动连接AP。如果你非常着急,可以直接去看第五章,那里说明了如何修改配置完成这一目标。如果你想了解这个开机过程wifi如何自动连接AP的过程,中间的三个章节给出了一些细节说明。
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
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
功能
最新评论
文章分类
随机文章
文章存档
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)