From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Tue, 2 Jul 2019 08:03:10 -0400 Subject: [U-Boot] [PATCH v2] cmd: mem: Add a command to fill the memory with random data In-Reply-To: <87f02129-138e-459d-63ef-b99d85ccbf95@ti.com> References: <20190702083606.25237-1-jjhiblot@ti.com> <87f02129-138e-459d-63ef-b99d85ccbf95@ti.com> Message-ID: <20190702120310.GD8554@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Jul 02, 2019 at 10:50:43AM +0200, Jean-Jacques Hiblot wrote: > +Tom > > On 02/07/2019 10:36, Jean-Jacques Hiblot wrote: > >This command fills the memory with data produced by rand(). > >This command depends on CONFIG_LIB_RAND. > > > >Signed-off-by: Jean-Jacques Hiblot > >--- > >changes in v2: > >- Do not include the command if CONFIG_LIB_RAND is not set > >- make do_random() static > > > >cmd/Kconfig | 3 ++- > > cmd/mem.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 54 insertions(+), 1 deletion(-) > > > >diff --git a/cmd/Kconfig b/cmd/Kconfig > >index cda7931fe3..f9385fcc08 100644 > >--- a/cmd/Kconfig > >+++ b/cmd/Kconfig > >@@ -537,7 +537,7 @@ config CMD_MEMINFO > > Display memory information. > > config CMD_MEMORY > >- bool "md, mm, nm, mw, cp, cmp, base, loop" > >+ bool "md, mm, nm, mw, cp, cmp, base, loop, random" > > default y > > help > > Memory commands. > >@@ -549,6 +549,7 @@ config CMD_MEMORY > > cmp - memory compare > > base - print or set address offset > > loop - initialize loop on address range > >+ random - fill memory with random data > > config CMD_MEMTEST > > bool "memtest" > >diff --git a/cmd/mem.c b/cmd/mem.c > >index 392ed1756b..e5af12db57 100644 > >--- a/cmd/mem.c > >+++ b/cmd/mem.c > >@@ -1082,6 +1082,49 @@ static int do_mem_crc(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) > > #endif > >+#ifdef CONFIG_LIB_RAND > >+static int do_random(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) > >+{ > >+ unsigned long addr, len; > >+ unsigned long seed; // NOT INITIALIZED ON PURPOSE > >+ unsigned int *buf, *start; > >+ unsigned char *buf8; > >+ unsigned int i; > >+ > >+ if (argc < 3 || argc > 4) { > >+ printf("usage: %s []\n", argv[0]); > >+ return 0; > >+ } > >+ > >+ len = simple_strtoul(argv[2], NULL, 16); > >+ addr = simple_strtoul(argv[1], NULL, 16); > >+ > >+ if (argc == 4) { > >+ seed = simple_strtoul(argv[3], NULL, 16); > >+ if (seed == 0) { > >+ printf("The seed cannot be 0. Using 0xDEADBEEF.\n"); > >+ seed = 0xDEADBEEF; > >+ } > >+ } else { > >+ seed = get_timer(0) ^ rand(); > >+ } > >+ > >+ srand(seed); > >+ start = map_sysmem(addr, len); > >+ buf = start; > >+ for (i = 0; i < (len / 4); i++) > >+ *buf++ = rand(); > >+ > >+ buf8 = (unsigned char *)buf; > >+ for (i = 0; i < (len % 4); i++) > >+ *buf8++ = rand() & 0xFF; > >+ > >+ unmap_sysmem(start); > >+ printf("%lu bytes filled with random data\n", len); > >+ return 1; > >+} > >+#endif > >+ > > /**************************************************/ > > U_BOOT_CMD( > > md, 3, 1, do_mem_md, > >@@ -1250,3 +1293,12 @@ U_BOOT_CMD( > > "" > > ); > > #endif > >+ > >+#ifdef CONFIG_LIB_RAND > >+U_BOOT_CMD( > >+ random, 4, 0, do_random, > >+ "fill memory with random pattern", > >+ " []\n" > >+ " - Fill 'len' bytes of memory starting at 'addr' with random data\n" > >+); > >+#endif This needs to be a new CONFIG option that depends on CMD_MEM, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: