diff options
author | Craig Hesling <hesling@chromium.org> | 2020-06-06 14:37:55 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-02-03 19:21:47 +0000 |
commit | 724e0077fa83e17a152f7170f1ea66091839e638 (patch) | |
tree | 6e78d364d465e0c6d5a5e33eaf367054cf91aea8 | |
parent | fb482f6e05a32ddfa12c72436151a25142ea409c (diff) | |
download | chrome-ec-724e0077fa83e17a152f7170f1ea66091839e638.tar.gz |
util/stm32mon: Give names to byte commands
This replaces the stm32mon console output with more useful
command name, instead of the command byte codes.
BRANCH=none
BUG=b:176500425
TEST=make -j buildall
TEST=make -j proj-bloonchipper
./util/flash_ec --board=bloonchipper --verbose
TEST=emerge-strongbad ec-devutils
# Ran on CoachZ with patched flash_fp_mcu
Signed-off-by: Craig Hesling <hesling@chromium.org>
Change-Id: I6a8c7861ad1629ed2253c120ae38d4a1e1820dad
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2234744
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r-- | util/stm32mon.c | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/util/stm32mon.c b/util/stm32mon.c index 6b3b0040be..0e05cf3639 100644 --- a/util/stm32mon.c +++ b/util/stm32mon.c @@ -66,6 +66,38 @@ #define CMD_RP 0x82 /* Enables the read protection */ #define CMD_RU 0x92 /* Disables the read protection */ +#define CMD_LOOKUP_ENTRY(COMMAND) {CMD_##COMMAND, #COMMAND} +const struct { + const char cmd; + const char *name; +} cmd_lookup_table[] = { + CMD_LOOKUP_ENTRY(INIT), + CMD_LOOKUP_ENTRY(GETCMD), + CMD_LOOKUP_ENTRY(GETVER), + CMD_LOOKUP_ENTRY(GETID), + CMD_LOOKUP_ENTRY(READMEM), + CMD_LOOKUP_ENTRY(GO), + CMD_LOOKUP_ENTRY(WRITEMEM), + CMD_LOOKUP_ENTRY(ERASE), + CMD_LOOKUP_ENTRY(EXTERASE), + CMD_LOOKUP_ENTRY(NO_STRETCH_ERASE), + CMD_LOOKUP_ENTRY(WP), + CMD_LOOKUP_ENTRY(WU), + CMD_LOOKUP_ENTRY(RP), + CMD_LOOKUP_ENTRY(RU), +}; + +const char *cmd_lookup_name(char cmd) +{ + int i; + for (i = 0; i < ARRAY_SIZE(cmd_lookup_table); i++) { + if (cmd_lookup_table[i].cmd == cmd) + return cmd_lookup_table[i].name; + } + + return NULL; +} + #define RESP_NACK 0x1f #define RESP_ACK 0x79 /* 0b 0111 1001 */ #define RESP_BUSY 0x76 @@ -644,7 +676,11 @@ int send_command(int fd, uint8_t cmd, payload_t *loads, int cnt, if (res == STM32_EDACK) { ++count_damaged_ack; } else if (IS_STM32_ERROR(res)) { - fprintf(stderr, "Failed to get command 0x%02x ACK\n", cmd); + const char *name = cmd_lookup_name(cmd); + char hex[sizeof("0xFF")]; + snprintf(hex, sizeof(hex), "0x%02x", cmd); + fprintf(stderr, "Failed to get command %s ACK\n", + name ? name : hex); return res; } @@ -858,9 +894,14 @@ int command_get_commands(int fd, struct stm32_def *chip) erase = command_erase; for (i = 2; i < 2 + cmds[0]; i++) { + const char *name; if (cmds[i] == CMD_EXTERASE) erase = command_ext_erase; - printf("%02x ", cmds[i]); + name = cmd_lookup_name(cmds[i]); + if (name) + printf("%s ", name); + else + printf("%02x ", cmds[i]); } if (mode == MODE_I2C) |