Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4fcf8cd

Browse filesBrowse files
committed
Fixes to let SBUBoot always find UPDATE.OK when present
1 parent 64e1cc5 commit 4fcf8cd
Copy full SHA for 4fcf8cd

File tree

Expand file treeCollapse file tree

3 files changed

+2490
-2410
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+2490
-2410
lines changed

‎libraries/SBU/extras/SBUBoot/SBUBoot.ino

Copy file name to clipboardExpand all lines: libraries/SBU/extras/SBUBoot/SBUBoot.ino
+18-6Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static constexpr char CHECK_FILE_NAME[] = "UPDATE.OK";
2929

3030
FlashClass mcu_flash;
3131

32-
NBFileUtils fileUtils;
32+
NBFileUtils fileUtils(true);
3333

3434
extern "C" void __libc_init_array(void);
3535

@@ -51,30 +51,42 @@ int main()
5151
// Try to update only if update file
5252
// has been download successfully.
5353

54-
if (fileUtils.listFile(CHECK_FILE_NAME)) {
54+
if (fileUtils.existFile(CHECK_FILE_NAME)) {
5555
Serial1.println("Update file exists");
5656
uint32_t updateSize = fileUtils.listFile(UPDATE_FILE_NAME);
57-
size_t cycles = (updateSize / blockSize) + 1;
57+
uint32_t tot_bytes = 0;
58+
uint32_t read_bytes = 0;
5859

5960
if (updateSize > SBU_SIZE) {
6061
updateSize = updateSize - SBU_SIZE - SBU_START;
62+
size_t cycles = (updateSize / blockSize);
63+
size_t spare_bytes = (updateSize % blockSize);
6164
/* Erase the MCU flash */
6265
uint32_t flash_address = (uint32_t)SKETCH_START;
6366
mcu_flash.erase((void*)flash_address, updateSize);
6467

6568
for (auto i = 0; i < cycles; i++) {
6669
uint8_t block[blockSize] { 0 };
6770
digitalWrite(LED_BUILTIN, LOW);
68-
uint32_t read_bytes = fileUtils.readBlock(UPDATE_FILE_NAME, (i * blockSize) + SBU_SIZE + SBU_START, blockSize, block);
71+
read_bytes = fileUtils.readBlock(UPDATE_FILE_NAME, (i * blockSize) + SBU_SIZE + SBU_START, blockSize, block);
72+
digitalWrite(LED_BUILTIN, HIGH);
73+
mcu_flash.write((void*)flash_address, block, read_bytes);
74+
flash_address += read_bytes;
75+
tot_bytes += read_bytes;
76+
}
77+
78+
if (spare_bytes){
79+
uint8_t block[spare_bytes] { 0 };
80+
digitalWrite(LED_BUILTIN, LOW);
81+
read_bytes = fileUtils.readBlock(UPDATE_FILE_NAME, tot_bytes + SBU_SIZE + SBU_START, spare_bytes, block);
6982
digitalWrite(LED_BUILTIN, HIGH);
7083
mcu_flash.write((void*)flash_address, block, read_bytes);
7184
flash_address += read_bytes;
7285
}
7386
update_success = true;
7487
}
7588
if (update_success) {
76-
fileUtils.deleteFile(UPDATE_FILE_NAME);
77-
fileUtils.deleteFile(CHECK_FILE_NAME);
89+
fileUtils.deleteFiles();
7890
}
7991
}
8092
else {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.