打印

2k page Nand Flash驱动遇到问题

[复制链接]
1706|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rocenting|  楼主 | 2008-6-5 19:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在开发2k page nand flash驱动的时候,遇到以下问题: 
1.我用st的1Gbit的Nand Flash,芯片的datasheet里面没有单独读写spare区的命令,怎样能不对Main Data区进行操作,就可以对spare区进行单独访问即可以读和写? 
2.芯片的datasheet是说A0-A11是Column Address, A12-A30是Row Address,A0-A7第一个周期发送,A8-A11第二个周期发送,A12-A19第三个周期发送,A20-A27第四个周期发送,A28-A30第五个周期发送。而实际代码的时候,第三次是写A11-A18到i.MX21的NAND FLASH的寄存器。 
static D_BOOL PageAddress(D_UINT32 ulAddress) 

    int i; 
    for (i = 0; i < 5; i++) { 
        if (i == 0) { 
            if (!AddressInput(0x00& 0xFFFF)) 
                return FALSE;        
        } else if (i == 1) { 
            if (!AddressInput(0x00& 0xFFFF)) 
                return FALSE;  
        } else { 
            if (!AddressInput((ulAddress>>((i-1)*8+3))& 0xFFFF)) 
                return FALSE;  
        } 
    } 

    return TRUE; 

随便提一下,我现在是移植datalight公司的FlashFX  for VxWorks,文件系统能用了,但其自带的单元测试过不了。

相关帖子

沙发
tpu| | 2008-6-8 22:27 | 只看该作者

..

a0-a11是页内的偏移地址。a0-a10访问2k的数据,a11为1则访问spare数据。
之后的a11-a29是页的逻辑地址。这里的A11不要和前面的页内的a11搞混了。

使用特权

评论回复
板凳
rocenting|  楼主 | 2008-6-10 09:16 | 只看该作者

还有问题

首先谢谢回答。
你说的我都知道,但时间太紧没有时间测试这个疑问,我现在是用另外的方法实现文件系统的,现在U盘功能也已经实现了。

但有一个问题,我用如下地址访问Spare区
static D_BOOL BlockAddress(D_UINT32 ulAddress) 

    int i; 
    for (i = 0; i < 5; i++) { 
        if (i == 0) { 
            if (!AddressInput(0x00& 0xFFFF)) 
                return FALSE;        
        } else if (i == 1) { 
            if (!AddressInput(0x08& 0xFFFF)) 
                return FALSE;  
        } else { 
            if (!AddressInput((ulAddress>>((i-1)*8+3))& 0xFFFF)) 
                return FALSE;  
        } 
    } 

    return TRUE; 
}
问题有2个
1. 用以上地址访问得到的Spare是传到我原来Main data的buffer还是原来Spare data的buffer。
2. 我用的是i.mx21芯片,原来main区和spare都访问的时候2k数据是分4次传输,mian区数据每次512bytes(spare区数据每次16bytes)就来一个中断,而我现在单独访问,还是继续4次传,每次传16bytes还是一次传64bytes。

我现在刚弄好usb的u盘访问,还有很多东西要做,没有时间来测试这个疑问。提出来,如有人知道可以探讨一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝