




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖湖 北北 大大 学学 本本 科科 毕毕 业业 论论 文文 (设(设 计)计) 题题 目目 税控机软件测试税控机软件测试 基于基于 44b044b0 的的 nandflashnandflash 底层驱动程序设计底层驱动程序设计 姓姓 名名 解添津解添津 学学 号号 20062211052200172006221105220017 专业年级专业年级 0606 级电子科学与技术级电子科学与技术 指导教师指导教师 陈陈 勇勇 职职 称称 讲讲 师师 20102010 年年 0505 月月 0808 日日 目录 1 1 绪论绪论 .- - 1 1 - - 1.1 课题研究的背景和国内外现状 .- 1
2、- 1.2 课题研究的意义 .- 2 - 1.3 课题研究的内容 .- 2 - 2 2 nandflashnandflash 操作论证操作论证 .- - 2 2 - - 2.1 nandflash的结构及器件特性分析.- 2 - 2.2 nand flash的寻址.- 3 - 2.3 nandflash引脚功能及指令集.- 4 - 3 3 nandflashnandflash 底层程序的设计及实现底层程序的设计及实现 .- - 5 5 - - 3.1 k9f5608u0d 与 s3c44b0x 的接口设计 .- 5 - 3.2 nandflash底层程序的实现与设计.- 7 - 3.3 nan
3、dflash底层程序设计.- 17 - 4 4 试验验证与开发板的使用试验验证与开发板的使用 .- - 2020 - - 4.1 通过 j-tag 下载 u-boot .- 20 - 4.2 超级终端的设置.- 21 - 4.3 使用 u-boot 运行 nandflash底层驱动 .- 24 - 4.4 nandflash操作论证.- 26 - 5 5 结论和展望结论和展望 .- - 2929 - - 5.1 结论 .- 29 - 5.2 展望 .- 30 - 参考文献参考文献 .- - 3131 - - 税控机软件测试税控机软件测试 基于基于 44b0 的的 nandflash 底层驱动程
4、序设计底层驱动程序设计 摘要摘要 三星公司推出的 16/32 位 risc 处理器 s3c44b0x 为手持设备和一般类型应用提供了高 性价比和高性能的微控制解决方案。为了降低成本,s3c44b0x 提供了丰富的内置部件。但 是唯一的不足,就是没有 nandflash 的专用控制器。而 nandflash 由于其低成本以及大容 量,已经广泛的应用到 u 盘,sd 卡,固态硬盘中去。而在 s3c44box 的设计中,一味的使 用 nor flash,对于大数据的存储是相当不利的。文章通过对 nandflash 的时序模拟,通 过 norflash 中的底层程序引导 nandflash 的操作,使
5、 s3c44b0x 也能与 nandflash 连接, 从而可以实现存储,读取内部的数据。可以通过开发板上实现读取 nandflash 的 id 数据、 读取 nandflash 中数据内容、擦除块中的数据、在空的空间写入指定的数据,通过串口在 windows 中的超级终端显示读出的数据,以及写后再读出操作的数据,以证实确认对 nandflash 进行了读、写、擦除等操作的执行。文章最后对所做的工作和取得的结论进行 了总结。 【关键词】nandflash arm7 s3c44b0x 块 页 字节 software testing of fiscal cash register drive pr
6、ogram design according to the nandflash first floor with of 44b0 abstract three star companies release of 16/32 risc processor s3c44b0x for held equipments and general type application to provide gao xing4 jia4 ratio and high performance of tiny control solution.for decline low cost, the s3c44b0xs p
7、rovided abundantly inside place a parts, such as:8 kb cache, internal sram, lcd controller.but the only shortage be the appropriation controller which has no nandflash.but nandflash because it low cost and big capacity, have already extensively applied to u dish, sd card, go to in the solid hard dri
8、ve.but persistently use nor flash in the s3c44boxs design, for big data of saving is very disadvantageous.the article passes to imitate the nandflash cycle time, pass the operation of the leading nandflash of the first floor procedure in the norflash and make the s3c44b0xs can also link with nandfla
9、sh, keep both keep and read internal data.combine in developping plank realization, and pass a string of data that reads in the super terminal manifestation in the windows, and write after read again the data for operate really carried on to read to the nandflash by confirm, write and wipe etc. oper
10、ation of performance.article end to the work do with obtain of the conclusion carried on summary. 【key words】 nandflash arm7 s3c44b0x block page byte 1 绪论 1.1 课题研究的背景和国内外现状 1.11 arm 简介 arm 即advanced risc machines的缩写,既可以认为是一个公司的名字,也可以认为 是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年 arm 公司成立于英 国剑桥,主要出售芯片设计技术的授权。目前
11、,采用 arm技术知识产权( ip )核的微 处理器,即我们通常所说的 arm 微处理器,已遍及工业控制、消费类电子产品、通信系 统、网络系统、无线系统等各类产品市场,基于 arm 技术的微处理器应用约占据了 32 位 risc 微处理器 75 以上的市场份额, arm 技术正在逐步渗入到我们生活的各个 方面。 arm 公司是专门从事基于 risc 技术芯片设计开发的公司,作为知识产权供应商, 本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半 导体生产商从arm公司购买其设计的 arm 微处理器核,根据各自不同的应用领域,加 入适当的外围电路,从而形成自己的 ar
12、m 微处理器芯片进入市场。目前,全世界有几十 家大的半导体公司都使用 arm 公司的授权,因此既使得 arm 技术获得更多的第三方 工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接 受,更具有竞争力。 arm处理器的三大特点是:耗电少功能强、16位/32位双指令集和众多合作伙伴。当 前有5个产品系列arm7、arm9、arm9e、arm10和securcore。而民用中最常用的 就是arm7和arm9。其中,arm7系列,优化用于对价位和功耗敏感的消费应用的低功耗 32位核,有: 嵌入式ice-rt逻辑; 非常低的功耗; 三段流水线和冯诺依曼结构,提供 0.9mi
13、ps/mhz。 1.12 三星公司s3c44b0x简介 s3c44b0x采用了arm7tdmi内核,0.25um工艺的cmos标准宏单元和存储编译器。 它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样 s3c44b0x还采用了一种新的总结结构,即sambaii(三星arm cpu嵌入式微处理器总线 结构)。 s3c44b0x的杰出特性是它的cpu核,是由arm公司设计的16/32位arm7tdmi risc 处理器(66mhz)。arm7tdmi体系结构的特点是它集成了thumb代码压缩器,片上的 ice断点高度支持,和一个32位的硬件乘法器。10 s3c44b0x通过提
14、供全面的、通用的片上外设,大大减少了系统电路中除处理器以外 的元器件配置,从而最小化系统的成本。 1.131.13 nandflashnandflash简介简介 nor 和nand 是现在市场上两种主要的非易失闪存技术。intel 于1988 年首先开发 出nor flash 技术,彻底改变了原先由eprom 和eeprom 一统天下的局面。紧接着, 1989 年,东芝公司发表了nand flash 结构,强调降低每比特的成本,更高的性能,并且 象磁盘一样可以通过接口轻松升级。相“flash 存储器”经常可以与相“nor 存储器”互换 使用。但是经过了十多年之后,仍然有相当多的硬件工程师也搞不
15、清楚nand 闪存技术相 对于nor 技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时nor 闪存更适合一些。而nand 则是高数据存储密度的理想解决方案。 nandflah是一种快闪记忆体,以储存数据为主,又称为data flash,晶片容量大, 目前主流容量已达2gb。现在市面上的常见的优盘、mp3和mp4等数码设备的存储系统都 是采用nandflash存储芯片来实现的。nandflash价格便宜量又足,性价比很高,并且十分轻 便,抗震性也很不错,很适合用来做数码产品。生产nandflash芯片的厂商主要有 samsung、hynix、micron、stmicroelect
16、ronics 、toshiba等。现在单片的nandflash芯片的 存储容量已经可以做到4gb。很难想像,在一个大小只有12*20*1.2mm的芯片里可以做到 如此的容量。想想以后如果现在计算机的主要存储设备硬盘被nandflash芯片代替,那 计算机将是另一番景象,更轻便,更稳定。很多厂商都在打这方面的主意,包括 intel、samsung。 nor 的特点是芯片内执行(xip, execute in place),这样应用程序可以直接在flash 闪 存内运行,不必再把代码读到系统ram 中。nor 的传输效率很高,在14mb 的小容 量时具有很高的成本效益,但是很低的写入和擦除速度大大
17、影响了它的性能。nand 结构 能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用 nand的困难在于flash 的管理和需要特殊的系统接口。 1.2 课题研究的意义 由于nandflash的困难在于flash 的管理和需要特殊的系统接口。而s3c44b0x采用 的是arm7tdmi的内核,并没有像arm9一样提供了专用的nandflash的硬件接口, nandflash并不能像nor flash、sdram与专用接口相连后直接使用。如果有像arm9一样专 用接口,就可以通过硬件的方式来控制nandflash的时序,而采用arm7的s3c44b0x中只 使用nor fl
18、ash就不能满足对大数据量的存储要求,想要实现nandflash在44b0上的存储功能, 只能通过软件控制i/o口的方式,解决nandflash的时序问题。所以在44b0上想要完成对 nandflash的操作,必须通过通用i/o口,用底层驱动的方法,对其进行时序的操作,以实 现nandflash在arm7上的功能实现,包括功能有:读取,擦除,写入,坏块的判断和处理 以及数据的校验。 由于单从nandflash中读出的数据,是无任何意义的,而这些数据只有在上层软件的组 织下,才能获取相应的信息,如word程序可以将nandflash上的word数据连接起来后,可 以在电脑中显示出来。而这些都是上
19、层软件中的复杂操作,本文不做介绍,而本文将通过 从硬件上的连接,到软件上的支持,一步步来实现nandflash的操作,并通过串口与 windows中的超级终端通信,验证底层驱动对nandflash的操作的存在性,以及正确性。 1.3 课题研究的内容 三星公司推出的 16/32 位 risc 处理器 s3c44b0x 为手持设备和一般类型应用提供了高 性价比和高性能的微控制解决方案。为了降低成本,s3c44b0x 提供了丰富的内置部件。但 是唯一的不足,就是没有 nandflash 的专用控制器。而 nandflash 由于其低成本以及大容 量,已经广泛的应用到 u 盘,sd 卡,固态硬盘中去。
20、而在 s3c44box 的设计中,一味的使 用 nor flash,对于大数据的存储是相当不利的。文章通过对 nandflash 的时序模拟,通 过 norflash 中的底层程序引导 nandflash 的操作,使 s3c44b0x 也能与 nandflash 连接, 从而可以实现存储,读取内部的数据。可以通过开发板上实现读取 nandflash 的 id 数据、 读取 nandflash 中数据内容、擦除块中的数据、在空的空间写入指定的数据,通过串口在 windows 中的超级终端显示读出的数据,以及写后再读出操作的数据,以证实确认对 nandflash 进行了读、写、擦除等操作的执行。文
21、章最后对所做的工作和取得的结论进行 了总结。 2 nandflash 操作论证 在正原电气股份有限公司的产品税控机上,使用的nandflash为三星公司的 k9f5608u0d,所以为了取材的方便,我在毕业设计中使用的就是32m的 nandflash:k9f5608u0d。 2.1 nandflash 的结构及器件特性分析 正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块nandflash也分为若干块 (block),每个块分为若干页(page)。一般而言,块、页之间的关系随着芯片的不同而 不同,而k9f5608u0d的分配则如图2-1: 图2-1 k9f5608u0d结构图 我们讨论的
22、k9f1208u0b总共有2048 个blocks,故我们可以知道这块flash的容量为 2048 *(32 *528)= 34603008 bytes = 33 mb。但事实上每个page上的最后16bytes是用于存贮 检验码和其他信息用的,并不能存放实际的数据,所以实际上我们可以操作的芯片容量为 2048 *(32 *512) = 33554432 bytes = 32 mb由 上图所示,1个page总共由528 bytes组成,这 528个字节按顺序由上而下以列为单位进行排列(1列代表一个byte。第0行为第0 byte , 第1行为第1 byte,以此类推,每个行又由8个位组成,每个
23、位表示1个byte里面的1bit)。 这528bytes按功能分为两大部分,分别是数据存储区域(data field)和扩展存储区域 (spare field),其中spare field占528bytes里的16bytes,这16bytes在读写操作的时候存放 校验码用的,一般不用做普通数据的存储区,除去这 16bytes,剩下的512bytes便是我们用 于存放数据用的data field,所以一个page上虽然有528个bytes,但我们只按512bytes进行 容量的计算。 2.2 nand flash 的寻址 由于 nand flash 的巧妙设计,把数据线和地址线复用,而数据线只有
24、 8 位,所以地址 寄存器把一个完整的 nandflash 地址分解成 column address 与 page address.进行寻址。并 且对 nandflash 寻址进行 3 个周期的输入后,巧妙的解决了 8 位数据线寻址地址短的特点。 这样的设计,也成了 nandflash 的一个优势所以,因为不同大小的的 sdram,norflash 在 连接时,由于容量的不同,造成了地址线位数的不同,所以在连接时,要按具体情况连接。 而 nandflash 由于数据线和地址线复用,解决了硬件上的连接问题,只要在操作程序上做 相应的修改就行了。 column address: 列地址。colum
25、n address 其实就是指定 page 上的某个 byte,指定这 个 byte 其实也就是指定此页的读写起始地址。 page address:页地址。 由于页地址总是以 512bytes 对齐的,所以它的低 9 位总是 0。确定读写操作是在 flash 上的哪个页进行的。 列地址和页地址的寻址方法,具体如下表 2-1: 表 2-1 nandflash 寻址周期表 i/o 0i/o 1i/o 2i/o 3i/o 4i/o 5i/o 6i/o 7 1 周期a0a1a2a3a4a5a6a7 2 周期a9a10a11a12a13a14a15a16 3 周期a17a18a19a20a21a22a2
26、3a24 上表中,第 1 周期为列地址,第 2,3 周期为页地址。可能细心的发现 3 个周期每周 期 8 位,应该是 24 位,可是从 a0a24,应该有 25 位,a8 去哪里了?在前面我们讨论的 nandflash 的结构中,每一页有数据存储区和扩展存储区组成,而这两个部分 512byte+16byte 应该是 528byte 的存储空间,而对于 528 字节的存储空间,至少应该要 10 位的地址线,才能寻址。但是从上表来说,我们只有第 1 周期的 8 位地址线,如果才能完 成 10 位地址线的工作呢? 其实 a8 位的作用在这里体现了。我们先不考虑扩展区的 16byte 的存储空间,单考
27、虑 数据存储区的 512byte 的空间,512byte 只需要 9 位的地址线就能完成对它的寻址。其实这 第 9 位就是 a8 位。 nandflash 在设计中,已经将一页中的数据存储区分成了前半页区和后半页区(前半 页区和后半页区并没有明确的定义,这里我先这样定义)。在后面的 nanflash 指令中,当 read 命令为 00h 时,其实已经将操作首地址定义到了半页区的首个地址,这时 a8 就为 0。而当 read 命令为 01h 时,操作首地址已经定义到了后半页的首个地址,这时 a8 就为 1。只是 a8 不能通过 i/o 口直接改变值,而会间接的随命令改变。而当 read 命令为
28、50h 时,则将操作首地址定义到了扩展存储区的首地址。 2.3 nandflash 引脚功能及指令集 2.3.1 nandflash 引脚功能 nandflash 由于其良好的设计,虽然引脚数有 48 个,但实际有用引脚数只有 19 个, 而其它的未使用的引脚,在日后的 nandflash 升级中,可能会定义上新的功能。 k9f5608u0d 的引脚分布如图 2-2 所示: 图 2-2 k9f5608u0d 引脚分布图 i/o0i/o7:data inputs/outputs。数据输入/输出口,i/o 口是用来输入指令、 地址和数据、并在读周期时输出数据的。当芯片未被选中或输出禁能时,i/o
29、口呈高阻态。 cle:command latch enable。命令锁存使能,cle 脚上的输入电平用来控制 打开/关闭指令送入指令寄存器的通路。当 cle 为高时,i/o 口在 we 信号的上升沿将指令 锁入指令寄存器。 ale:address latch enable。地址锁存使能,ale 脚上的输入电平用来控制 打开/关闭地址送入地址寄存器的通路。当 ale 为高时,i/o 口在 we 信号的上升沿将地址 锁入地址寄存器。 ce:chip enable。芯片使能,低电平使能的片选控制线。当芯片处于忙状态时, ce 信号即使变高,也将被忽略。 re:read enable。读使能,re 为
30、串行数据输出控制线。当它为低电平时,内部 数据将输出到 i/o 端口,输出数据在 re 的下降沿后一定时间内有效,同时,内部列地 址计数器将加 1。 we:write enable。写使能,we 对 i/o 端口的写入进行控制。指令、地址和数 据都会在 we 的上升沿被锁存。 r/b:ready/busy output。读/忙输出,r/b 引脚的输出说明了器件目前的操作 状态,当它为低电平时,表明某个写入、探险或任意读操作正在进行,当这个操作完成, r/b 才会重新回到高电平状态。它是一个开漏输出,而且在芯片未选中或输出未全能时, 不会进入高阻态。 wp:write protect。写保护,w
31、p 引脚提供在电源波动情况下,对器件不可预料 地写入或探险的保护。当 wp 脚为低电平时,内部高电压发生器被复位。 vcc:output buffer power。缓冲器输出电源,vcc 是器件的供电电源。 vss:ground。地。 nc:no connection。空脚。 dnu:do not use。未使用。 2.3.2 nandflash 指令集 由 k9f5608u0d 的 cle 和 ale 信号线实现 i/o 口上指令和地址的利用。指令、地址 和数据都通过拉低 we 和 ce 从 i/o 口写入器件中。有一些指令只需要一个总线周期完成。 例如,复位指令,和状态读指令等;另外一些指
32、令,例如页写入和块擦除,则需要 2 个周 期,其中一个周期用来启动,而另一个周期用来执行。表 2-2 显示了 nandflash k9fk5608u0d 具备的指令。 表 2-2 k9f5608u0d 具备的指令和功能 功能第一周期第二周期器件忙时可接受的命令(用“0”表示) 读方式 100h/01h- 读方式 250h- 读 id 号90h- 复位ffh-0 页写入80h10h 回拷贝00h8ah 块擦除60hd0h 读当前状态70h-0 在 nandflash 中,读和写操作都是以页为单位进行的操作,擦除是基于块进行的操作 的。对以上 nandflash 的各引脚定义功能,以及 nandf
33、lash 具备的指令,就可以在 s3c44b0x 上实现对 nandflash 对各种操作功能。 3 nandflash 底层程序的设计及实现 3.1 k9f5608u0d 与 s3c44b0x 的接口设计 3.1.1 s3c44b0x 中的 bank 映射 s3c44b0x 可以对 8 个 bank 进行寻址,每个 bank 的空间为 32mb。由于整个目标平 台都是以处理器为核心的,为了使处理器对各个设备的访问互不干扰,就将不同类型的设 备映射到不同的 bank 内。s3c44b0x 的 bank 空间分配如图 3-1 所示。 bank 7未用 未用 bank 6 8mb/16mb sdr
34、am bank 5未用 bank 4ethernet bank 3usb bank 2ide bank 1nandflash cpu 寄存器 未用bank 0 flash rom 图 3-1 s3c44b0 对寻址空间的安排 图 3-1 是 s3c44b0x 对程序空间和数据空间的分配。在程序空间 flash rom 内(即 nor flash),已经固体了一段启动系统及系统进行初始化的程序 bios(即 bootloader:u- boot)。在图中可以看到,flash rom 映射在了系统的 bank0 上,也就是说,系统在上电 时处理器即从 flash rom 的 0 x00000000
35、 地址处取得指令开始运行。bios 程序完成了设置 初始化、中断矢量初始化、存储器的参数设置、堆栈地址定义等工作,这些设置对于系统 的正常启动具有重要意义。 3.1.2 nandflash 与 44b0 的连接方法 k9f5608u0d 映射到 bank1 区域内,与 s3c44b0x 的接口电路如图 3-2 所示: 图 3-2 k9f5608u0d 与 s3c44b0x 的接口电路 其中,nandwe 和 nandre 信号通过图 3-3 的电路产生。 图 3-3 控制信号产生电路 这种方法,是一块 nandflash 与系统相连接的标准接法,而要实现两块 nandflash 的相 互拷贝,
36、则会出现错误,而并不能用这种连接方法。另外,在控制信号产生电路中,noe 与 s3c44b0x 的 oe 相连接,nwe 与 we 连接。而 ngcs1 的连接,则表明 nandflash 的数 据是映射到了 44b0 的 bank1 中,即以后对 bank1 操作,则对 nandflash 的 8 位数据线操 作了。 由于采用了 gpg0gpg3 作为 k9f5608u0d 的信号控制线,因此必须在 i/o 口初始化 中将这些口设定为输入或输出口线。其中 gpg0 为输入,gpg1gpg3 为输出,关于 i/o 口应用的相关内容,如s3c44b0x datasheet中的 i/o 设置表,如
37、表 3-1 所示: 表 3-1 端口 g 功能表 将上述引脚与开发板的扩展口连接后,用万用表连接相邻两脚,看是否出现短路的情 况,这种情况应该马上排除,还有一点要注意的是,nandflash8 位数据线与 44b0 的低 8 位数据线之间的 8 根连接线,要尽可能的做到长短相等,这样可以减少在高速读写过程中, 可能造成 8 根数据线之间延时的机率,使 nandflash 工作的更加稳定,保证数据传输的可 靠性。根据图 3-2 和图 3-3,连接好以后,就可以进入编程调试环节了。 3.2 nandflash 底层程序的实现与设计 3.2.1 页读操作的设计 在初始上电时,器件进入缺少的“读方式
38、1 模式”。在这一模式下,页读操作通过将 00h 指令定稿指令寄存器,接着写入 3 个周期的地址(1 个列地址,2 个页地址)来启动。 一旦页读指令被器件锁存,下面的页读操作就不需要再重复写入指令了。如图 3-4 所示: 图 3-4 读前半页命令缺省图 同样的,对于后半页的操作,只要将指令改为 01h,而对扩展区只要将指令改为 50h, 而在连续的读取中,并不用反复的输入上述的指令。如图 3-5,3-6 所示: 图 3-5 读后半页命令缺省图 图 3-6 读扩展区命令缺省图 写入指令和地址后,处理器可以通过对信号线 r/b 的分析来判断该操作是否完成。如 果信号为低电平,表示 nandflas
39、h 正“忙”;为高电平,说明器件内部操作完成,要读取的 数据被卷入了数据寄存器。外部控制器可以在以 50ns 为周期的连续 re 脉冲信号的控制下, 从 i/o 口依次读出数据。 连续页读操作中,输出的数据是从指定的列地址开始,直到该页的最后一个列地址的 数据为止。 nandflash 读操作(读 1page)如图 3-7 所示 图 3-7 读操作时序图 读操作流程如图 3-8 所示: 图 3-8 读操作流程图 读操作一开始向 nandflash 命令寄存器写入 00h,然后向地址寄存器写入读取的地址, 即将数据指针指向所要读了的内容地址。 正如硬盘的盘片被分为磁道,每个磁道又被分为若干扇区,
40、一块 nand flash 被分为若 干 block,每个 block 又被分为若干 page。我们的 k9f5608u0d 是 32m 的,所以有 2048 的 block。 这里有一点要说明的是当读取时,输入的命令为 00h 时,那在连续读取的接下来的 n 个字节,是从前半页存储区的首地址(即整页的 0 地址)一直读到第 527 个字节处,即读 完包括数据存储区和扩展存储区内的完全内容,而当超过一页的地址后,它将再一次指向 下一页的前半页存储区的首地址,而这个读过程可以无限的进行下去,只到你停止读取数 据或者到达了 nandflash 最后的一页扩展区的最后一个字节为止。具体如图 3-9
41、所示: 图 3-9 命令 00h 的读取内部循环 当输入 01h 读取命令时,那在连续读取的接下来的 n 个字节,是从后半页存储区的首 地址(即整页的 256 位地址)开始一直读到第 527 个字节处,即读完包括数据存储区和扩 展存储区内的完全内容,而当超过一页的地址后,它将再一次指向下一页的后半页存储区 的首地址,而这个读过程可以无限的进行下去,只到你停止读取数据或者到达了 nandflash start write 00h write address read data page read completed 最后的一页扩展区的最后一个字节为止。具体如图 3-10 所示: 图 3-10 命
42、令 01h 的读取内部循环 当输入 50h 读取命令时,在连续读取的接下来的 n 个字节,是从扩展存储区的首地址 (即整页的 512 位地址)开始一直读到第 527 个字节处,即读完包括数据存储区和扩展存 储区内的完全内容,而当超过一页的地址后,它将再一次指向下一页的后半页存储区的首 地址,而这个读过程可以无限的进行下去,只到你停止读取数据或者到达了 nandflash 最 后的一页扩展区的最后一个字节为止。具体如图 3-11 所示: 图 3-11 命令 50h 的读取内部循环 3.2.2 页写入操作的设计 k9f5608u0d 的写入操作也以页为单位。写入必须在擦除之后,否则写入将出错。 页
43、写入的周期总共包括 3 个步骤:写入中行数据输入指令(80h) ,然后写入 3 个字节 的地址信息,最后串行写入数据。 串行写入的数据最多为 528 个字节,它们首先被写入 nandflash 内的页寄存器,接着器 件进入一个内部写入过程,将数据从页寄存器写入存储宏单位。 串行数据写入完成后,需要写入“页写入确认”指令 10h,这条指令将初始化器件的内部 写入操作。如果单独写入 10h 而没有前面的步骤,则 10h 不会起作用。10h 写入后, k9f5608u0d 的内部写控制器将自动执行内部写入和校验中必要的算法和时序,这时系统 控制器就可以去完成其他任务。 内部写入操作开始后,nandf
44、lash 自动进入“读状态寄存器”模式。在这一模式下,当 re 和 ce 为 低电平时,系统就可以读取状态寄存器。系统可以通过检测 r/b 的输出,或读状 态寄存器状态位(i/o6)来判断内部定稿是否结束。在器件进行内部写操作时,只有读状态 寄存器指令和复位指令会被响应。当页写入操作完成,应该检测写状态位(i/o0)的电平。 内部写校验只对 1 没有成功地写为 0 的情况进行检测。指令寄存器始终保持着读状态 寄存器模式,直到其他有效的指令写入指令寄存器为止。 nandflash 写操作(写 1page)如图 3-12 所示: 图 3-12 写操作时序图 写操作流程如图 3-13 所示: sta
45、rt write 80h write address write data write 10h read status register r/b = 1 ? no i/o 0 = 0 ? yes program error program completed yes no 图 3-13 写操作流程图 写操作时,首先向命令寄存器输入 80h 写指令,然后向地址寄存器输入 3 周期的地址, 写入指定的数据后,再向命令寄存器输入 10h 以表示确认写操作。根据 r/b 口反馈给 44b0 的信号,可以判断写操作是否执行完毕,通过读状态寄存器可以判断写入操作是否成 功。 这里有一点要补充的是,写操作只
46、能在一页中进行,即可以开始在一页的内的任意一 个位置,但是结束的时候,一定要在这页地址 527 字节前的任意一位,不可以写循环后, 输入确认指令 10h 时,现在的数据已经进入到下一页中去。另外,写操作也可以通过 00h,01h,50h 加到写操作开始指令 80h 前,以快速的确定写入的地址,这样大大增加了 nandflash 使用的灵活性。即 00h 时,从前半页存储区地址开始写,01h 时,从后半页存储 区地址开始写,50h 从扩展页存储区地址开始写,而具体从各区域的哪个地址写,又需要 在不输入地址 3 周期中的第一周期(即列地址)中设置,但是不无论从哪个地址开始写, 都必须在超过这页的最
47、后一位前输入确定写操作地址,即整页的 527 字节地址。 3.2.3 块擦除操作的设计 擦除操作是以块为单位进行的。擦除的启动指令为 60h,块地址的输入通过两个时钟 周期完成。这时只有地址位 a14 到 a24 是有效的,a9 到 a13 则被忽略。因为每一块是有 32 页组成的,而 a9 到 a13 正好是 5 位,也就是一个块中,页的地址,而擦除是对块操作, 所以 a9 到 a13 则被忽略,即 a9 到 a16 的值为 11111000b 到 11111111b,对于块操作时, 都是一样的。块地址载入之后是擦除确认指令 d0h,它用来初始化内部探险操作。擦除确 认命令用来防止外部干扰产
48、生擦除操作的意外情况。nandflash 检测到擦除确认命令输入后, 在 we 的上升沿启动内部写控制器开始执行擦除和擦除校验。内部擦除操作完成后,应该 检测一下写状态位(i/o0) ,从而了解擦除操作是否有错误发生。 nandflash 块擦除操作(擦除 1block)如图 3-14 所示: 图 3-14 块擦除时序图 块擦除流程如图 3-15 所示: 图 3-15 块擦除流程图 块擦除时,首先对命令寄存器写入擦除命令 60h,然后向地址寄存器写入 2 个周期的 块地址,最后对命令寄存器写入擦除确认命令 d0h,判断 r/b 高低电平,以确定下一块擦 除的操作进行。 对于擦除命令,一定要注意
49、对忙信号的判断,如果没有正确的判断,会使擦除只擦除 一部分,而没有擦除的部分,在写入数据的时候,由于 byte 位没有拉高,而使写入的数据 发生错误。 3.2.4 读状态寄存器的设计 k9f5608u0d 包含一个状态寄存器,该寄存器反应了写入或擦除操作是否完成,或写 入和擦除操作是否无错。写入 70h 指令,启动读状态寄存器周期。状态寄存器的内容将在 ce 或 re 的下降沿处送出到 i/o 端口,表 3-2 显示了状态寄存器中每位的定义: 表 3-2 状态寄存器的位定义 i/o n状 态定 义 “0”:成功写入/擦除 i/o 0写入/擦除 “1”:在写入/擦除中出错 start write
50、 60h write block address write d0h read status register i/o 6 = 1 ? n o r/b = 0 ? yes erase completed y es erase error n o i/o 1“0” i/o 2“0” i/o 3“0” i/o 4“0” i/o 5 保留 “0” i/o 6器件操作“0”:忙 “1”:准备好 i/o 7写保护“0”:保护 “1”:未保护 nandflash 读状态寄存器操作如图 3-16 所示: 图 3-16:读状态寄存器时序图 器件一旦接收到状态寄存器的指令,它就将保持在状态寄存器读状态,直到有其
51、它的 指令输入。因此,如果在任意读操作中采用了状态寄存器读操作,则在连续页读的过程中, 必须重发 00h 或 50h 指令。 3.2.5 读器件 id 的设计 k9f5608u0d 器件具有一个产品鉴定识别码(id) ,系统控制器可以读出这个 id,从 而起到识别器件的作用。读 id 的步骤是:写入 90h 指令,然后写入一个地址 00h。在两个 读周期下,厂商代码和器件代码将被连续输出到 i/o 口。 同样,一旦进入这种命令模式后,器件将保持这种命令状态,赶到接收到其他的指令 为止。 nandflash 读取器件识别码 id 操作如图 3-17 所示: 图 3-17:读识别码时序图 其中制造
52、商代码为 0 xec 即三星公司的代码,器件代码为 0 x75,因此,k9f5608u0d 的 id 为 0 xec75。如果在其它容量的三星 nandflash,如容量为 16mb 的 k9f52808r0d 的 id 则为 0 xec35。 不同型号的代码见表 3-3 所示: 表 3-3 器件代码表 在实际的操作中,可以用此代码在未对 nandflash 中存储数据区操作的前题下,初步判 断 nandflash 的好坏,或者是否存在焊接上的错误(如断路,短路的情况判断) 。 3.2.6 软件复位功能设计 器件提供一个复位(reset)指令,通过向指令寄存器写入 ffh 来完成对器件的复位。
53、 当器件处于任意读模式、写入或者擦除模式的忙状态时,发送复位指令可以使器件中止当 前的各种操作,正在被修改的存储器宏单元的内容不再有效,指令寄存器被清零并等待下 一条指令的到来。当 wp 为高时,状态寄存器被清为 c0h。 3.2.7 一些通用的时序的设计 由于 nandflash 中,对每一个操作,都要先进行命令,再进行地址输入,所以我们可以 输入命令和输入地址写成相应该的子程序,以方便程序的调用。 指令锁存操作如图 3-18 所示: 图 3-18 指令锁存时序图 地址锁存操作如图 3-19 所示: 图 3-19 地址锁存时序图 数据写入操作如图 3-20 所示: 图 3-20 数据写入时序
54、图 数据读出操作如图 3-21 所示: 图 3-21 数据读出时序图 由于操作 k9f5608u0d 的时序需要通过程序来模拟,因此就需要清楚地了解一些信号 之间的时序关系,编程时可以参考上面的时序图。 3.3 nandflash 底层程序设计 3.3.1 相关的操作程序设计 nandflash 存储器进行何种操作基本上是由 ce,cle,ale,re,we 5 条信号线的逻 辑电平决定的,而由于 re、we 已经与 44b0 的 oe、we 相连接,所以在进行操作时, 44b0 会自己去对 re、we 操作,即读一个 byte 时,44b0 的 oe 会自动对 nandflash 的 re
55、完成一次从高电平向低电平的转变的过程。而同样的,而写一个 byte 的时候,44b0 的 we 会自动的对 nandflash 的 we 完成一次从低电平向高电平转变的过程。所以在写程 序的时候,不必对 we、re 的电平变换,通过软件的方法模拟。而下面几个函数模拟了根 据写入指令、地址和读写数据时它们的时序条件,只需要对 ce,cle,ale 这三条信号 线所对应的 gpg1gpg3 进行控制即可。 接口宏定义: #define nf_ce_h() rpdatg |= mask_bit(1)/定义 ce 高电平 #define nf_ce_l() rpdatg nf_ce_l();/ce 为
56、低 nf_cle_h();/cle 为高 nf_ale_l();/ale 为低 nanddata=cmd; 参考地址锁存周期时序图,当 ale 为高、cle 和 ce 为低时,将地址从数据口写入 k9f5608u0d 的函数如下。 void nf_addr ( ) nf_ale_h();/ale 为高电平 nf_cle_l();/cle 为低电平 根据每次的时序图,应该在一次开始前,给 nandflash 一个初始化动作,由每操作开始 时序图可以得到: nf_init(void) nf_ce_h();/ce 为高电平失效 nf_cle_l();/cle 为低电平 nf_ale_l();/ale
57、 为低电平 3.3.2 读器件 id 码子程序 根据读器件 id 码的时序图,可以得到如下代码: u32 nf_checkid_o(void) u32 id; nf_init(); nf_ce_l_o(); nf_cmd(0 x90);/read id nf_addr ( ); nanddata=0 x0; nf_ale_l(); id=nanddata8; nf_cmd(0 xd0); do datareg=readstatus() while(datareg=0); 3.3.4 页写入子程序: 参考页写入时序图,写入代码如下: void wirtepage (u32 rowadd) nf_
58、 init(); nf_cmd(0 x80); nf_addr ( ); nanddata=0; nanddata=rowadd nanddata=(rowadd nf_ale_l(); /送开始字节 i=0; do nanddata=data i i+; while(i8; wait_rb; for(i=0;i528;i+) dataarrayi=nanddata 将各功能程序,组织后,在 main 中应用,在超级终端中,可以进有内容的 nandflash 进行操作,先对 nandflash 进行读 id 操作。然后先读出一个地址的内容,通过超级终端显 示一页的内容。再将这一页所在的块擦除,
59、再将其读出,看是否已经清除了。然后再对擦 除后的 nandflash 再写入指定的数据,再将其读出,看是否和写入的数据是相同的 4 试验验证与开发板的使用 4.1 通过 j-tag 下载 u-boot 首先将 j-tag 小板上面的短路冒拔插到 wiggler 插针上(板子上面有丝印标识) ,用 并口延长线连接 j-tag 小板到开发板 j-tag 接口电脑并口: 安装好 flashpgm 软件后,时行如图 4-1 配置: 图 4-1 j-tag 配置设置 点击菜单 file_open 选择,.ocd 文件。ocd 文件是一个硬件系统配置文件,设置了 cpu,flash 类型,flash 接口
60、的位宽等具体的参数,可通过 flashpgm 生成,开发板的 光盘上已经带有一个配置好的 ocd 文件。 配置好。ocd 文件后,点击 flashpgm 软件左下角“flash id”按钮检测一下 flash id。 以测试 jtag 连接是否正常,如果能正常读取出来,表明 jtag 连接没有问题,如图 4-2 所示: 图 4-2 nor flash 识别码 点击 prgram 按钮,在出现的对话框中选择编译好的 u-boot 文件(elf)然后选择在编 程前先探险选项,其他的 3 个地址不需要修改。点击 program。首先将夫探险相应的 flash 区域,然后编程和检验。进度条将显示当前编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品技术合作开发合同书
- 冷链物流速冻加工项目规划设计方案(范文模板)
- 数学建模与应用建模实践练习题集
- 乡村健康食品生产与供应链优化
- 那个让我难忘的陌生人写人作文(10篇)
- 农民互助性农业生产管理合同
- 电力电子技术应用实践题
- 增强平台竞争力与市场领导力的路径
- 市场营销消费者行为知识考点详解
- 历史文物保护与现代科技融合应用知识要点题
- 仪器仪表制造职业技能竞赛理论题库
- 网络服务器配置与管理(微课版) 教案 项目02 虚拟化技术和VMware-2
- 税收分析试题及答案
- 2025年西式面点师(中级)面包烘焙实操考试试卷
- 回迁楼房买卖合同协议书
- 新课程理念下语文课堂教学体系重建
- 从技术革新到应用拓展:高效便捷三维人体重建的多维探索
- 2025年湖南省中考数学模拟试卷(二)
- 国家开放大学2025年《创业基础》形考任务3答案
- 广东省大湾区2025届普通高中毕业年级联合模拟考试(二)化学(含答案)
- 电大《组织行为学》期末题库及答案
评论
0/150
提交评论