From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Jacques Hiblot Date: Tue, 2 Jul 2019 10:50:43 +0200 Subject: [U-Boot] [PATCH v2] cmd: mem: Add a command to fill the memory with random data In-Reply-To: <20190702083606.25237-1-jjhiblot@ti.com> References: <20190702083606.25237-1-jjhiblot@ti.com> Message-ID: <87f02129-138e-459d-63ef-b99d85ccbf95@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de +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