天嵌 ARM开发社区

 找回密码
 注册
查看: 2412|回复: 3

TQ2440的NAND FLASH忙状态检测问题......

[复制链接]
Romatom 发表于 2012-9-17 19:56:22 | 显示全部楼层 |阅读模式
本帖最后由 Romatom 于 2012-9-18 13:35 编辑

在nand flash的操作中,有个问题让我这样的菜鸟很糊涂。
下面是NFSTAT寄存的定义:

在一本书上《ARM处理器裸机开发实践》中说当NFSTAT的第二位为0时,说明NAND FLASH内部操作正在进行,处于忙状态。
所以其用了宏#define NF_Check_Busy{while(!(rNFSTAT&(1<<2)));}检测nand是否处于忙状态。所以疑问重重:
问题1:NFSTAT的第0位和第2位到底有什么差别?他们分别是用来干什么的?
问题2:在TQ2440启动代码的nand.h中,宏#define NF_WAITRB{while(!(rNFSTAT&(1<<0)));}和宏#define NF_DETECT_RB{while(!(rNFSTAT&(1<<2)));}有什么差别,到底是哪一个是用来检测NAND FLASH忙状态的?

问题补充:刚网上看到一点说,NFSTAT是一个比较重要的寄存器,它的0位可用用于判断nandflash是否在忙,第2位用于检测RnB引脚信号,RnB引脚信号不就代表着nandflash的状态吗?到底怎么回事儿,真心糊涂了。


亲们,帮帮小弟。谢谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2012-9-18 09:40:51 | 显示全部楼层

回帖奖励 +4

bit2是一个软件的东西,属于CPU内部的判断,根据外面的变化而做出一些内部处理的事宜。
bit0是一个硬件的东西,属于CPU判断外面的变化,而设置一个标志位。
分两个步骤来讲:
首先是bit0:bit0变化的依据是nRB脚,nRB脚是从Nand Flash芯片引过来的,Nand Flash芯片告诉它为0就是0,告诉它为1就是1,bit0完全根据nRB当前的状态来确定值。
下面说bit2:当bit0的值从0变成1了,CPU就根据bit0的这个变化告诉bit2要变成1,同时如果CPU有相关中断可以设置,就产生中断。分析到这里,剩下的不用我再讲了吧。

 楼主| Romatom 发表于 2012-9-18 11:02:35 | 显示全部楼层
亚瑟王 发表于 2012-9-18 09:40
bit2是一个软件的东西,属于CPU内部的判断,根据外面的变化而做出一些内部处理的事宜。
bit0是一个硬件的东 ...

:handshake,懂了,都不知道怎么谢了。:)
思念中的守候 发表于 2013-6-25 19:28:10 | 显示全部楼层
我读写操作时为什么RnB一直处于忙状态呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-26 18:46 , Processed in 1.093750 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表