From 2d7ad8e37310316163f0d2e47e97e932f0913cb6 Mon Sep 17 00:00:00 2001 From: MCUdude Date: Sun, 27 Nov 2022 22:52:45 +0100 Subject: [PATCH] Print meaningful ISP clock error message Currently, only some JTAG3 compatible programmers are able to detect that the connected target's main clock speed actually is too low for for the programmer. In this case, these will return 0xCC. --- src/main.c | 7 +++++-- src/stk500v2.c | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 691369cf..cb3232b4 100644 --- a/src/main.c +++ b/src/main.c @@ -1242,8 +1242,11 @@ int main(int argc, char * argv []) init_ok = (rc = pgm->initialize(pgm, p)) >= 0; if (!init_ok) { pmsg_error("initialization failed, rc=%d\n", rc); - imsg_error("- double check the connections and try again\n"); - imsg_error("- use -B to set lower ISP clock frequency, e.g. -B 200kHz\n"); + if(rc == -2) + imsg_error("The programmer ISP clock is too fast for the target\n"); + else + imsg_error("- double check the connections and try again\n"); + imsg_error("- use -B to set lower ISP clock frequency, e.g. -B 125kHz\n"); if (!ovsigck) { imsg_error("- use -F to override this check\n\n"); exitrc = 1; diff --git a/src/stk500v2.c b/src/stk500v2.c index bb086c10..5455ef3d 100644 --- a/src/stk500v2.c +++ b/src/stk500v2.c @@ -795,6 +795,11 @@ retry: // attempt to read the status back status = stk500v2_recv(pgm,buf,maxlen); + DEBUG("STK500V2: stk500v2_command() received content: [ "); + for (size_t i=0; i 0) { DEBUG(" = %d\n",status); @@ -858,6 +863,9 @@ retry: return status; } else if (buf[1] == STATUS_CMD_FAILED) { pmsg_error("command failed\n"); + } else if (buf[1] == STATUS_CLOCK_ERROR) { + pmsg_error("target clock speed error\n"); + return -2; } else if (buf[1] == STATUS_CMD_UNKNOWN) { pmsg_error("unknown command\n"); } else {