From 0f9032e6c3925f182b8f5ecd34f2c57a0dda5628 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 17 May 2024 14:40:26 +0100 Subject: [PATCH] Set vbl level from vector number for urboot v8.0+ --- src/urclock.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/urclock.c b/src/urclock.c index 8cea51f6..2d53c8e5 100644 --- a/src/urclock.c +++ b/src/urclock.c @@ -1392,13 +1392,18 @@ static int ur_initstruct(const PROGRAMMER *pgm, const AVRPART *p) { vectnum, ur.xvectornum); imsg_warning("the application might not start correctly\n"); } - } else + } else { ur.vblvectornum = vectnum; + /* + * Urboot v8.0 (urver == 0100) onwards no longer supports self-patching + * bootloaders. The vbllevel is either 0 (vectnum == 0) or 1 (vectnum > 0). + * No longer refer to the capability byte from v8.0 thus freeing 2 bits. + */ + ur.vbllevel = urver <= 077? vectorbl_level_cap(cap): vectnum > 0; + } ur.blurversion = urver; ur.bleepromrw = iseeprom_cap(cap); - if(!ur.vbllevel) // Unless manually overwritten - ur.vbllevel = vectorbl_level_cap(cap); } } }