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

am335x evm外接两个8位的nand flash

各位高手,大家好:

     我用的是am335x evm板子的内核源码,我现在自己做了一块板,想外接两个8位的nand flash芯片,原理图如下:

,现在CS0控制的第一块8位的nand flash已经通了,我是通过修改初始化代码以后就通了,我想请教那位高手CS1控制的第二块8位的nand flash如何调试,还有就是上面的原理图这样设计有问题吗?主要是想知道能否通过调用第一块8位的nand flash所用的函数来实现,还请各位大侠赐教,谢谢

zhenonline:

回复 leo chen:

各位,再请教一下,如果我用cs1控制另一个nand flash,我是不是需要再写一个设备文件,mux_pin初始化,能否直接用下面的初始化:

因为这两片nandflash的AD线和信号线都是共用的,能否加我QQ(516719865),进行讨论一下,谢谢。

Jian Feng1:

回复 zhenonline:

static void evm_nand_init(int evm_id, int profile){ struct omap_nand_platform_data *pdata; struct gpmc_devices_info gpmc_device[2] = { { NULL, 0 }, { NULL, 0 }, };

setup_pin_mux(nand_pin_mux); pdata = omap_nand_init(am335x_nand_partitions, ARRAY_SIZE(am335x_nand_partitions), 0, 0, &am335x_nand_timings); if (!pdata) return; pdata->ecc_opt =OMAP_ECC_BCH8_CODE_HW; pdata->elm_used = true; gpmc_device[0].pdata = pdata; gpmc_device[0].flag = GPMC_DEVICE_NAND;

omap_init_gpmc(gpmc_device, sizeof(gpmc_device)); omap_init_elm();}

参考这个函数,它只添加了CS0,你可以把CS1也添加进去

zhenonline:

回复 Jian Feng1:

Jian Feng1,你好,

            你的意思是说直接加到这个函数(evm_nand_init)中,还是在重写一个新函数,还有我上面的nand_pin_mux那样初始化有问题吗?因为除了CS0与CS1不共用,其它的都是共用,应该不能单独对这两个nandflash进行初始化,如果这样就会重复初始化的。能否帮我把CS0和CS1在nand_pin_mux和evm_nand_init()简单写一下,我可以参考一下,谢谢

Jian Feng1:

回复 zhenonline:

nand_pin_mux 只是初始化了管脚

evm_nand_init中最后会调用omap_init_gpmc 往Platform-bus上添加一个omap-nand 的设备,这样这个nand才能真正的初始化

研究一下evm_nand_init这个函数时怎么工作的就明白了

zhenonline:

回复 Jian Feng1:

您 好,

      我最近研究过,omap_init_gpmc 主要进入gpmc.c这个文件,对gpmc进行初始化,但是一直不太明白是怎么把CS0传进去的,还请帮忙看一下如何把CS1传进行,谢谢。

zhenonline:

回复 Jian Feng1:

Jian Feng1,您好,

    根据你给的提示,现在CS1也加进去了,还有

#define MAX_NAND_NUM 2static struct omap_nand_platform_data omap_nand_data[MAX_NAND_NUM] = {//.gpmc_t = &nand_default_timings,};

是需要注释掉吗?

赞(0)
未经允许不得转载:TI中文支持网 » am335x evm外接两个8位的nand flash
分享到: 更多 (0)