天嵌 ARM开发社区

 找回密码
 注册
查看: 3869|回复: 4

TQ2440的nandflash(k9f2g08u0b)的读写地址问题?

[复制链接]
linuxman 发表于 2012-9-4 18:28:25 | 显示全部楼层 |阅读模式
void __write_address_nand(uint32_t addr)
{
pg_nand_reg->NFADDR = (uint8_t)((addr) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>8) & 0x7);
pg_nand_reg->NFADDR = (uint8_t)((addr>>11) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>19) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>27) & 0xff);
}
按照手册的地址分为五周期,应该是:
void __write_address_nand(uint32_t addr)
{
pg_nand_reg->NFADDR = (uint8_t)((addr) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>8) & 0x7);
pg_nand_reg->NFADDR = (uint8_t)((addr>>12) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>20) & 0xff);
pg_nand_reg->NFADDR = (uint8_t)((addr>>28) & 0xff);
}
我试了,发现的确应该是最上面正确,但我哪里理解错了吗?
还有下面的一段也能在板子上正确裸跑(改自韦东山的代码)
col = addr & 2047;
page = addr / 2048;

*p = col & 0xff;   
for(i=0; i<10; i++);  
*p = (col >> 8) & 0x0f;  
for(i=0; i<10; i++);
*p = page & 0xff;   
for(i=0; i<10; i++);
*p = (page >> 8) & 0xff;
for(i=0; i<10; i++);
*p = (page >> 16) & 0x03;
for(i=0; i<10; i++);
这是为什么啊,能详细的讲讲吗、谢谢啦。

本帖子中包含更多资源

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

×
 楼主| linuxman 发表于 2012-9-4 21:57:05 | 显示全部楼层
亲们,有遇到过的吗??很郁闷啊 》》》》》。
回复

使用道具 举报

zyp568 发表于 2012-9-11 13:33:27 | 显示全部楼层
手册上column address是比较容易误导人啊,估计你这个理解错了。
1个大页有2048Byte数据区,那么应该是2的11次方,那么column addr应该是bit0~bit10.
1个大页还有64Byte的OBB区,它同样属于这个大页,芯片将它跟前面的数据区进行了统一的编址。
那么要想访问OBB区则需要再多1根地址线,虽然它是严重的浪费了。
即column地址占了12位,bit0~11。

韦老师的代码里,应该是想把nand当做一块内存来读/写,代码里的地址对应的只是数据区,而不包含OBB区。

再算一下ROW addr,有17位,2^17=131072 = 128K
128K * 2K(数据区) = 256M。

一般OBB区不用作写数据,其中可以存放一些校验数据或者坏块标记之类的。
回复

使用道具 举报

 楼主| linuxman 发表于 2012-9-11 17:22:20 | 显示全部楼层
zyp568 发表于 2012-9-11 13:33
手册上column address是比较容易误导人啊,估计你这个理解错了。
1个大页有2048Byte数据区,那么应该是2的 ...

早就明白了,但还是要谢谢啦。。。
回复

使用道具 举报

jxhui23 发表于 2012-12-28 17:55:51 | 显示全部楼层
太感谢你了  我也遇到这样的问题 不过按照你的方法已经解决了  呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-6-17 10:34 , Processed in 2.041119 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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