From 0222697f212209b35652510e00421259714b3f3d Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Wed, 8 Sep 2021 09:10:21 +0200 Subject: [PATCH] liblitespi/spiflash: Move memspeed to specific function (spiflash_memspeed) and reduce test size. On slow configurations (ex iCEBreaker / SERV CPU / 12MHz SPI Flash freq) memspeed test was too slow (>200s to do the random test for 1MB), so reduce test size to 4KB. This will be less accurate but will still provide representative results which is the aim of this test. --- litex/soc/software/liblitespi/spiflash.c | 12 ++++++++++-- litex/soc/software/liblitespi/spiflash.h | 7 +++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/litex/soc/software/liblitespi/spiflash.c b/litex/soc/software/liblitespi/spiflash.c index 6f8c47a63..54214472e 100644 --- a/litex/soc/software/liblitespi/spiflash.c +++ b/litex/soc/software/liblitespi/spiflash.c @@ -93,6 +93,14 @@ static void spiflash_master_write(uint32_t val, size_t len, size_t width, uint32 #endif +void spiflash_memspeed(void) { + /* Test Sequential Read accesses */ + memspeed((unsigned int *) SPIFLASH_BASE, 4096, 1, 0); + + /* Test Random Read accesses */ + memspeed((unsigned int *) SPIFLASH_BASE, 4096, 1, 1); +} + void spiflash_init(void) { printf("\nInitializing %s SPI Flash @0x%08lx...\n", SPIFLASH_MODULE_NAME, SPIFLASH_BASE); @@ -123,8 +131,8 @@ void spiflash_init(void) spiflash_freq_init(); #endif - memspeed((unsigned int *) SPIFLASH_BASE, SPIFLASH_SIZE/16, 1, 0); - memspeed((unsigned int *) SPIFLASH_BASE, SPIFLASH_SIZE/16, 1, 1); + /* Test SPI Flash speed */ + spiflash_memspeed(); } #endif diff --git a/litex/soc/software/liblitespi/spiflash.h b/litex/soc/software/liblitespi/spiflash.h index fd846aced..e76a7d2a2 100644 --- a/litex/soc/software/liblitespi/spiflash.h +++ b/litex/soc/software/liblitespi/spiflash.h @@ -1,13 +1,12 @@ #ifndef __LITESPI_FLASH_H #define __LITESPI_FLASH_H -#include - -#define SPI_FLASH_BLOCK_SIZE 256 -#define CRC32_ERASED_FLASH 0xFEA8A821 +#define SPI_FLASH_BLOCK_SIZE 256 +#define CRC32_ERASED_FLASH 0xFEA8A821 int spiflash_freq_init(void); void spiflash_dummy_bits_setup(unsigned int dummy_bits); +void spiflash_memspeed(void); void spiflash_init(void); #endif /* __LITESPI_FLASH_H */