物理地址中所讲的block ,page column地址都是值得nandflash底层的物理地址,而我们实际使用的nandread nandwrite等命令中的flash地址则是逻辑地址,在mtd层中都会维护这样一个逻辑地址===> 物理地址的映射表,而文件系统的操作又是基于逻辑地址来的,在mtd层之上,这个映射表的维护是发挥mtd层作用的核心。
在mtd层通过mtdutils工具nandread,nandwrite等对nanflash上的某地址进行读写操作都是基于每一页的data area来的,spare area是不包含在内的;假如你想对spare area中的数据进行读取,就只能在mtd层往下的物理地址范畴内进行操作即block,page,colum这一层的地址进行操作,此时要读些spare区则column设为2048. 因为1page又是由bitline即字节或word组成的,所以 1page= column (列)x   bitline (行) 所以,column地址实际上就是本页的第几个字节而已,所以在找spare area区域地址的时候,column地址就是2048开始的地址(前面2048个字节是data area,这里开始就是spare area了),我是这样理解的。。
参考下文。

==================

NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page,(Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Byte,每32 个page 形成一个Block,

Sizeof(block)=16kByte 。

block=16kbyte,

512Mbit=64Mbyte,

Numberof(block)=4096 1block=32page,

1page=528byte=512byte(Main Area)+16byte(Spare Area)

Nand flash 以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: --Block Address -- Page Address --Column Address 。

对于NAND Flash 来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。

512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由地址指针命令来选择,A[7:0]就是所谓的column address。32 个page 需要5bit 来表示,占用A[13:9],即该page 在块内的相对地址。Block的地址是由A14 以上的bit 来表示,例如512Mb 的NAND,共4096block,因此,需要12 个bit 来表示,即A[25:14],如果是1Gbit 的528byte/page的NAND Flash,则block address用A[26:24]表示。

而page address就是blcok address|page address in block

NAND Flash 的地址表示为: Block Address|Page Address in block|halfpage pointer|Column Address

地址传送顺序是Column Address,Page Address,Block Address。 由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。 例如,对于512Mbit x8 的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。
以NAND_ADDR 为例:
第1 步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上,而halfpage pointer 即bit8 是由操作指令决定的,即指令决定在哪个halfpage 上进行读写。而真正的bit8 的值是don't care 的。
第2 步就是将NAND_ADDR 右移9 位,将NAND_ADDR[16:9]传到I/O[7:0]上
第3 步将NAND_ADDR[24:17]放到I/O 上
第4 步需要将NAND_ADDR[25]放到I/O 上 因此,整个地址传递过程需要4 步才能完成,即4-step addressing。

如果NAND Flash 的容量是256Mbit 以下,那么,block adress 最高位只到bit24,因此寻址 只需要3 步。

下面,就x16 的NAND flash 器件稍微进行一下说明。 由于一个page 的main area 的容量为256word,仍相当于512byte。但是,这个时候没有所谓 的1st halfpage 和2nd halfpage 之分了,所以,bit8就变得没有意义了,也就是这个时候 bit8 完全不用管,地址传递仍然和x8 器件相同。除了,这一点之外,x16 的NAND使用方法和 x8 的使用方法完全相同。

正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块nand flash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同,典型的分配是这样的:

nandflash地址的物理地址,逻辑地址,spare地址等理解相关推荐

  1. 微机中的实际地址、物理地址、有效地址、逻辑地址之间的区别

    首先对于微机原理这门课最常介绍的就是8086/8088两种型号的芯片.所以我们的结论也是基于此. 我们知道,8086/8088有20根地址线,这使得它们能够寻址1MB的空间:而CPU的指令指针(IP) ...

  2. 计算机ip地址与物理地址绑定,ip地址设置及IP地址和物理地址绑定(修订)

    ip地址设置及IP地址和物理地址绑定 设置IP地址 1. 设置本机的IP地址 ⑴在桌面上用鼠标右键单击"网上邻居"图标,打开如图5-45所示的"网络连接"窗 口 ...

  3. 计算机ip地址与物理地址绑定,查看机物理地址和IP地址,以及物理地址和IP地址的绑定...

    查看机物理地址和IP地址,以及物理地址和IP地址的绑定: 1.开始--运行--cmd 回车 输入命令:ipconfig/all C:\Documents and Settings\Administra ...

  4. 【菜鸟笔记】实际地址、物理地址、逻辑地址和有效地址

    菜鸟笔记 最近学习微机原理和接口技术,再一次重温了物理地址.逻辑地址等概念,但是仍对于这些概念有许多不理解,所以将他们记录下来,以备未来温习 概念 物理地址:物理地址就是存储器实际上的地址,是内存单元 ...

  5. 逻辑地址、线性地址和物理地址的转换

    一.逻辑地址 逻辑地址是指在计算机体系结构中是指应用程序角度看到的内存单元.存储单元.网络主机的地址. 逻辑地址往往不同于物理地址,通过地址翻译器或映射函数可以把逻辑地址转化为物理地址. 一个逻辑地址 ...

  6. 逻辑地址、线性地址和物理地址

    逻辑地址.线性地址和物理地址 逻辑地址(logical addresses)是由程序生成的与段相关的偏移地址的一部分. 例如,你在C语言中进行指针编程,可以读取指针变量本身的值(&操作),实际 ...

  7. Linux下逻辑地址-线性地址-物理地址图解

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

  8. (转)逻辑地址,线性地址,物理地址的差别

    段页式内存管理中,逻辑地址,线性地址,物理地址的差别 线性地址是逻辑地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址.程序代码会产生逻辑地址,或者说是段中的偏移地址 ...

  9. 逻辑地址,线性地址,物理地址

    2019独角兽企业重金招聘Python工程师标准>>> 本人是搞java开发的,但是了解一些底层的东西能帮助我理解一些编程上的东西. linux使用的基本上都是虚拟地址,内核程序中用 ...

  10. 逻辑地址、线性地址、物理地址和虚拟地址初步认识

    早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址.当计算机同时运行多个程序时,必须保证这些 ...

最新文章

  1. (三)spark集群DHCP IP变化后的处理
  2. html中某个名称不能修改,解决type=file 文件修改表单 名称不能正常回显的问题
  3. vivo计算机的隐藏功能介绍,vivo手机有哪些隐藏功能?这6个功能实在太好用了,要悄悄用起来...
  4. html 宽度和高度,如何检索HTML元素的实际宽度和高度?
  5. android服务之录音功能
  6. VTK:InfoVis之PKMeansClustering
  7. Intel Edision入门
  8. 【工具推荐】ADB IDEA
  9. 两个不同的进程 虚拟地址相同_Linux的进程地址空间[一]
  10. Maven的安装与配置教程
  11. python共轭梯度法_Numerical Analysis: 共轭梯度法(1)--基本原理
  12. 让你的Win10桌面比macOS还简洁漂亮高大上
  13. JavaScript中的浮点运算
  14. java set 删除_Java Set remove()用法及代码示例
  15. es报Unexpected character (‘ï‘ (code 239)): was expecting comma to separate Object entries解决方法
  16. Python算法--杂乱字符串排序
  17. html加了文档声明之后页面错乱,PDF转成HTML排版错乱?教你一招完美转换
  18. 滴滴安全技术获美国专利认证 争取技术主导权
  19. 2018年中国软件行业基准数据正式发布
  20. java基础的综合能力体现,测试你适不适合做程序员

热门文章

  1. Android源码目录结构详解
  2. AndroidSDK目录和源码目录详解
  3. 端午百望山爬山活动-金山词霸运营团队活动
  4. 为什么我们创业失败了和选择创业公司的思考
  5. 虚拟化技术原理(CPU、内存、IO)
  6. 计算机主机放电操作,如何给主板CMOS放电的3种方法图文教程
  7. 【CSS 字体 属性(Font)】
  8. 收费java代码_基于jsp的高速公路收费-JavaEE实现高速公路收费 - java项目源码
  9. BLE技术知识点大全
  10. 智齿客服H5聊天链接接入及WebView不支持input file文件上传解决