把AM3359 GPMC总线设置为8bit位宽,异步单周期读写模式,读和写周期都为消耗8个时钟(总线时钟频率为100MHz)。
测试连续读10MB个数据,消耗时间为 2857ms;
测试连续写10MB个数据,消耗时间为 840ms;
问:读和写周期设置为同样的8个时钟,为何实测读周期比写周期消耗时间长了好几倍???
读写周期相关寄存器设置代码如下:
#define GPMC_CS 2
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG1, 0x00000000);
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG2, 0x00070700);
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG3, 0x00000000);
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG4, 0x07020702);
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG5, 0x00060808);
gpmc_cs_write_reg(GPMC_CS, GPMC_CS_CONFIG6, 0x00000000);
测试代码如下:
char bufa[1024*1024];
for(cnt=0; cnt<10; cnt++) // 读10MB
ioread8_rep(base_mem, (void *)bufa, sizeof(bufa));
for(cnt=0; cnt<10; cnt++) // 写10MB
iowrite8_rep(base_mem, (void *)bufa, sizeof(bufa));
zhixie hediu:
这里不是TI的技术支持社区吗?没一个人懂的??
leo chen:
回复 zhixie hediu:
我的配置是这样的
#define STNOR_GPMC_CONFIG1 0x00001000#define STNOR_GPMC_CONFIG2 0x00040401#define STNOR_GPMC_CONFIG3 0x0#define STNOR_GPMC_CONFIG4 0x04020402#define STNOR_GPMC_CONFIG5 0x00050707#define STNOR_GPMC_CONFIG6 0x0
写10MB时间大约700ms,读10MB时间大概170ms
时间测算使用gettimeofday