NANDFLASH 常见问题汇总
- 格式:doc
- 大小:13.50 KB
- 文档页数:1
对于nandflash坏块的一些处理办法(2)2012年02月16日12:22:15
有时候系统启动发生问题,我们还疑nand有坏快,那我们就对nand来进行读写的操作,我们先在制定的内存地址给nand写入一些数据,然后再读出来。
如果写入和读出的数据一样,那么我们就能确定nand这一片区域是没有坏块的,具体操作如下:
首先启动开发板,按空格键进入uboot状态,输入md命令来显示内存c0008000处的数据,当然这个地址随便你选择,你想测试哪里你就选哪里。
然后我们把数据写入到nandflash,nand write c0008000 80000 500000
这里我解释一下,c0008000是内存的地址,80000是我们要写入的nandflash的地址,500000是我们要写入的数据的长度
然后呢,我们把这c0008000的数据修改一下,用mm命令,我这里把c0008000处的数据修改成了12121212,把c0008004的数据修改成了21212121.然后你若是不想再修改其他的,按一下空格键,再按一下enter键,退出修改。
下面我们看一下修改的结果
然后呢,我们再把nandflash上的内容读回来,nand read c0008000 80000 500000
和刚开始的时候是一样的,OK,那说明nand这里没有问题。
flash技术问题和解决办法
Flash技术遇到的问题和解决办法主要包括以下几个方面:
1. 浏览器兼容性问题:由于Flash技术逐渐被淘汰,一些
现代的浏览器已经不再支持Flash或者默认禁用了Flash插件。
解决此类问题的方法是在网站中使用
5技术替代Flash技术,例如使用
5的视频和音频标签来代替Flash播放器。
2. 性能问题:Flash技术在运行时可能消耗大量的系统资源,导致网页加载缓慢,甚至出现卡顿现象。
解决此类问题的
方法是优化Flash的编码和设计,减少不必要的资源消耗。
3. 安全问题:Flash技术由于其历史悠久和广泛使用,成为黑客攻击的目标,容易受到各种安全漏洞的攻击。
解决此
类问题的方法是尽量不使用Flash技术,转而使用更安全的5技术。
4. 移动设备不支持问题:Flash技术在移动设备上的支持有限,苹果公司的iOS设备甚至从一开始就不支持Flash。
解
决此类问题的方法是在开发网站时不依赖于Flash技术,而是使用基于
5的解决方案。
5.
不再更新问题:Adobe公司于
年停止了对Flash技术的更新和维护,绝大多数浏览器也计划在
年之后彻底禁用Flash插件。
解决此类问题的方法是尽早停止依赖Flash技术,转向使用更现代化且长期支持的技术。
解决Flash技术问题的关键是逐步转向使用更为现代化、安全和稳定的
5技术,
进行优化和安全措施的加强。
存储模块常见故障处理方法
存储模块是计算机中的重要组件之一,常常用于存储数据和程序。
然而,有时存储模块可能会出现故障,影响计算机系统的正常运行。
本文将介绍一些常见的存储模块故障处理方法供参考。
1. 检查连接
首先,当存储模块出现故障时,需要检查连接是否正常。
确保存储模块与计算机之间的连接线缆插紧,并且接口无松动。
2. 重新启动计算机
有时,存储模块故障可以通过重新启动计算机来解决。
尝试将计算机完全关机,等待一段时间后再重新启动。
这个简单的操作有时可以重新初始化存储模块,解决一些常见的故障问题。
3. 清理存储模块
存储模块内部的灰尘和污垢可能会导致故障。
使用压缩气罐或
软刷轻轻清理存储模块表面和接口部分,确保它们干净无尘。
4. 检测硬件问题
如果以上方法都不能解决故障,那么可能是存储模块本身出现
了硬件问题。
可以使用硬件检测工具来检测存储模块是否存在故障。
如果发现问题,可能需要更换存储模块或者修复硬件故障。
5. 寻求专业帮助
如果以上方法都无法解决存储模块的故障,建议寻求专业的技
术支持。
联系计算机维修人员或存储模块制造商,让专业人员来处
理故障。
他们有更专业的知识和工具,可以帮助诊断和解决存储模
块故障。
以上是一些常见的存储模块故障处理方法,希望对你有所帮助。
记住,在处理故障时,始终要确保安全,避免产生更多的问题。
如
果你不确定如何处理故障,请咨询专业人员。
友善之臂K9F1208U0C PCB04-5位,12代表512M位,也就是64M字节熟悉一下NandFlash的硬件:1主要的引脚:I/O0 —I/O7:数据输入输出端,命令,数据,地址复用端口(LDATA0-LDATA7)R/B: 准备忙输出(RnB)CE:芯片使能(nFCE)CLE: 命令锁存使能(CLE)ALE:地址锁存使能(ALE)WE:写使能(nFWE)RE:读使能(nFRE)2Mini2440的一些引脚设置:和寄存器设置:(NCON(Advflash), GPG13(页大小), GPG14(地址周期), GPG15(总线宽度)–参考引脚配置)#define rGSTATUS0 (*(volatile unsigned *)0x560000ac) //External pin status3NandFlash启动时,代码小于4k与大于4k的情况:在三星的NAND Flash 中,当CPU从NAND Flash开始启动时,CPU会通过内部的硬件将NAND Flash开始的4KB数据复制到称为“Steppingstone”的4KB 的内部RAM中,起始地址为0,然后跳到地址0处开始执行。
这也就是我们为什么可以把小于4KB的程序烧到NAND Flash中,可以运行,而当大于4KB时,却没有办法运行,必须借助于NAND Flash的读操作,读取4KB以后的程序到内存中。
4NandFlash的存储结构以及读写原理:4.1NandFlash中的块,页,位宽:●NAND Flash的数据是以bit的方式保存在memory cell(存储单元)一般情况下,一个cell中只能存储一个bit。
这些cell以8个或者16个为单位,连成bit line ,形成所谓的byte(x8)/word(x16),这就是NAND Flash的位宽。
这些Line会再组成Pape(页)。
然后是每32个page形成一个Block,所以一个Block(块)大小是16k.Block是NAND Flash中最大的操作单元。
遇到Nand Flash坏块怎么处理?
Nand Flash存储器是Flash存储器的一种,为固态大容量内存的实现提供了廉价有效的解决方案。
NAND存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,如嵌入式产品中包括数码相机、记忆卡、体积小巧的U盘等。
1989年,东芝公司发表了Nand Flash结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。
经过十几年的发展,NAND应用越来越广泛,但是大多数工程师却仍然不知道关于NAND应用的一些难点:分区、ECC纠错、坏块管理等。
只有真正了解NAND特性的工程师,才能在应用上得心应手,不会被Nand Flash所绊倒。
分区。
烧录器烧录NANDFlash注意事项烧录器烧录NAND Flash注意事项摘要:母片的数据读取出来,然后再把数据原原本本拷贝到其他芯片上,却无法正常运行呢?因为客户忽略了NAND flash里面是有坏块!芯片里面的坏块,就好像埋在芯片的“地雷”。
有效的“排雷”方法有哪些呢?日常工作场景:技术支持电话叮铃铃响了,客户在电话用非常紧急的语气说:“使用SmartPRO系列编程器,烧录某款NAND Flash,烧录成功之后,贴板却跑不起来,请紧急帮忙分析原因!”然后呢?…..然后就没有了…………耐心寻找疑点:通常遇到这种情况下,我们都会首先详细询问:“请将您的操作流程详细描述一下。
”发现问题的来源:客户的一五一十的说,他使用了最原始的办法:使用一颗能正常运行的NAND芯片作为母片,连接编程器之后,点击烧录软件上的“读取”按钮,把数据从芯片里面拷贝出来,然后再找几颗空白芯片,把数据拷贝进去。
从客户的描述当中,我们初步找到了原因:原来客户把NAND Flash当作普通Nor Flash 使用了!为了让读者更加愉快地阅读下文,先请本文的主角NAND Flash自我介绍一下1、Nand Flash有自我的存储结构:Nand Flash存储器由多个Block组成,每一个Block又由多个Page组成,每个Page 又包含主区(Main Area)和备用区(Spare Area)两个域;2、NAND Flash是有坏块的:由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND的生产中及使用过程中会产生坏块的。
3、NAND Flash有专用的ECC算法:由于NAND Flash本身工艺的特性,在读取或者校验的时候,会出现一个或者多个bit 的出错;为了应对这种情况,NAND Flash引用一种比较专用的校验方法----ECC(Error Correcting Code);4、NAND Flash容易出现位翻转:由于NAND Flash本身硬件的内在特性,在对Flash操作过程中,会偶尔地出现位反转的现象;所谓的位反转(bit flip)指的是原先NAND Flash中的某个位(bit),发生了变化,要么从1变成0了,要么从0变成1了;基于Nand Flash上述1、2、3、4点特性,我们还继续把它当作普通Nor Flash使用吗?NO!重新追溯问题的源头:为什么客户把母片的数据读取出来,然后再把数据原原本本拷贝到其他芯片上,却无法正常运行呢?因为客户忽略了NAND flash里面是有坏块!芯片里面的坏块,就好像埋在芯片的“地雷”,那么我们在读取数据的时候,会把母片里面的“地雷”当成数据!给出排除、解决方案:既然芯片里的“地雷”这么危险,那我们就想办法去躲开它吧,最简单最有效的方法就是:跳过!跳过“地雷”就真的能彻底解决问题了吗?NO!“地雷”是给被我们绕开了,原本写到“地雷”位置的数据,我们也安全转移到下一个块里,但是细心的人也会发现,数据存放的地址也发生了变化!用一个图来描述更清楚一点:很多客户使用NAND Flash来存储大量数据,而这些数据又是由多个文件分别组成,比如uboot、uImage、Logo、rootfs等烧录文件,每个文件在NAND Flash又给分配一定的存储区域,并且指定了每个文件存储的起始物理地址块;如果“地雷”出现在数据区域,为了避开它,势必需要把数据安全往下转移,引起的后果是后续烧录文件的起始物理地址也随着发生偏移了,这将会导致主控MCU无法准确完整地获取每个文件的数据,最终造成的结果是芯片无法跑起来!这样的话,就真的是没办法解决了吗?按分区烧录,完美解决问题按分区烧录,无论“地雷”出现在哪个地方,分区文件都是按照规则,来安排数据的存放的,很好的避开了“地雷”,也将根据客户预设方案存放在NAND Flash存储区内了。
电子电路中常见的存储器问题及解决方法在电子电路中,存储器是一种重要的组件,用于存储和检索数据。
然而,由于各种原因,常常会出现存储器问题,如数据损坏、读写错误等。
本文将讨论电子电路中常见的存储器问题,并提供相应的解决方法。
一、数据损坏问题及解决方法数据损坏是存储器中最常见的问题之一。
这可能是由于电磁干扰、电压波动或存储器本身的故障引起的。
当数据损坏发生时,可能导致数据读取错误或数据丢失。
以下是解决数据损坏问题的几种方法:1. 引入纠错码:纠错码是一种通过添加冗余数据来检测和纠正错误的技术。
通过使用纠错码,存储器可以检测到数据的错误并自动进行纠正。
这样可以大大提高存储器的可靠性。
2. 使用稳定的电源:电源波动是导致存储器数据损坏的常见原因之一。
因此,为了避免数据损坏,应尽量使用稳定的电源,或者使用电源稳压器来保持稳定的电压输出。
3. 防止电磁干扰:电磁干扰是导致存储器数据损坏的另一个主要原因。
为了解决这个问题,可以采取以下措施:将存储器远离电磁辐射源,使用屏蔽材料来隔离存储器,或者使用防护设备来减少电磁辐射。
二、读写错误问题及解决方法在存储器的读写过程中,可能会出现读写错误的情况。
这可能是由于电压不稳定、存储器芯片老化或者接触不良等原因引起的。
以下是解决读写错误问题的几种方法:1. 检查电压稳定性:在存储器读写过程中,电压的稳定性非常重要。
如果电压不稳定,可能导致读写错误。
因此,应使用电压稳压器来保持稳定的电压输出,并定期检查电压输出的稳定性。
2. 定期检查存储器芯片:存储器芯片可能会随着使用时间的增长而老化,从而引起读写错误。
为了解决这个问题,可以定期检查存储器芯片,并及时更换老化的芯片。
3. 确保良好的接触连接:存储器的读写过程中,芯片与接触器之间需要良好的接触连接。
如果接触不良可能导致读写错误。
为了确保良好的接触连接,可以使用专门的清洁剂清洁接触器,并定期检查接触器的状态。
三、存储容量问题及解决方法存储器的容量是设计中的一个重要考虑因素。
SPI NOR FLASH存储器的原理与常见问题分析1.前言FLASH闪存,一般简称为“FLASH”,它属于内存器件的一种,是一种非易失性(Non-Volatile)内存。
FLASH因其特殊的浮栅结构得以在掉电后长久地保存数据,这使得Flash成为各类便携型数字设备的存储介质。
本文主要介绍了SPI NOR FLASH存储器的基本原理以及常见的问题,可以帮助读者进一步了解和应对产品中的FLASH相关问题。
2.SPI NOR FLASH存储器的原理介绍1.FLASH的基础介绍FLASH是使用浮栅场效应管(Floating Gate FET)作为基本存储单元来存储数据的,图一(a)的模型中可以看出,与普通的MOSFET相比,区别仅在于浮栅,FLASH就是利用浮栅中是否存储电荷来表征数字0和1的。
对NPN的场效应管来说,在栅极和源极之间加一个VTH电压后,MOS管就可以导通,但如果在图示的浮栅中增加了一些电子,这些电子抵消了VTH的部分电压,原先的VTH可能就无法使MOS管导通,通过判断MOS管是否导通可以判断浮栅当中有无电子,即可以对应状态0和1。
图一、FLASH基础单元原理而FLASH就是由如上的存储单元组成,通常的FLASH可以按单元结构分为NOR和NAND FLASH,其主要区别在于单独存储单元的排列上,如图二所示,NOR FLASH的每个CELL之间是并联的关系,其中漏极一同连接到位线(Bit line)上,栅极接到字线(Word line)上,而NAND FLASH的每个CELL之间是串联的关系,其中源极和漏极CELL之间互连,栅极接到字线上。
这部分是FLASH存储单元的结构区分。
图二、FLASH单元结构区分如果要对FLASH内部的数据进行操作,还需要控制器去控制擦除、编程、读取的电压,根据控制器与外部通信的总线,可以分为Parallel(CFI)和SPI两种类型。
并口的FLASH数据位宽大,可以满足大量数据快速读取的需求,但管脚多也反映着其占用面积大;SPI FLASH使用SPI总线通信,只需要4根线即可通信,较为便捷,适用于一些小型化的设备中。
nandflash容错机制NAND Flash容错机制引言随着信息存储技术的不断发展,NAND Flash作为一种重要的非易失性存储介质,在各类电子设备中得到了广泛应用。
然而,由于NAND Flash本身的特性以及外部环境的因素,其在使用过程中可能会出现各种错误。
为了保证数据的可靠性和存储系统的稳定性,NAND Flash厂商采用了多种容错机制。
一、位错误容错NAND Flash存储单元中的位错误是指在数据读取或写入过程中,由于介质老化、电压干扰等原因导致存储单元的电荷状态发生变化,进而导致数据出错。
为了解决这个问题,NAND Flash采用了位错误容错机制。
1. ECC(Error Correction Code)ECC是一种常用的位错误容错技术。
在数据写入时,NAND Flash会使用ECC算法对数据进行编码,并将编码后的冗余信息存储在芯片内部的ECC区域。
在数据读取时,NAND Flash会使用同样的ECC算法对数据进行解码,通过比对编码后的冗余信息和读取到的数据,可以判断出是否发生了位错误,并且可以纠正部分位错误。
2. BCH(Bose-Chaudhuri-Hocquenghem)码BCH码是一种更加强大的位错误容错技术。
相比于ECC,BCH码可以纠正更多的位错误。
NAND Flash中采用的BCH码通常是通过硬件实现的,其纠错能力可以根据需要进行调整。
二、块错误容错除了位错误之外,NAND Flash还可能出现块错误。
块错误是指在NAND Flash芯片中,某个或某些块中的存储单元出现故障,导致无法正常读取或写入数据。
为了应对块错误,NAND Flash采用了块错误容错机制。
1. 坏块管理NAND Flash芯片中的每个块都有一个唯一的标识符,用于标记该块是否为坏块。
在出厂时,NAND Flash厂商会对芯片进行坏块检测和标记,将检测出的坏块在芯片内部的坏块表中进行登记。
在后续使用过程中,NAND Flash会将坏块从可用块池中排除,并通过其他块替代坏块的功能。
NAND闪存错误特性及缓解机制研究NAND闪存错误特性及缓解机制研究摘要:NAND闪存因其高密度、低功耗、高速读写等优点,在计算机存储设备中得到广泛应用。
但由于其特殊的物理结构,NAND闪存在使用过程中容易出现多种错误,严重影响其可靠性和性能。
本文从NAND闪存错误的发生原因、类型、频率等方面入手,探讨了NAND闪存错误的特性。
随后,分析了当前NAND闪存的缓解机制,包括错误纠正码(ECC)、保护字、备用块等。
最后针对当前NAND闪存缓解机制的不足之处,提出了进一步改进的思路和方向。
关键词:NAND闪存;错误特性;缓解机制;ECC;保护字;备用块。
正文:一、引言随着计算机技术的不断发展,存储设备也得到了迅速发展,其中NAND闪存因为它高密度、低功耗、高速读写等优点,已经成为了计算机存储设备的主流。
用于存储系统启动程序、操作系统、应用程序等,已经成为计算机系统中不可或缺的重要组成部分。
但是,由于其特殊的物理结构以及存储方式,NAND闪存在使用过程中容易出现多种错误,严重影响其可靠性和性能。
因此,如何有效地研究NAND闪存的错误特性以及缓解机制,已成为当前计算机存储设备领域值得深入研究的课题。
二、NAND闪存错误特性2.1 错误发生原因NAND闪存的大规模存储单元由一系列的闪存块、页、块地址和页地址寻址器组成,其内部由NAND串行接口单元和异步SRAM组成。
因此,错误很容易由硬件和软件等多个方面引起。
硬件错误可以分为芯片致命性失效、内部晶体管的断裂、栅极漏电、存储单元的开短路等;软件错误可以分为算法错误、I/O软件错误、操作系统缺陷等。
2.2 文件系统错误的发生频率NAND闪存的文件系统错误种类繁多、复杂多样,按照错误发生的频率顺序可分为以下几类:(1)软件上电复位错误:发生的概率较小,一般内部寄存器写入偏差所致。
(2)块擦除错误:发生概率较大,主要由于某一块被多次擦除,导致该块失效,坏块状况对全块数据的擦除和编程造成较大的影响。
nand flash 坏块管理方法NAND Flash坏块管理方法引言:NAND Flash是一种常见的非易失性存储器,广泛应用于各类电子设备中。
然而,由于使用寿命的限制,NAND Flash芯片在长时间使用过程中会出现坏块。
坏块的产生会对设备的性能和可靠性产生影响,因此,坏块管理成为了NAND Flash设计中的重要一环。
本文将介绍NAND Flash坏块的概念、产生原因以及常见的坏块管理方法。
一、NAND Flash坏块的概念和产生原因1. 坏块的概念NAND Flash芯片由许多个块组成,每个块又由多个页构成。
坏块是指其中的某个块无法正常读取或写入数据的现象。
坏块的产生主要是由于NAND Flash的使用寿命限制,长时间的擦写操作会导致块中的存储单元出现损坏,从而无法正常工作。
2. 坏块的产生原因- 累积擦写次数过多:NAND Flash芯片的每个块都有一定的擦写次数限制,当某个块的擦写次数达到上限时,该块会被标记为坏块。
- 动态擦除次数不均衡:由于NAND Flash芯片中每个块的擦除次数限制是有限的,而实际应用中某些块可能会被频繁擦除,而其他块则较少被擦除。
这种不均衡的擦除次数会导致部分块先达到擦写次数限制而成为坏块。
- 电压和温度变化:NAND Flash芯片的读写操作对电压和温度的要求比较高,如果环境中存在电压和温度的变化,可能导致某些块无法正常读写而成为坏块。
二、NAND Flash坏块管理方法1. 坏块的检测和标记在NAND Flash芯片制造过程中,会进行坏块的检测和标记。
检测坏块通常使用的方法是在芯片生产过程中的测试阶段进行,通过对每个块进行读写测试,发现有问题的块标记为坏块,并记录在芯片的坏块表中。
在芯片出厂后,该坏块表会被存储在芯片内部,供后续的坏块管理使用。
2. 坏块的映射和替换为了保证NAND Flash芯片的可靠性和性能,需要对坏块进行映射和替换。
映射是指将逻辑块地址映射到物理块地址的过程,通过映射表的维护,可以将逻辑块地址与物理块地址进行对应。
NANDFLASH中ECC的原理与错误
向NAND Flash写数据时,每256或512字节会生成一个校验码写在每个page的OOB区,当从NAND Flash读数据时,每读取256或512字节数据,也会生成一个ECC校验码,拿这个校验码与存放在OOB区的校验吗对比看看是否一致,就可以知道读取的数据是否正确.
一般来说,kernel与cramfs是通过U-BOOT烧写到NAND Flash 中,这个过程是向NAND Flash写数据,会产生ECC码,使用的是U-BOOT的ECC机制产生的(不管是硬件产生还是软件产生),然后这些ECC码会存放在NAND Flash的OOB区域。
当你启动Kernel时,会从NAND Flash中读数据,这是时候也会产生ECC码。
使用的还是U-BOOT的ECC机制产生的,因为这个读NAND操作是还是处在U-Boot运行状态下。
然后这个ECC码与写Kernel时产生的ECC码(保存在OOB区域)做比较,看是否有错误。
由于写Kernel与读Kernel都用的是U-BOOT的ECC产生机制,所以一般不会出错。
但你读Cramfs时,这个时候已经是内核状态啦。
所以读Cramfs 时用的Kernel的ECC产生机制,前面写Cramfs用的U-Boot机制,如果两种机制不一致(包括一个是硬件产生,一个是软件产生,或是软件产生算法不一样,或是OOB区域规划不一样),就会产生错误。
Flash常见问题100问1. 论坛上常说的MC、FS、AS代表什么意思?MC=Movie Clip(动画片断);FS=FSCOMMAND,是Flash的一个非常重要的一个命令集合;AS=Action script是Flash的编程语言。
2. 请说一下MC的详细运用,它和一般的层有什么区别?它用在什么情况下?你可以把MC看成一个独立的对象。
并且他是一段动画。
他的特点就是无限嵌套。
层是一个独立的空间,他可以更好的规划你的制作思路。
一个层里有一个事件。
3. MC在场景中是如何播放的?把MC拖到场景中,动画播放时它就会自动播放,如果你没有在最后一帧加上Stop,MC会默认为循环。
要观看播放的效果须执行Ctrl+Enter。
一个很长的MC放入场景中也只占据一帧的位置,如果它是一个很多帧的动画片段,执行时每隔一帧MC都会重放。
4. 做“沿轨迹运动”的动画的时候,物件为什么总是沿直线运动?首帧或尾帧物件的中心位置没有放在轨迹上。
有一个简单的检查办法:你把屏幕大小设定为400%或更大,察看图形中间出现的圆圈是否对准了运动轨迹。
5. 为什么在做封闭轨迹路径动画的时候,物件总沿着直线运动?把封闭的路径去掉一点点试一试。
6. 如何解决在Flash中做旋转转速问题?Modify>Movie,将Frame Rate后的文本框中的制调整一下即可(或者安Ctrl+M),或者将桢运动距离缩短。
7. 文字按钮为什么不灵活?你在制作按钮的时候,未指定HIT区(HIT区也就是按钮的触发区),特别在做文字按钮的时候,一般定义一个矩形来作为HIT区,如果未定义HIT区,系统会将文字作为按钮的触发区,在用的时候自然不是很灵活。
HIT区域是隐藏的,在场景中并不会显示出来。
8. 如何把动画输出成动态的gif文件?先在Publish Settings(发布设置)>Format(格式)>Gif image(gif影像),并对其进行相应的设置之后,用Publish(发布)功能便可输出GIF文件。
NAND Flash启动的问题(u-boot)用的是S3C2410.见附件start.s 其中关于nand flash启动的那一段一直百思不得其解,按说从NAND FLASH启动时,应该是前4KB映射到NGCS0,其中的代码将NAND中存放的程序拷贝到RAM中,但该文件提供的程序好象是先从NAND拷贝 128K的代码到ResetEntry开始的地方,即地址为0的地方,然后再从ResetEntry处拷到RAM中,但此时NGCS0好象只有4KB的 RAM区,怎么能存储128K的代码,一直没想通.望高手指点,谢谢!搞明白了,是两条指令的差别LDR r0,=_entry和ADR r0,_entry前者是在编译的时候按照load address生成的绝对地址,后者反汇编后是相对当前PC寻址,例如在ADS 中设置RO地址为0X30000000,那么前者传给r0的值是 0x30000000,而后者传给r0的值要视当前PC而定,一般从NGCS0中启动时,传给r0的值就是0。
amsung S3C2410支持Nor Flash和Nand Flash启动,在SBC-2410X上可以通过BOOTSEL跳线设置启动方式:|------||。
| boot from nand flash|------|--。
boot from nor flash注:(1) BOOTSEL跳线在"串口"和"usb slave接口"之间(2) 两个引脚用"跳线卡"连接,则表示从nand flash启动。
拔下"跳线卡"表示从nor flash启动。
椐了解 NOR FLASH 是容量小,速度快,稳定性好,适合做程序存储器。
NAND FLASH 总容量大,适合做数据存储器是不能从NAND FLASH启动的,NAND FLASH是的读写时序是不能直接有ARM硬件产生的,要读写NAND FLASH是要通过程序来实现的,很明显能看出来的就是NAND FLASH只有8个数据、地址复用的数据地址接口2410/2440可以直接从NAND FLASH启动的,因为它把NAND前面的4K映射到了RAM的空间首先应该先了解Flash ROM的种类NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。
NANDFlash的坏块处理要点NAND Flash的坏块处理产⽣坏块的原因是因为NAND Flash的⼯艺不能保证NAND的Memory Array 在其⽣命周期中保持性能的可靠,所以,在NAND 的⽣产中及使⽤过程中会产⽣坏块。
⼀、坏块的具体表现:当编程/擦除这个块时,不能将某些位拉⾼,这会造成Page Program和Block Erase操作时的错误,相应地反映到Status Register的相应位。
⼆、坏块的种类:1.先天性坏块这种坏块是在⽣产过程中产⽣的,⼀般芯⽚原⼚都会在出⼚时都会将坏块第⼀个page的spare area的第6个byte标记为不等于0xff的值。
2. 后天性坏块这种坏块是在NAND Flash使⽤过程中产⽣的,如果Block Erase或者Page Program错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。
为了和先天性坏块信息保持⼀致,将新发现的坏块的第⼀个page的spare area的第6个Byte标记为⾮0xff的值。
三、坏块的处理理解了先天性坏块和后天性坏块后,我们已明⽩NAND Flash出⼚时在spare area中已经反映出了坏块信息,因此,如果在擦除⼀个块之前,⼀定要先check⼀下spare area的第6个byte是否是0xff,如果是就证明这是⼀个好块,可以擦除;如果是⾮0xff,那么就不能擦除。
不过,这样处理可能会错杀伪坏块,因为在芯⽚操作过程中可能由于电压不稳定等偶然因素会造成NAND 操作的错误。
但是,为了数据的可靠性及软件设计的简单化,坏块⼀个也不能放过。
四、错杀坏块的补救⽅法如果在对⼀个块的某个page进⾏编程的时候发⽣了错误就要把这个块标记为坏块,⾸先就要把其他好的page⾥⾯的内容备份到另外⼀个空的好块⾥⾯,然后,把这个块标记为坏块。
当发⽣"错杀"之后,我们可以在进⾏完页备份之后,再将这个块擦除⼀遍,如果Block Erase发⽣错误,那就证明这个块是个真正的坏块,放⼼的做好标记吧!最后需要补充说明的是,之所以要使⽤spare area的第六个byte作为坏块标记,是因为NAND Flash⽣产商的默认约定,例如:Samsung,Toshiba,STMicroelectronics都是使⽤这个Byte作为坏块标记的。
NAND flash常见问题汇总
掉程序(这里专指使用NAND flash的主板掉程序),这是一个让工程师浑身发毛的问题,特别是用着用着程序就没有了,往往这个时候很多工程师都无法下手,问题出现的时候你可能根本不在旁边,无法看到问题现象,而且通过测量信号也很难发现问题的原因,这个时候很多工程师可能会采用更换主板器件的方式,用排除法来定位问题,基本上换一个NAND flash就可以解决问题了。
这个时候很多工程师可能就会表示NAND flash有问题,需要换厂商,换品牌。
但其实还可以更加深入的去了解问题的原因,这里我总结一下我遇到过得NAND flash掉程序的情况及原因。
1.电源电压不稳导致的NAND flash程序错误
很多时候,产品在客户手中出现了问题,工程师把产品拿回来,重新烧录程序产品可以上电启动,反复测试并不会出现掉程序的情况。
如果这种产品是带有电池的产品,就可以考虑一下是否在客户实际使用中是用电池的情况,当电池的电量比较低,或者在极端情况下,程序对于电池电量的检测阈值较低,这个时候主控就有可能刚刚可以启动,但是很快电量不够,NAND flash内的程序乱掉,从而无法正常启动。
解决方法可以在程序中加入或者提高电池电量检测的阈值,保证所有芯片在这个阈值上均可以正常工作。
2.DRAM工作状态不正常导致的NAND flash程序错误
主控, DRAM和NAND flash基本构成了一个产品的最小系统。
当系统中的任何一环出现问题,整个系统就可能出现问题。
但是当DRAM出现问题时,有可能反映出来的是NAND flash 出错,掉程序或者查明NAND flash坏块过多。
对于这种情况,处理起来就会复杂一些。
如果直接重新烧录程序,系统又能正常工作,则说明之前存储在NAND flash中的程序确实乱了,但是NAND flash的功能正常,特别是SLC规格的1bit ECC 的NAND flash,出错概率非常小。
因为对于NAND flash来说,只有当写数据或者擦除数据时,数据可能产生坏块,当程序只是读取的状态时,由于不涉及电荷的改变,所以NAND flash一般不会出现问题。
但从程序的调试端口读到NAND flash坏块很多时,看是否有更深入的调试工具,例如JTAG等调试工具,可以深入调试NAND flash的情况。
有些时候,因为一些程序误操作,导致将原本good block的标志位标记成了bad block。
用过JTAG调试工具可以修改标志位,并且重新打标,重新烧录一遍程序,有可能主板又能重新启动了。
3.坏块管理未做好
因为NAND flash都面临着可能出现坏块的问题,所以必须应该对于坏块进行管理,在规格书中可以看到,坏块产生的三种情况,在编程的时候,在擦出的时候,在读取的时候。
对于这几种情况下,程序应该怎么操作,规格书中也有流程图来说明,在读取和擦除中,如果出现失败情况,就需要重新坏一个块进行目标块的转移,并且对于当前块进行标识,在坏块表中进行更新。
通过对于坏块表的维护,达到程序避免写入坏块中的情况。
在读取程序时,也需要对于ECC进行校验,保证读取的程度是真实可靠的。
但是很多工程师可能由于对于坏块管理做的不够仔细,导致产品在实际使用中,会出现掉程序的问题。
工程师也应该从程序方面着手,分析一下程序对于坏块部分管理是否完善。
从上面三种类型只是部分说明了关于掉程序这个问题的一些原因。
特别是对于1bit ECC 的SLC NAND flash大部分适用,工程师们可以进行参考。