现在我的系统上外扩了SRAM,设置如下:
EPIDividerSet(EPI0_BASE, 4);
EPIModeSet(EPI0_BASE, EPI_MODE_HB8 );
EPIConfigHB8Set(EPI0_BASE, EPI_HB8_MODE_ADMUX | EPI_HB8_CSCFG_ALE_DUAL_CS | EPI_HB8_WORD_ACCESS | EPI_HB8_WRWAIT_3 | EPI_HB8_RDWAIT_3, 1024);//EPI_HB8_MODE_ADMUX
EPIAddressMapSet(EPI0_BASE, EPI_ADDR_RAM_SIZE_16MB | EPI_ADDR_RAM_BASE_6);
//EPIFIFOConfig(EPI0_BASE,EPI_FIFO_CONFIG_TX_EMPTY | EPI_FIFO_CONFIG_RX_FULL);
while(HWREG(EPI0_BASE + EPI_O_STAT) & EPI_STAT_INITSEQ) {}
然后定义数组:
uint8 imageDataBuf[MAX_EPAPER_TAG_NUM][EPAPER_DATA_NUM][EPAPER_DATA_LEN]__attribute__((at(0x60000000)));
问题1:
EPIConfigHB8Set();参数里是EPI_HB8_MODE_ADMUX而不是EPI_HB8_MODE_SRAM,当我用EPI_HB8_MODE_SRAM时,发现数据写入有问题,写一外数据就会在SRAM中看到好多个;
问题2:
系统运行后,有机率SRAM中有些内容不能被更改,是随机的;
问题3:
uint8 fls_para[PARA_NEW_LEN+READER_NAME_LEN] __attribute__((at(PARA_ADDR)))={0x12,0x98,0x32,};
uint16 fls_para1[(1024-PARA_NEW_LEN-READER_NAME_LEN)/2+1] __attribute__((at(PARA_ADDR+((PARA_NEW_LEN+READER_NAME_LEN)/2+1)*2)))={0x1212,0x3245};
uint8 imageDataBuf[MAX_EPAPER_TAG_NUM][EPAPER_DATA_NUM][EPAPER_DATA_LEN]__attribute__((at(0x60000000)));
这样定义编译烧写,会发现fls_para,fls_para1两个会全是0xff,而要先屏蔽imageDataBuf的定义,先烧写一次,再将其打开才能正常。