Linux TTY framework(2)_软件架构

作者:wowo 发布于:2016-9-27 22:42 分类:TTY子系统

由“Linux TTY framework(1)_基本概念”的介绍可知,在Linux kernel中,TTY就是各类终端(Terminal)的简称。为了简化终端的使用,以及终端驱动程序的编写,Linux kernel抽象出了TTY framework:对上,向应用程序提供使用终端的统一接口;对下,提供编写终端驱动程序(如serial driver)的统一框架。

本文是Linux TTY framework分析的第二篇文章,将从整体架构的角度,介绍Linux TTY framework,以便分解出功能相对独立的子模块,以便后续的分析。

阅读全文>>

标签: Linux Kernel 架构 Architecture tty

评论(2) 浏览(3481)

TLB flush操作

作者:linuxer 发布于:2016-9-23 19:57 分类:内存管理

Linux VM subsystem在很多场合都需要对TLB进行flush操作,本文希望能够把这个知识点相关的方方面面描述清楚。第二章描述了一些TLB的基本概念,第三章描述了ARM64中TLB的具体硬件实现,第四章描述了linux中和TLB flush相关的软件接口。内核版本依然是4.4.6版本。

阅读全文>>

标签: TLB flush

评论(6) 浏览(4238)

Linux TTY framework(1)_基本概念

作者:wowo 发布于:2016-9-18 22:55 分类:TTY子系统

由于串口的缘故,TTY是Linux系统中最普遍的一类设备,稍微了解Linux系统的同学,对它都不陌生。尽管如此,相信很少有人能回到这样的问题:TTY到底是什么东西?我们常常挂在嘴边的终端(terminal)、控制台(console)等概念,到底是什么意思?

本文是Linux TTY framework分析文章的第一篇,将带着上述疑问,介绍TTY有关的基本概念,为后续的TTY软件框架的分析,以及Linux serial subsystem的分析,打好基础。

阅读全文>>

标签: Linux Kernel 内核 tty terminal 终端 console 控制台

评论(16) 浏览(4095)

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

评论(8) 浏览(2893)

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

评论(12) 浏览(5655)

eMMC框架及其初始化

作者:itrocker 发布于:2016-8-25 16:33 分类:文件系统

eMMC的全称是Embedded MultiMedia Card,MMC协会所制定的内嵌式存储器标准规格,主要应用于智能手机和移动嵌入式产品。eMMC是一种嵌入式非易失性存储系统,由标准MMC接口、主控制器和NAND Flash三部分组成,采用JEDEC标准BGA封装。

eMMC的这种将Nand Flash芯片和控制芯片封装在一起的设计概念,就是为了简化产品内存储器的使用,客户只需要采购eMMC芯片放进产品中,不需要处理其它复杂的Nand Flash兼容性和管理问题,减少研发成本和研发周期。

阅读全文>>

标签: 初始化 emmc 框架

评论(0) 浏览(4571)

文件缓存回写简述

作者:itrocker 发布于:2016-8-24 9:51 分类:内存管理

文件缓存回写的时机

(1)周期性回写,周期为dirty_writeback_interval,默认5s

(2)块设备首次出现脏数据;

(3)脏页达到限额,包括dirty_bytesdirty_background_bytesdirty_ratiodirty_background_ratio

......


阅读全文>>

标签: Kernel writeback 回写

评论(0) 浏览(2165)

Linux kernel内核配置解析(5)_Boot options(基于ARM64架构)

作者:wowo 发布于:2016-8-12 22:46 分类:Linux内核分析

本文将介绍ARM64架构下,Linux kernel和启动有关的配置项。

注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”。

阅读全文>>

标签: Linux 内核 boot 配置项 menuconfig

评论(2) 浏览(2385)

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 地址翻译

评论(2) 浏览(2613)

Linux kernel内核配置解析(1)_概述(基于ARM64架构)

作者:wowo 发布于:2016-8-10 23:20 分类:Linux内核分析

对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?、

话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手;从源代码的目录结构入手;从kernel的启动过程入手;从大的功能模块入手;等等。不管怎样,每条都是正途(条条大路通罗马嘛)。

而本文(以及随后的系列文章),将从Linux kernel的配置项入手,从整体上认识Linux kernel。之所以这么做,原因有二:

1)Linux kernel的配置项数目繁多,以至于进行kernel移植的时候,看到menuconfig界面后,会有深深的恐惧感(可参考下面图片1)。

2)配置项的目的,是功能配置和功能开关,从一定程度上可以看出一个软件的功能模块划分。以Linux kernel为例,Kconfig所呈现出来的树状结构,从功能划分的角度看,比source code的目录结构还清晰。

注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”。

阅读全文>>

标签: Linux Kernel 内核 配置项 menuconfig

评论(1) 浏览(3345)

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