MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层 (从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。
一、Flash硬件驱动层:硬件驱动层负责在init时驱动Flash硬件,Linux MTD设备的NOR Flash芯片驱动遵循CFI接口标准,其驱动程序位于drivers/mtd/chips子目录下。NAND型Flash的驱动程 序则位于/drivers/mtd/nand子目录下。
二、MTD原始设备:原始设备层有两部分组成,一部分是MTD原始设备的通用代码,另一部分是各个特定的Flash的数据,例如分区。 用于描述MTD原始设备的数据结构是mtd_info,这其中定义了大量的关于MTD的数据和操作函数。mtd_table(mtdcore.c)则是所 有MTD原始设备的列表,mtd_part(mtd_part.c)是用于表示MTD原始设备分区的结构,其中包含了mtd_info,因为每一个分区都 是被看成一个MTD原始设备加在mtd_table中的,mtd_part.mtd_info中的大部分数据都从该分区的主分区 mtd_part->master中获得。 在drivers/mtd/maps/子目录下存放的是特定的flash的数据,每一个文件都描述了一块板子上的flash。其中调用 add_mtd_device()、del_mtd_device()建立/删除mtd_info结构并将其加入/删除mtd_table(或者调用 add_mtd_partition()、del_mtd_partition()(mtdpart.c)建立/删除mtd_part结构并将 mtd_part.mtd_info加入/删除mtd_table 中)。
三、MTD设备层:基于MTD原始设备,linux系统可以定义出MTD的块设备(主设备号31)和字符设备(设备号90)。MTD字符设备的定义在 mtdchar.c中实现,通过注册一系列file operation函数(lseek、open、close、read、write)。MTD块设备则是定义了一个描述MTD块设备的结构 mtdblk_dev,并声明了一个名为mtdblks的指针数组,这数组中的每一个mtdblk_dev和mtd_table中的每一个 mtd_info一一对应。
四、设备节点:通过mknod在/dev子目录下建立MTD字符设备节点(主设备号为90)和MTD块设备节点(主设备号为31),通过访问此设备节点即可访问MTD字符设备和块设备。
五、根文件系统:在Bootloader中将JFFS(或JFFS2)的文件系统映像jffs.image(或jffs2.img)烧到flash的 某一个分区中,在/arch/arm/mach-your/arch.c文件的your_fixup函数中将该分区作为根文件系统挂载。
六、文件系统:内核启动后,通过mount 命令可以将flash中的其余分区作为文件系统挂载到mountpoint上。
需要了解的Linux MTD层次等问题
- Linux(218417)
- MTD(9148)
相关推荐
热点推荐
为什么电源设计转用48V?您需要了解什么?
为什么电源设计转用 48V?您需要了解什么? 当前应用通过下列途径提高性能: 增强处理能力 提高通信速率 延长运行速率 增添外设 增大扭矩 增大 LED 亮度 实现更多功能需要提供更多功率。更高功率
2018-03-23 17:56:05
9380
9380介绍一些实用的Linux命令
作为一名软件开发人员,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你总会遇到需要使用 Linux 命令的场合。例如,大多数 Docker 镜像都基于 Linux 系统。要进行 DevOps 工作,你需要熟悉Linux,至少要了解一些常用命令。
2023-08-01 16:12:32
701
701
Linux新手要了解的十个知识点
Linux新手要了解的十个知识点1.Linux是大小写敏感的系统,举个例子,Mozilla, MOZILLA, mOzilla和 mozilla是四个不同的命令(但是只有第四个mozilla是真正
2016-04-02 16:22:37
MTD utilities can not be installed
/MTD_Utilities去编译mtd utilities,结果却出现了跟下面这位网友完全一样的问题:http://e2e.ti.com/support/embedded/linux/f/354/p/249979
2018-05-15 08:29:25
linux下多线程编程中,一次等待多个信号量怎么解决
linux下多线程(非进程)编程中,一次等待多个信号量怎么解决?并且等到信号量来了后,能判断是那一个功能如同window下waitformultipleobjects()函数,一次就可以等待多个信号量。在linux下多线程编程,linux 下sem_wait()一次只能等待一个信号量。
2020-06-17 05:55:57
MCU的特点要了解
方式基本上是类似的。因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握:MCU的特点要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供...
2021-11-03 07:24:39
UPS电源选购之前需要了解?
随着时代的发展,UPS市场不断的扩张与应用,大到国家***项目建设、小到家庭用户用电设备。那么你们是否了解UPS选购的时候需要注意什么呢?1) 使用者对UPS电源的各项指标应有一个全面清晰的了解
2018-06-28 13:44:20
为什么要了解时钟树
layout: posttags: [STM32]comments: true文章目录layout: posttags: [STM32]comments: true为什么要了解时钟树?树的根标准库
2021-08-12 06:13:08
为什么要了解电机的工作原理
为什么要了解电机的工作原理在我们生活场景中,电机的应用非常广泛,电风扇、洗衣机驱动电机、冰箱散热风扇、玩具车驱动电机、电脑散热风扇、抽油烟机风扇等,几乎所有的家用电器都会用到电机,可以说没有了电机
2021-08-27 06:49:14
射频工程师需要了解的知识
射频工程师需要了解的知识1.电路基础设计,包括电路框架设计和电路元器件设计。必须熟悉射频电路的每个元器件参数要求和电路参数要求2.电路系统匹配需求,射频工程师需要负责对整个RF系统的电路进行系统分析
2023-02-17 09:11:56
嵌入式Linux系统进行层次划分
事物总有个核心,复杂的事物总可以模块化、层次化, 嵌入式Linux也如此。学习嵌入式Linux困难,主要因为涉及知识和概念过多,即比较复杂,所以学习嵌入式Linux的就需要找到核心,需要模块化,需要
2021-11-05 06:03:52
求一个正激式恒流开关电源的仿真图,参加面试需要了解
有没有人可以分享一下如题的原理图和仿真图,最近参加一个公司面试要求需要了解这种电源的原理,刚毕业还是小白一个,知道的不多,求分享啊!!
2017-04-26 22:57:39
温度补偿晶振使用需要了解哪些?
补偿的晶振,在我们使用中要了解哪些?所有石英晶体材料做成的频率器件,均有一定的温漂。温漂是晶振的一个重要特性,一般情况下晶振出现温漂是在室外温度偏低或者比正常温度较高的情况下。晶振出现温漂有很多种
2016-07-19 10:59:12
嵌入式Linux系统下NOR Flash的配置和使用
简要比较NOR 和NAND 两种Flash 技术,分析嵌入式Linux 系统MTD 子系统的结构;详细介绍在编译Linux 内核时, 如何在MTD 子系统内对使用的NOR Flash 芯片进行配置和定制。
2009-04-15 11:05:04
30
30Linux MTD 源代码分析
Linux MTD 源代码分析
Linux MTD介绍:设备层和原始设备层的函数调用关系(红色部分需要我们实现):NOR型Flash芯片驱动与MTD原始设备NAND和NOR的比较源
2010-02-08 16:43:12
9
9Linux MTD 源代码分析
Linux MTD 源代码分析
this document under the terms of the GNU Free Documentation License,Version 1.1or
2010-02-10 14:03:33
26
26MTD微波交通检测器用户手册
本文为微波交通检测器(MTD)的用户手册。此手册主要内容包括以下几个部分:第1部分:MTD概述主要介绍MTD设备的概念和应用定位。第2部分:技术指标介绍MTD设备应用的技
2010-11-10 23:18:49
34
34MTD滤波器设计方法比较
MTD滤波器设计方法比较
早期MTD滤波器,直接采用DFT算法。该算法等效于一组窄带滤波器组,具有数字硬件实现简单的特点,由于MTD雷达中
2009-02-27 10:03:00
2802
2802你需要了解的嵌入式Linux
你需要了解的嵌入式Linux
今天,Linux 正广泛应用于各种嵌入式设备的开发中,如数字电视、机顶盒、DVR播放器、xDSL/有线/PON调制解调器、家用路由器和网关。它尤其适
2010-01-18 16:19:36
867
867
Linux MTD下获取Nand flash参数详解
下面是Linux MTD中,获取nand flash型号,各个参数,以及硬件特性的函数,其实也就是 nand_get_flash_type,下面对其详细解析: 【看此文之前,一些有必要先解释的术语】 1. Program(编程):此处
2011-05-10 15:09:59
40
40需要了解嵌入式linux系统开发环境的搭建
在嵌入式linux开发中,开发板的所有代码都是在基于PC的linux下交叉编译的,所以首先要准备一个linux环境
2019-05-04 17:42:00
1453
1453
需要了解的Linux中电源管理接口
Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。
2019-04-22 17:35:00
1379
1379你需要了解Linux编程的epoll
单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差
2019-04-23 13:50:11
918
918
需要了解的Linux文件系统
每台通用计算机都需要将各种数据存储在硬盘驱动器(HDD)或其他类似设备上,比如 USB 存储器。这样做有两个原因。首先,当计算机关闭以后,内存(RAM)会失去存于它里面的内容。
2019-05-04 16:54:00
393
393
需要了解UBI文件系统的详细介绍
采用MTD+FTL/NFTL(flash 转换层/nand flash转换层)+ 传统文件系统,如:FAT、ext2等。FTL/NFTL的使用就是针对FLASH的特有属性,通过软件的方式来实现日志管理、坏块管理、损益均衡等技 术。
2019-05-04 17:17:00
9712
9712
你需要了解的Linux文件系统
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序看到的文件、目录、软链接及文件保护信息等都存储在其中。
2019-04-25 17:44:23
1059
1059
需要了解的Linux 系统中一些针对文件系统的节能技巧
文件系统是 Linux 系统的重要组成部分,文件系统的配置和使用对整个系统的运行有着重要的影响。本文介绍了一些 Linux 系统上对文件系统的配置技巧,达到节省能耗并目的,有的技巧还可以提高系统的性能。
2019-04-27 19:22:00
903
903需要了解的Linux系统设备树
在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts
2019-04-26 16:53:24
815
815需要了解的Linux 内核工作原理
广义地来说kernel就是一个软件,它在硬件和运行在计算机上的应用程序之间提供了一个层。严格点从计算机科学的角度来说,Linux中的Kernel指的是Linus Torvalds在90年代初期写的那点代码。
2019-04-28 15:25:29
2524
2524
需要了解的Linux内核读写文件
在用户态,读写文件可以通过read和write这两个系统调用来完成(C库函数实际上是对系统调用的封装)。 但是,在内核态没有这样的系统调用,我们又该如何读写文件呢?
2019-04-28 16:43:24
1350
1350需要掌握的Linux内核源码分析方法
Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。
2019-04-28 16:54:40
1232
1232
需要了解Linux的硬链接与软链接
硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。
2019-04-28 17:01:27
1102
1102
需要了解嵌入式Linux设备驱动的工作原理
linux的内存管理采取的分页存取机制,会将内存中不经常使用的数据块交换到虚拟内存中。linux会不时地进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事需要内存,linux也会交换出暂时不用的内存页面。
2019-04-28 17:13:40
2111
2111
需要了解Linux V4L2的驱动架构
video4linux2(V4L2)是Linux内核中关于视频设备的中间驱动层,向上为Linux应用程序访问视频设备提供了通用接口,向下为linux中设备驱动程序开发提供了统一的V4L2框架。
2019-04-28 17:29:13
1585
1585
需要了解Linux文件系统发展的前景
GNU/Linux在支持文件系统创新方面已经取得了极大的成功,目前已支持超过50种文件系统,毫无疑问,这一成功与Linux一向的开源策略是密不可分的。
2019-05-05 11:16:21
832
832需要了解嵌入式Linux的实时化技术
Linux支持PowerPC、MIPS、ARM、DSP等多种嵌入式处理器,逐渐被用于多种关键性场合。其中实时多媒体处理、工业控制、汽车电子等特定应用对Linux提出了强实时性需求[1]。
2019-05-05 14:45:31
684
684需要了解linux内核空间和用户空间的基本原理
linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们
2019-05-06 16:13:00
970
970成为 Linux 终端高手的七种武器,需要了解
Linux 终端不仅是一个键入命令的地方。如若你能熟谙这些基础技巧,那么你会在绝大多数 Linux 发行版的默认使用的 Bash shell中游刃有余。
2019-05-06 15:23:57
490
490最新Linux进程冻结技术需要了解
进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。
2 为什么需要冻结技术
2019-05-06 16:00:16
1038
1038需要了解Linux设备管理_kobject_kset_kobj_type等问题
Linux内核大量使用面向对象的设计思想,通过追踪源码,我们甚至可以使用面向对象语言常用的UML类图来分析Linux设备管理的"类"之间的关系。
2019-05-10 10:39:56
1002
1002
需要了解的Linux的IRQ中断子系统
在Linux中断子系统(generic irq)出现之前,内核使用__do_IRQ处理所有的中断,这意味着__do_IRQ中要处理各种类型的中断,这会导致软件的复杂性增加,层次不分明,而且代码的可重用性也不好。
2019-05-10 10:56:09
1754
1754Linux MTD子系统:从模型分析到Flash驱动模板
MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化硬件驱动框架。
2019-05-13 09:40:00
1871
1871
需要了解Linux下的文件I/O编程
linux下C语言对于文件的操作,我们会经常用到fopen(),fclose(),fwrite(),fread(),fgets()等一系列库函数,基本和是和windows下学习C语言一样的,其实这些库函数就是在linuxx下对系统调用函数的封装,因此这里只介绍系统函数下的文件操作函数。
2019-05-12 10:09:02
879
879关于Linux需要了解的七件事
使用 Linux 最酷的事情之一就是随着时间的推移,你可以不断获得新的知识。每天,你都可能会遇到一个新的实用工具,或者只是一个不太熟悉的奇技淫巧,但是却非常有用。这些零碎的东西并不总是能够改变生活,但是却是专业知识的基础。
2019-05-12 10:11:57
409
409Linux中你需要了解的7件事!
使用 Linux 最酷的事情之一就是随着时间的推移,你可以不断获得新的知识。每天,你都可能会遇到一个新的实用工具,或者只是一个不太熟悉的奇技淫巧,但是却非常有用。这些零碎的东西并不总是能够改变生活,但是却是专业知识的基础。
2019-05-13 09:44:42
450
450需要了解的Linux inotify功能及实现原理
众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生
2019-05-13 09:47:27
668
668需要了解的Linux模块编程框架
Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable
2019-05-13 10:04:53
865
865
需要了解linux的内存管理
大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多。问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕。
2019-05-13 10:22:14
677
677
需要了解Linux设备驱动的内存管理办法
对于包含 MMU 的处理器而言, Linux 系统提供了复杂的存储管理系统,使得进程所能访问的内存达到 4GB。进程的 4GB 内存空间被分为两个部分—用户空间与内核空间。
2019-05-13 11:24:14
950
950
需要了解Linux内核通知链机制的原理及实现
大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。
2019-05-14 16:16:44
998
998
需要了解Linux swap分区的扩展
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
2019-05-15 08:51:46
1738
1738
需要了解的linux HZ Tick Jiffies
Jiffies为Linux核心变数(32位元变数,unsigned long),它被用来纪录系统自开几以来,已经过多少的tick。每发生一次timer interrupt,Jiffies变数会被加一。
2019-05-15 09:07:06
1930
1930了解Linux系统的启动过程
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究。这当中就包括系统的启动流程、文件系统的组成结构、基于动态库和静态库的程序在执行时的异同、协议栈的架构和原理、驱动程序的机制等等。
2019-05-15 10:17:02
837
837需要学习并了解Linux时钟的原理及其应用
除了wall time,linux系统中也需要了解系统自启动以来过去了多少的时间,这时候,我们可以把钟表的epoch调整成系统的启动时间点,这时候获取系统启动时间就很容易了,直接看这块钟表的读数即可。
2019-05-15 10:43:16
2287
2287
需要了解的Linux0.01-内核系统体系结构
嵌入式Linux中文站从互联网收集整理Linux0.11版本的笔记,Linux 内核主要由 5 个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
2019-05-15 14:32:18
1011
1011
你需要了解linux中的mknod
dentry:指向代表着或将要代表待创建设备文件节点的目录项dentry结构,sys_mknod中lookup_create在内核dentry结构杂凑表中找到或创建
2019-05-15 15:29:15
2146
2146
需要了解并学习Linux计时器的原理及其应用
Linux中, 系统为每个系统都维护了三种计时器,分别为: 真实计数器, 虚拟计时器以及实用计时器, 一般情况下都使用真实计时器
2019-05-16 15:53:57
1399
1399企业在使用区块链技术之前需要了解哪些问题
要理解区块链技术的集成如何有利于我们现有的商业环境,首先要了解分布式分类账在实践中是如何工作的,这一点很重要。这个数据库中的记录是由一个集中的政党控制的,它负责他们的准确性、组织和传播。但是,由于这些数据库是手动维护的,因此容易出现人为的错误和机械的故障。因此,我们仍然有理由怀疑这些记录的准确性。
2019-09-04 14:30:18
688
688什么是数据工程?数据工程师需要了解的事情
讨论一些胸怀大志的数据科学家们(以及他们将来的雇主)真正需要了解的事情。 什么是数据工程? 如果数据科学是让数据变得有用的一门学科,那么可以想像数据工程是将数据变得能用的一门学问。数据工程师们是提供幕后基础设
2020-12-15 15:16:01
8604
8604设计PCB时需要了解的6个指南
领域转化为物理现实的时候,在制造阶段出现问题,或者在功能方面产生缺陷。 那么设计一个在纸上和物理形式上都真实可靠的电路板的关键是什么?让我们探讨设计一个可制造,功能可靠的PCB时需要了解的前6个PCB设计指南。 1、微调您的元件
2020-12-18 17:42:14
2795
2795工程师做电路设计需要了解的十一个不要资料下载
电子发烧友网为你提供工程师做电路设计需要了解的十一个不要资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
2021-04-10 08:51:55
6
6如何使用移动目标防御(MTD)技术来保护Linux服务器
上期内容为大家讲解了移动目标防御(MTD)技术是如何有效抵御供应链攻击的。本期小编将带大家了解如何使用移动目标防御(MTD)技术来保护Linux服务器。
2022-08-24 10:23:00
2052
2052您需要了解的有关射频匹配网络的5件事
在RF电路中,阻抗可以在很宽的频率范围内变化。RF匹配网络的主要目标是匹配源和负载的阻抗,以最大限度地提高功率传输,并在所需的工作频率范围内最小化反射。这需要了解源和负载的阻抗,并选择在该频率下产生匹配的组件。
2023-02-03 14:23:49
4104
4104
Linux history命令的使用技巧
使用 Linux 命令行工作,需要了解且使用 history 的一些常用的特性,不管是 Linux 初学者,还是系统专家。
2023-02-03 16:30:26
3756
3756
A型消防应急灯在使用过程中需要了解的问题有哪些?
A型消防应急灯在使用过程中需要了解的问题有哪些? 随着技术水平的进步,如今市场中的A型消防应急灯不仅性能优秀,而且功能上更加齐全,用户使用起来更加方便。为了让更多的人可以了解它。那么A型消防应急灯在
2023-02-07 13:48:04
973
973公交导乘屏选择需要了解哪些参数?
公交导乘屏选择需要了解哪些参数? 公交导乘屏的应用范围是很广泛,我们生活的方方面面都有接触到公交导乘屏,比如:车载、货架、机场、餐厅、多媒体教学、地铁站台、公交站台等。以车载类公交导乘屏为列,车载
2023-05-23 17:07:28
1228
1228您需要了解的有关射频匹配网络的5件事
在RF电路中,阻抗可以在很宽的频率范围内变化。RF匹配网络的主要目标是匹配源和负载的阻抗,以最大限度地提高功率传输,并在所需的工作频率范围内最小化反射。这需要了解源和负载的阻抗,并选择在该频率下产生匹配的组件。
2023-06-27 11:38:16
2840
2840
选择贴片电容时需要了解哪些问题?
购买贴片电容时,需要了解以下几个方面: 1、电容类型与规格:贴片电容有多种类型,如陶瓷电容器、铝电解电容器、钽电解电容器、多层陶瓷电容器(MLCC)以及聚合物电容器等。每种类型都有其特定的应用场
2024-03-29 15:45:28
789
789不只是前端,后端、产品和测试也需要了解的浏览器知识
一、我们为什么要了解浏览器? 1. 对于前端开发者 1.浏览器是用户体验的第一线。我们需要了解浏览器的工作原理,才能有效地设计和实现用户界面,确保良好的用户体验。 2.好的产品需要考虑浏览器兼容性
2024-07-01 18:03:39
1566
1566
电子发烧友App











评论