Fix reading configuration over flash block boundaries

This commit is contained in:
logicog
2026-04-09 22:34:32 +02:00
parent c4368c68be
commit 4440bcc43a
+17 -14
View File
@@ -1165,6 +1165,7 @@ void execute_config(void) __banked
strtox(passwd, PASSWORD); strtox(passwd, PASSWORD);
save_cmd = 0; save_cmd = 0;
uint8_t cmd_idx = 0;
do { do {
flash_region.addr = pos; flash_region.addr = pos;
flash_region.len = FLASH_READ_BURST_SIZE; flash_region.len = FLASH_READ_BURST_SIZE;
@@ -1172,21 +1173,23 @@ void execute_config(void) __banked
__xdata uint8_t cfg_idx = 0; __xdata uint8_t cfg_idx = 0;
uint8_t c = 0; uint8_t c = 0;
do { while (cmd_idx < (CMD_BUF_SIZE - 1)) {
for (uint8_t cmd_idx = 0; cmd_idx < (CMD_BUF_SIZE - 1); cmd_idx++) { c = flash_buf[cfg_idx++];
c = flash_buf[cfg_idx++]; if (c == 0 || c == '\n') {
if (c == 0 || c == '\n') { cmd_buffer[cmd_idx] = '\0';
cmd_buffer[cmd_idx] = '\0'; if (cmd_idx && !cmd_tokenize())
if (cmd_idx && !cmd_tokenize()) cmd_parser();
cmd_parser(); if (c == 0)
if (c == 0) goto config_done;
goto config_done; cmd_idx = 0;
break; continue;
}
cmd_buffer[cmd_idx] = c;
} }
} while(cfg_idx);
cmd_buffer[cmd_idx] = c;
cmd_idx++;
if (!cfg_idx)
break;
}
len_left -= FLASH_READ_BURST_SIZE; len_left -= FLASH_READ_BURST_SIZE;
pos += FLASH_READ_BURST_SIZE; pos += FLASH_READ_BURST_SIZE;