cmd: mem: Add a command to fill the memory with random data
This command fills the memory with data produced by rand(). Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
parent
849f9bef42
commit
803e1a3d38
@ -571,6 +571,13 @@ config CMD_MEMORY
|
||||
base - print or set address offset
|
||||
loop - initialize loop on address range
|
||||
|
||||
config CMD_RANDOM
|
||||
bool "random"
|
||||
default y
|
||||
depends on CMD_MEMORY && (LIB_RAND || LIB_HW_RAND)
|
||||
help
|
||||
random - fill memory with random data
|
||||
|
||||
config CMD_MEMTEST
|
||||
bool "memtest"
|
||||
help
|
||||
|
52
cmd/mem.c
52
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_CMD_RANDOM
|
||||
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 <addr> <len> [<seed>]\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_CMD_RANDOM
|
||||
U_BOOT_CMD(
|
||||
random, 4, 0, do_random,
|
||||
"fill memory with random pattern",
|
||||
"<addr> <len> [<seed>]\n"
|
||||
" - Fill 'len' bytes of memory starting at 'addr' with random data\n"
|
||||
);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user