summaryrefslogtreecommitdiff
path: root/util/stm32mon.c
diff options
context:
space:
mode:
authorCraig Hesling <hesling@chromium.org>2020-06-06 14:37:55 -0700
committerCommit Bot <commit-bot@chromium.org>2021-02-03 19:21:47 +0000
commit724e0077fa83e17a152f7170f1ea66091839e638 (patch)
tree6e78d364d465e0c6d5a5e33eaf367054cf91aea8 /util/stm32mon.c
parentfb482f6e05a32ddfa12c72436151a25142ea409c (diff)
downloadchrome-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>
Diffstat (limited to 'util/stm32mon.c')
-rw-r--r--util/stm32mon.c45
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)