diff --git a/soc/runtime/flash_storage.h b/soc/runtime/flash_storage.h index 45321967d..065dd82f3 100644 --- a/soc/runtime/flash_storage.h +++ b/soc/runtime/flash_storage.h @@ -5,8 +5,8 @@ #ifndef __FLASH_STORAGE_H #define __FLASH_STORAGE_H +void fs_erase(void); void fs_write(char *key, void *buffer, unsigned int buflen); unsigned int fs_read(char *key, void *buffer, unsigned int buflen, unsigned int *remain); -void fs_erase(void); #endif /* __FLASH_STORAGE_H */ diff --git a/soc/runtime/test_mode.c b/soc/runtime/test_mode.c index c179f89c0..17124efa9 100644 --- a/soc/runtime/test_mode.c +++ b/soc/runtime/test_mode.c @@ -11,6 +11,7 @@ #include "mailbox.h" #include "messages.h" #include "dds.h" +#include "flash_storage.h" #include "test_mode.h" /* bridge access functions */ @@ -323,22 +324,38 @@ static void ddstest(char *n) } } +#if (defined CSR_SPIFLASH_BASE && defined SPIFLASH_PAGE_SIZE) +static void fsread(char *key) +{ + char buf[256]; + int r; + + r = fs_read(key, buf, sizeof(buf)-1, NULL); + buf[r] = 0; + puts(buf); +} +#endif + static void help(void) { - puts("ARTIQ DDS/TTL Tester"); puts("Available commands:"); - puts("help - this message"); - puts("clksrc - select RTIO clock source"); - puts("ttlout - output TTL"); - puts("ddssel - select a DDS"); - puts("ddsinit - reset, config, FUD DDS"); - puts("ddsreset - reset DDS"); - puts("ddsw - write to DDS register"); - puts("ddsr - read DDS register"); - puts("ddsfud - pulse FUD"); - puts("ddsftw - write FTW"); - puts("ddstest - perform test sequence on DDS"); - puts("leds - set LEDs"); + puts("help - this message"); + puts("clksrc - select RTIO clock source"); + puts("ttlout - output TTL"); + puts("ddssel - select a DDS"); + puts("ddsinit - reset, config, FUD DDS"); + puts("ddsreset - reset DDS"); + puts("ddsw - write to DDS register"); + puts("ddsr - read DDS register"); + puts("ddsfud - pulse FUD"); + puts("ddsftw - write FTW"); + puts("ddstest - perform test sequence on DDS"); + puts("leds - set LEDs"); +#if (defined CSR_SPIFLASH_BASE && defined SPIFLASH_PAGE_SIZE) + puts("fserase - erase flash storage"); + puts("fswrite - write to flash storage"); + puts("fsread - read flash storage"); +#endif } static void readstr(char *s, int size) @@ -412,6 +429,12 @@ static void do_command(char *c) else if(strcmp(token, "ddsftw") == 0) ddsftw(get_token(&c), get_token(&c)); else if(strcmp(token, "ddstest") == 0) ddstest(get_token(&c)); +#if (defined CSR_SPIFLASH_BASE && defined SPIFLASH_PAGE_SIZE) + else if(strcmp(token, "fserase") == 0) fs_erase(); + else if(strcmp(token, "fswrite") == 0) fs_write(get_token(&c), c, strlen(c)); + else if(strcmp(token, "fsread") == 0) fsread(get_token(&c)); +#endif + else if(strcmp(token, "") != 0) printf("Command not found\n"); }