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

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

评论(0) 浏览(47)

文件缓存回写简述

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

文件缓存回写的时机

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

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

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

......


阅读全文>>

标签: Kernel writeback 回写

评论(0) 浏览(70)

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

评论(0) 浏览(157)

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

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

评论(0) 浏览(207)

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

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

评论(0) 浏览(453)

X-008-UBOOT-支持命令行(Bubblegum-96平台)

作者:wowo 发布于:2016-7-27 21:41 分类:X Project

经过前面文章的铺垫,u-boot command line的支持已经成了一个顺理成章的事情了。因此,本文没有太多技术细节,仅仅记录支持命令行的实现过程,权当“X Project” “【任务2】启动到u-boot command line”的一个完结。

阅读全文>>

标签: u-boot cmdline

评论(6) 浏览(351)

X-007-UBOOT-DDR的初始化(Bubblegum-96平台)

作者:wowo 发布于:2016-7-21 22:47 分类:X Project

到目前为止,“X Project”在Bubblegum-96平台上的代码,都是运行在SRAM中。由于SRAM的size很小(最多也就96KB),如果要做更多的事情,就必须把DDR跑起来。不过,关于Bubblegum-96平台的DDR driver,我和codingbelief同学折腾了很久,试图找出一个最佳的方法,给大家呈现出DDR driver的开发方法和开发步骤。最终,受限于“资源”的短缺,还是失败了。

根据Bubblegum-96公开的资料,只知道它包含了一个2GB的、单bank的LPDDR,除此之外,找不到任何技术有关的细节,如LPDDR的datasheet、S900 DDR controller的说明、DDR时钟的配置等等。没有这些东西,我们根本无法完成DDR的配置,更不用说以此介绍、分析DDR driver了。

但是,虽然困难重重,“X Project”还是要进行下去,既然常规方法走不通,我们就采用一些非常规的手段,无论如何,还是能把DDR成功的初始化起来的。由于是非常规手段,当然就无法开源,也无法给大家讲解了。

因此,本文关于DDR的技术细节不多,主要目的是结合DDR的初始化,进一步介绍嵌入式linux开发的基本过程,包括如下知识点:

嵌入式Linux的启动过程。

u-boot SPL的使用场景。

u-boot启动过程中DDR初始化的流程。

阅读全文>>

标签: SDRAM u-boot spl ddr

评论(4) 浏览(445)

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