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) 浏览(37654)

DRAM 原理 4 :DRAM Timing

作者:codingbelief 发布于:2016-8-29 22:42 分类:基础技术

在 DRAM Device 章节中,我们简单介绍了 SDRAM 的 Active、Read、Write 等的操作,在本中,我们将详细的介绍各个操作的时序。


阅读全文>>

标签: SDRAM dram

评论(4) 浏览(44818)

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 框架

评论(4) 浏览(21711)

X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)

作者:wowo 发布于:2016-8-24 22:34 分类:X Project

X-009-KERNEL-Linux kernel的移植(Bubblegum-96平台)”中介绍了ARM64平台下,配置、编译、生成Linux kernel Image文件的方法。Image文件生成后,我们可以借助DFU工具将它下载到板子的DRAM中,然后借助u-boot boot有关的命令,加载并运行之(这个过程也称作引导)。

针对不同的Kernel image格式,u-boot提供了不同的boot指令,例如:

booti,引导ARM64 kernel image----Image;

bootz,引导ARM kernel image----zImage;

bootm,引导u-boot自定义的kernel image----uImage。

由于u-boot自定义的image格式(uImage),有着强大而又复杂的功能,本文暂时不想涉及,因此我们以booti命令为例,介绍u-boot的引导过程。

阅读全文>>

标签: arm64 u-boot dtb bootm booti Image

评论(2) 浏览(25298)

文件缓存回写简述

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

文件缓存回写的时机

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

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

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

......


阅读全文>>

标签: Kernel writeback 回写

评论(1) 浏览(13225)

X-009-KERNEL-Linux kernel的移植(Bubblegum-96平台)

作者:wowo 发布于:2016-8-19 22:38 分类:X Project

本文将以“X Project”的“【任务3】Linux kernel的配置、编译、加载与启动”为契机,介绍将Linux kernel移植到一个新的平台上的基本步骤,包括kernel以及device tree的配置、编译、二进制文件的生成等。

注1:本文的硬件基于ARM64架构,kernel基于“X Project”初始的“Linux 4.6-rc5”版本

阅读全文>>

标签: Kernel x project porting dtb

评论(2) 浏览(10258)

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) 浏览(13152)

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) 浏览(16625)

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

评论(2) 浏览(20103)

DRAM 原理 3 :DRAM Device

作者:codingbelief 发布于:2016-7-27 22:12 分类:基础技术

在前面的文章中,介绍了 DRAM Cell 和 Memory Array。 本文则以 SDR SDRAM 为例,描述 DRAM Device 与 Host 端的接口,以及其内部的其他模块,包括 Control Logic、IO、Row & Column Decoder 等。

阅读全文>>

标签: SDRAM dram

评论(6) 浏览(38079)

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