TI中文支持网
TI专业的中文技术问题搜集分享网站

请问怎样查看nandflash占用GPMC总线的地址空间情况

TI的am335x的处理器,板子上带有512M的nandflash,通过GPMC总线连接,请问怎样查看nandflash占用GPMC总线的地址空间情况,我还想连其他外设,但是GPMC支持的地址空间最大为512M,请问我该怎么办?

Steven Liu1:

TRM7.1 GPMC章节,查一下GPMC_CONFIG7_i的寄存器。其中i代表你使用的是片选几。也可以参考这个链接:http://blog.csdn.net/swallow71701/article/details/22793191

leo chen:

回复 Steven Liu1:

我觉得nand的地址空间 和 GPMC的地址空间不是一回事

nand占用gpmc的地址空间 主要看他占用gpmc多少地址线

Steven Liu1:

回复 leo chen:

首先,NAND是通过stream的方式进行通信,所以NAND和GPMC通信没有地址线,只有数据线。

其次,我理解你的意思是不是说,NAND的地址空间,和规划出的GPMC地址空间,可能不一致;真实的NAND的地址空间,是要看NAND的大小?

如果是这个意思的话,你是可以通过配置GPMC_CONFIG7_i这个寄存器的【11-8】bit,来配置GPMC空间的大小,即为你NAND的空间大小,最小16MB,最大256MB,确保这个地址空间是match的。

 

Jian Zhou:

回复 Steven Liu1:

如果你是用Linux驱动,那么请你看一下gpmc_nand_init()这个函数,里面给NAND所占用的CS0片选的地址空间,应该是16M

lei kou:

回复 Steven Liu1:

谢谢回复!!

你的意思是nand不占用GPMC的地址空间吗?但是nand用的是GPMC的CS0呀!

这个是源码的引脚初始化:

/* Pin mux for nand flash module */static struct pinmux_config nand_pin_mux[] = { {"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_csn0.gpmc_csn0", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, {"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, {"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, {"gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, {"gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, {NULL, 0},};

lei kou:

回复 Jian Zhou:

你好!谢谢回复!!!,这个是函数源码,看不出是占用了多少呀!

int __devinit gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data){ int err = 0; u8 cs = 0; struct device *dev = &gpmc_nand_device.dev;

/* if cs not provided, find out the chip-select on which NAND exist */ if (gpmc_nand_data->cs > GPMC_CS_NUM) while (cs < GPMC_CS_NUM) { u32 ret = 0; ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);

if ((ret & 0xC00) == 0x800) { printk(KERN_INFO "Found NAND on CS%d\n", cs); gpmc_nand_data->cs = cs; break; } cs++; }

if (gpmc_nand_data->cs > GPMC_CS_NUM) { printk(KERN_INFO "NAND: Unable to find configuration " "in GPMC\n "); return -ENODEV; }

gpmc_nand_device.dev.platform_data = gpmc_nand_data; gpmc_nand_data->ctrlr_suspend = gpmc_suspend; gpmc_nand_data->ctrlr_resume = gpmc_resume;

printk(KERN_INFO "Registering NAND on CS%d\n", gpmc_nand_data->cs);

err = gpmc_cs_request(gpmc_nand_data->cs, NAND_IO_SIZE, &gpmc_nand_data->phys_base); if (err < 0) { dev_err(dev, "Cannot request GPMC CS\n"); return err; }

/* Set timings in GPMC */ err = omap2_nand_gpmc_retime(gpmc_nand_data); if (err < 0) { dev_err(dev, "Unable to set gpmc timings: %d\n", err); return err; }

/* Enable RD PIN Monitoring Reg */ if (gpmc_nand_data->dev_ready) { gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_RDY_BSY, 1); }

err = platform_device_register(&gpmc_nand_device); if (err < 0) { dev_err(dev, "Unable to register NAND device\n"); goto out_free_cs; }

return 0;

out_free_cs: gpmc_cs_free(gpmc_nand_data->cs);

return err;}

Steven Liu1:

回复 lei kou:

不是这个意思,肯定是占用的。

我前面说的,NAND没有地址线,不是说不占地址空间,而是因为他通过stream mode的方式通信,这种方式不支持地址线寻址。NAND就是这样的设备。

lei kou:

回复 Steven Liu1:

谢谢回复!那请问我要如何查看nandflash占用GPMC的空间呢,因为我现在要通过GPMC连接另外一个外设,如果不清楚nandflsh占用的空间的话,我怕两个外设的地址空间会重合

Steven Liu1:

回复 lei kou:

1. 从Linux源码里面找,ls的朋友给了你提示了。

2. 在板子起来后通过“devmem2 0x50000078”即可查看GPMC_CONFIG_7_0的寄存器配置,结果0xF48,代表基址位0x0800 0000,大小16M,即为0x08000000~0x08FFFFFF为当前的NAND使用空间。

如果还有问题的话,看看这篇文章吧:

STONE:

回复 Steven Liu1:

请问我下面的理解是否正确:

CS0外挂一块512M Nand

如果CONFIG7_0 = 0x050,则表示基地址为0x1000_0000,大小为512M,地址范围为:0x1000 0000~0x1FFF FFFF,但是这个范围实际为256M,所以这样设置仅仅只能访问Nand的前256M空间。要想访问整个Nand空间,需将其设置为0x40。

这样理解对吗? 

赞(0)
未经允许不得转载:TI中文支持网 » 请问怎样查看nandflash占用GPMC总线的地址空间情况
分享到: 更多 (0)