shell: add flash info to print the flash size
This commit is contained in:
parent
f61ecefdc6
commit
a36addf39b
1 changed files with 40 additions and 0 deletions
|
@ -1,4 +1,5 @@
|
|||
#include <ctype.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -11,12 +12,14 @@
|
|||
#include <shell.h>
|
||||
|
||||
static void do_flash_probe(const char *s);
|
||||
static void do_flash_info(const char *s);
|
||||
static void do_flash_read(const char *s);
|
||||
static void do_flash_write(const char *s);
|
||||
static void do_flash_erase(const char *s);
|
||||
|
||||
static struct cmd flash_cmds[] = {
|
||||
{ "probe", do_flash_probe },
|
||||
{ "info", do_flash_info },
|
||||
{ "read", do_flash_read },
|
||||
{ "write", do_flash_write },
|
||||
{ "erase", do_flash_erase },
|
||||
|
@ -73,6 +76,25 @@ static void print_hex_ascii(const char *buf, size_t len)
|
|||
}
|
||||
}
|
||||
|
||||
static void print_size(size_t size)
|
||||
{
|
||||
if (size == 0) {
|
||||
printf("0");
|
||||
#if defined(TIB)
|
||||
} else if (size % TIB == 0) {
|
||||
printf("%" PRSZu " TiB", size / TIB);
|
||||
#endif
|
||||
} else if (size % GIB == 0) {
|
||||
printf("%" PRSZu " GiB", size / GIB);
|
||||
} else if (size % MIB == 0) {
|
||||
printf("%" PRSZu " MiB", size / MIB);
|
||||
} else if (size % KIB == 0) {
|
||||
printf("%" PRSZu " KiB", size / KIB);
|
||||
} else {
|
||||
printf("%" PRSZu " B", size);
|
||||
}
|
||||
}
|
||||
|
||||
static void do_flash_probe(const char *s)
|
||||
{
|
||||
(void)s;
|
||||
|
@ -87,6 +109,24 @@ static void do_flash_probe(const char *s)
|
|||
}
|
||||
}
|
||||
|
||||
static void do_flash_info(const char *s)
|
||||
{
|
||||
size_t size;
|
||||
|
||||
(void)s;
|
||||
|
||||
if (!flash) {
|
||||
fprintf(stderr, "error: no flash device probed.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
size = flash_get_size(flash);
|
||||
|
||||
printf("Capacity: %" PRSZu " blocks (", size / (4 * KIB));
|
||||
print_size(size);
|
||||
printf(")\n");
|
||||
}
|
||||
|
||||
static void do_flash_read(const char *s)
|
||||
{
|
||||
char buf[256], *end = NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue