Skip to content

Commit 7e349ee

Browse files
committed
binary_update: refactor write function
1 parent facb286 commit 7e349ee

2 files changed

Lines changed: 11 additions & 12 deletions

File tree

Bootloader/Inc/binary_update.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ void BinaryUpdate_resetJumpAddress(void);
5454
bool BinaryUpdate_checkSkipLoopFlag(void);
5555
void BinaryUpdate_disableLoopFlag(void);
5656
bool BinaryUpdate_erase(uint32_t firmware_size);
57-
bool BinaryUpdate_write(uint8_t* write_buffer, const uint32_t flash_length, uint32_t* crc);
57+
bool BinaryUpdate_write(uint8_t* write_buffer, const uint32_t data_length, uint32_t* crc);
5858
bool BinaryUpdate_finish(void);
5959

6060
#endif /* BOOTLOADER_INC_BINARYUPDATE_H_ */

Bootloader/Src/binary_update.c

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "crc32.h"
3636
#include "binary_update.h"
3737
#include "flash_adapter.h"
38+
#include "security.h"
3839
#include "signature.h"
3940

4041
__attribute__ ((section(".restart_info")))
@@ -146,30 +147,28 @@ BinaryUpdate_erase(uint32_t firmware_size) {
146147
}
147148

148149
bool
149-
BinaryUpdate_write(uint8_t* write_buffer, const uint32_t flash_length, uint32_t* crc) {
150+
BinaryUpdate_write(uint8_t* write_buffer, const uint32_t data_length, uint32_t* crc) {
151+
150152
bool success = false;
151-
// cppcheck-suppress misra-c2012-18.8; PACKET_SIZE is defined as 256 or W25Q_PAGE_SIZE, depends on EXTERNAL_FLASH
152-
uint8_t readout_buffer[PACKET_SIZE];
153-
static uint32_t index = 0U;
154-
const uint32_t address_addition = index * PACKET_SIZE;
155-
uint64_t address = s_address + address_addition;
156153

157-
success = FlashAdapter_program((uint32_t)address, write_buffer, flash_length);
154+
success = FlashAdapter_program((uint32_t)s_address, write_buffer, data_length);
158155

159156
if (success) {
160-
success = FlashAdapter_readBytes((uint32_t)address, readout_buffer, flash_length);
157+
// cppcheck-suppress misra-c2012-18.8;
158+
uint8_t readout_buffer[data_length];
159+
success = FlashAdapter_readBytes((uint32_t)s_address, readout_buffer, data_length);
161160

162161
if (success) {
163-
*crc = CalculateCRC32(readout_buffer, flash_length, *crc, 0U, false, false, false);
164-
for (uint32_t i = 0U; (success) && (i < flash_length); ++i) {
162+
*crc = CalculateCRC32(readout_buffer, data_length, *crc, 0U, false, false, false);
163+
for (uint32_t i = 0U; (success) && (i < data_length); ++i) {
165164
if (write_buffer[i] != readout_buffer[i]) {
166165
success = false;
167166
}
168167
}
169168
}
170169
}
171170

172-
++index;
171+
s_address += data_length;
173172

174173
return success;
175174
}

0 commit comments

Comments
 (0)