大家好!
我现在使用startware的SDK,使用MX30LF1G18AC的nandflash,使用GPMC的异步模式进行读写,8位位宽, 现在遇到读写速度很慢的问题,现在理论算了下nandflash的读写速度应该有30MB/S, 实际测试速度只有900KB/S, 我尝试过了EDMA,开启nandflash的cache(页缓冲),开启GPMC的预读取引擎,cache也开启了,感觉速度还是上不去。。
哪位大神帮忙看看。
MX30LF1G18AC,通用的ONFI接口 , 时序有:
我配置的GPMC参数如下:
/* NAND related */
#define NAND_CS0_BASEADDR (0x00000000)
#define NAND_CS0_REGIONSIZE (GPMC_CS_SIZE_128MB)
#define NAND_DATA_XFER_MODE (NAND_XFER_MODE_CPU)
//#define NAND_DATA_XFER_MODE (NAND_XFER_MODE_DMA)
#define NAND_BUSWIDTH (NAND_BUSWIDTH_8BIT)
#define NAND_CHIP_SELECT (NAND_CHIP_SELECT_0)
#define NAND_BLOCK_SIZE_IN_BYTES (NAND_BLOCKSIZE_128KB)
#define NAND_NUMOF_BLK (2048)
#define NAND_MANUFATURER_MICRON_ID (0x2C)
#define NAND_DEVICE_ID (0xF1)
#define NAND_CSWROFFTIME (30)
#define NAND_CSRDOFFTIME (30) //修改 31- 30
#define NAND_CSONTIME (0)
#define NAND_ADVONTIME (0)
#define NAND_ADVAADMUXONTIME (0)
#define NAND_ADVRDOFFTIME (23) //修改 31- 30
#define NAND_ADVWROFFTIME (23) //修改 31- 30
#define NAND_ADVAADMUXRDOFFTIME (0)
#define NAND_ADVAADMUXWROFFTIME (0)
#define NAND_WEOFFTIME (22) // GPMC_CONFIG4_0 Bit24-bit28
#define NAND_WEONTIME (5) // GPMC_CONFIG4_0 Bit16-bit19
#define NAND_OEAADMUXOFFTIME (0) // GPMC_CONFIG4_0 Bit13-bit15
#define NAND_OEOFFTIME (24) // GPMC_CONFIG4_0 Bit8-bit12
#define NAND_OEAADMUXONTIME (0) // GPMC_CONFIG4_0 Bit4-bit6
#define NAND_OEONTIME (7) // GPMC_CONFIG4_0 Bit0-bit3
#define NAND_RDCYCLETIME (23) // GPMC_CONFIG5_0
#define NAND_WRCYCLETIME (23) // GPMC_CONFIG5_0
#define NAND_RDACCESSTIME (21) // GPMC_CONFIG5_0
#define NAND_PAGEBURSTACCESSTIME (0)
#define NAND_BUSTURNAROUND (0) // GPMC_CONFIG6_0 Bit0-bit3
#define NAND_CYCLE2CYCLEDIFFCSEN (0) // GPMC_CONFIG6_0 Bit6
#define NAND_CYCLE2CYCLESAMECSEN (1) // GPMC_CONFIG6_0 Bit7
#define NAND_CYCLE2CYCLEDELAY (0) // GPMC_CONFIG6_0 Bit8-bit11
#define NAND_WRDATAONADMUXBUS (10) // GPMC_CONFIG6_0 Bit16-bit19
#define NAND_WRACCESSTIME (22) // GPMC_CONFIG6_0 Bit24-bit28
相应的GPMC寄存器的值为:
预读取引擎:
GPMC_PREFETCH_CONTROL[0x00000001]
GPMC_PREFETCH_STATUS[0x40001fc0]
GPMC_PREFETCH_CONFIG1[0x18004084]
GPMC_PREFETCH_CONFIG2[0x00002000]
7个GPMC的寄存器:
GPMC_CONFIG1[0x00000810]
GPMC_CONFIG2[0x001e1e00]
GPMC_CONFIG3[0x00171700]
GPMC_CONFIG4[0x16051807]
GPMC_CONFIG5[0x00151717]
GPMC_CONFIG6[0x16050f80]
GPMC_CONFIG7[0x00000840]
=====================================================
另外在这个帖子上看到e2e.ti.com/.../1457937
需要开启MMU的GPMC部分,不可缓冲:
REGION regionDev1 = {
MMU_PGTYPE_SECTION, 0x50000000, 16,
MMU_MEMTYPE_NORMAL_NON_SHAREABLE(MMU_CACHE_WT_NOWA,
MMU_CACHE_WB_WA),
MMU_REGION_NON_SECURE,
MMU_AP_PRV_RW_USR_RW,
(unsigned int*)pageTable
};
其中GPMC的地址是0x50000000.
但是会挂掉!!!
======================================================
有哪位大神整个GPMC的,支个招??
