/dev/mtdN和/dev/mtdblockN的区别

1、/dev/mtdn是linux中的MTD架构中,系统自己实现的mtd分区所对应的字符设备,其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。

     而mtd-util中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于flash的操作,比如,mtd工具中的flash_eraseall中的:

 

 if(ioctl(fd,MEMGETINFO,&meminfo) != 0)
 {
  perror("MEMGETINFO");
  close(fd);
  exit(1);
 }

 

其中,MEMGETINFO,就是linux mtd中的/drivers/mtd/nand/mtdchar.c中的:

 

 case MEMGETINFO:
  info.type = mtd->type;
  info.flags = mtd->flags;
  info.size = mtd->size;
  info.erasesize = mtd->erasesize;
  info.writesize = mtd->writesize;
  info.oobsize = mtd->oobsize;
  /* The below fields are obsolete */
  info.ecctype = -1;
  info.eccsize = 0;
  if (copy_to_user(argp, &info, sizeof(struct mtd_info_user)))
   return -EFAULT;
  break;

 

而/dev/mtdblockn,是NandFlash驱动中,驱动在用add_mtd_partitions()添加MTD设备分区而生成的对应的块设备。根据以上内容也更加明白,为什么不能用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockn去操作了,因为/dev/mtdblock中不包含对应的ioctl,不支持你这么操作。

 

2、mtd char设备的主设备号是90;而mtdblock设备的主设备号是31;

     此设备号定义在/include/linux/mtd/mtd.h中

 

3、mtd块设备的大小可以通过查看分区信息来得到:

# cat /proc/partitions
major minor  #blocks  name

  31        0        128 mtdblock0
  31        1        128 mtdblock1
  31        2        512 mtdblock2
  31        3       2048 mtdblock3
  31        4      32768 mtdblock4
  31        5     486400 mtdblock5

 

上面显示的块设备的大小,是block的数目,每个block是1KB;

而每个字符设备,其实就是对应着上面的饿每个设备,即/dev/mtd0对应/dev/mtdblock0,以此类推,换句话说,mtdblockn的一些属性,也就是mtdn的属性,比如大小。

 

4、对每个mtd字符设备的操作,比如利用nandwrite去对/dev/mtd0写数据,实际就是操作/dev/mtdblock0而这些操作里面涉及到得offset都指的是mtd分区内的偏移。比如向/dev/mtd1的offset为0的位置写入数据,实际操作的物理偏移是offset=/dev/mtd0的大小=128KB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#define GPBCON (*(volatile unsigned *)0x56000010) 的理解

2019独角兽企业重金招聘Python工程师标准>>> 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制&#xff…

三极管基本参数介绍与放大电路分析

全称为半导体三极管,也称双极型晶体管、晶体三极管,是一种电流控制电流的半导器件,作用是把微弱信号放大成幅度值较大的电信号, 也用作无触点开关。 两个PN结的排列方式有两种:PNP和NPN。 三个端点依序称为射极&#…

Nand分区及nand erase简解

我的nand flash 32M,kernel 2.6.18, rootfs is emb linux, cramfs.nand flash分区如下:static struct mtd_partition nand_partitions[] {/* bootloader (UBL, U-Boot, BBT) in sectors: 0 - 14 */{.name "bootloader",.offset 0,.size 32…

eclipse启动了tomcat,但是浏览器打不开欢迎页

tomcat在eclipse中启动成功,主页却打不开 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误。同时其他项目页面也不能访问。 关闭eclipse里面的tomcat,在tomcat安装目…

洛谷1011 车站

水题。题目描述有坑&#xff0c;可以先根据样例手算试一试//Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; const int maxn50; int f[50],…

三极管放大电路三种类型

根据三极管三个电极与输入输出端子的连接方式&#xff0c;可归纳为三种&#xff1a;共发射极电路、共基极电路和共集电极电路&#xff1b; 三种电路的共同点&#xff1a;各有两个回路&#xff0c;一个输入回路一个输出回路&#xff0c;两个回路有一个公共 端&#xff0c;而公…

ImportError: No module named 'chardet'

1.使用requsets出现这个错误&#xff0c;ImportError: No module named chardet 原因&#xff1a;requests依赖其他一些模块 解决&#xff1a;依次使用pip安装即可 pip install certifi pip install chardet pip install idna pip install urllib3转载于:https://www.cnblogs.c…

各种组件的js 获取值 / js动态赋值

jQuery获取Select选择的Text和Value:语法解释&#xff1a;1. $("#select_id").change(function(){//code...}); //为Select添加事件&#xff0c;当选择其中一项时触发2. var checkText$("#select_id").find("option:selected").text(); //获取…

Linux下/proc目录简介

1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统&#xff0c;在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统&#xff0c;它只存在内存当中&#xff0c;而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。 用户…

Mysql带返回值与不带返回值的2种存储过程

过程1&#xff1a;带返回值&#xff1a; 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int,out sum int) 3 BEGIN 4 SET sum x y; 5 end 然后&#xff0c;执行过程&#xff0c;out输出返回值&#xff1a; 1 call proc_addNum(2,3,…

MOS管的米勒效应简介

一、米勒平台介绍 Mos管的三极都会存在以下 的三个电容,分别是:Cgs,Cgd,Cds。 米勒电容指的是Cgd。米勒效应在MOS驱动中臭名昭著,他是由MOS管的米勒电容引发的米勒效应,在MOS管开通过程 中,GS电压上升到某一电压值后GS电压有一段稳定值(图中t2~t3阶段),过后Vgs电压…

PopupWindow 使用详解(二) Popwindow 制作常见花哨效果

帝都几日降温&#xff0c;终于被撂倒了。but 只要一息尚存就得不断进步&#xff01;于是&#xff0c;写出 《PopupWindow 使用详解》的第二篇 笔记&#xff0c;先奉上 第一篇链接: 《PopupWindow 使用详解&#xff08;一&#xff09; 中文API 文档 赠送 ListPopupWindow 中文 A…

hbase replication原理分析

本文只是从总体流程来分析replication过程&#xff0c;很多细节没有提及&#xff0c;下一篇文章准备多分析分析细节。replicationSource启动过程org.apache.hadoop.hbase.regionserver.HRegionServer#startServiceThreads ->org.apache.hadoop.hbase.replication.regionserv…

8168

http://blog.csdn.net/crushonme/article/details/10287693 http://blog.csdn.net/yangxueble/article/details/10138763

Mysql查询结果只有一条的情况下把值赋值给变量,再用if else 流程判断

1 BEGIN 2 set n(SELECT count(day) from log where dayCURDATE()); 3 IF n0 THEN 4 call m_LogInsert(); 5 ELSE 6 call m_LoginCheck(); 7 end if; 8 end 转载于:https://www.cnblogs.com/mengms/p/7629486.html

近距离无线通信技术对比

定义&#xff1a;无线通信是利用电磁波信号在自由空间中传播的特性进行信息交换的一种通信方式。 优点&#xff1a;成本低、无物理线路&#xff0c;不受工业环境限制&#xff0c;环境适应能力强&#xff1b; 故障诊断简单&#xff0c;可远程诊断&#xff0c;扩展性强&#xff…

看不清的融资迷局 二线玩家字节跳动在打什么主意?

互联网似乎对离经叛道者总是多一分关注&#xff0c;吃瓜心态随着时间的推进越来越浓烈。 其中&#xff0c;今日头条成了“看热闹”时代最佳的“演员”之一&#xff0c;供看客消遣&#xff1a;其母公司字节跳动一个融资传闻从8月炒到了10月&#xff0c;即便是媒体通过信源确认这…

第3章-动态基础分析实验

Lab 3-1 Question: 1.先对文件使用PEID进行查壳,显示文件被加壳处理过 2.使用Dependency Walker查看文件导入函数&#xff0c;文件只有一个DLL而且只有一个导入函数Exitprocess 3.使用Strings程序查看字符串&#xff0c;发现可疑字符串。 4.动态分析前期准备 4.1 对系统进行初始…

如何优化增强第三方库?

开发中&#xff0c;我们不可避免要使用&#xff0c;别人花很多时间打磨好的轮子&#xff0c;轮子好用&#xff0c;但有时却无法完全满足我们的要去&#xff0c;这时我们不可避免的要去修改增强一下这个库&#xff0c;如何增强&#xff1f; 我认为&#xff0c;一般有两种修改的方…

C语言变长数组data[0]【总结】

C语言变长数组data[0]【总结】 1、前言 今天在看代码中遇到一个结构中包含char data[0]&#xff0c;第一次见到时感觉很奇怪&#xff0c;数组的长度怎么可以为零呢&#xff1f;于是上网搜索一下这样的用法的目的&#xff0c;发现在linux内核中&#xff0c;结构体中经常用到data…