从目前理解的内容来看,GPMC的配置主要涉及到以下几个函数,不妥之处欢迎拍砖。
1、gpmc_cs_request(int cs, unsigned long size, unsigned long *base)
主要和GPMC_CS_CONFIG7相关,主要涉及cs的使能等
2、gpmc_cs_configure(int cs, int cmd, int wval)
主要和GPMC_CS_CONFIG1相关, 主要配置位宽、模式等比如:
val = GPMC_CONFIG1_READMULTIPLE_SUPP; val |= GPMC_CONFIG1_READTYPE_SYNC; val |= GPMC_CONFIG1_WRITETYPE_SYNC; val |= GPMC_CONFIG1_CLKACTIVATIONTIME(2); val |= GPMC_CONFIG1_PAGE_LEN(2); val |= GPMC_CONFIG1_DEVICESIZE_16; val |= GPMC_CONFIG1_DEVICETYPE_NOR; val |= GPMC_CONFIG1_MUXADDDATA; gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, val);
3、gpmc_cs_set_timings(int cs, const struct gpmc_timings *t)
主要和GPMC_CS_CONFIG2、3、4、5相关
4、gpmc_cs_read_reg(int cs, int idx),gpmc_cs_write_reg(int cs, int idx, u32 val)
主要用来读写寄存器的,比如
val = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG6); val &= 0xe0f0f030; val |= 0x0a060484; gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, val);
GPMC_CS_CONFIG6需要单独的配置
Jian Zhou:
这是针对NAND FLASH的配置吗?
leo chen:
回复 Jian Zhou:
nor啊
过程应该是雷同的