projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use a temporary variable for the Printer bootloader HEX parser when combining the...
[pub/USBasp.git]
/
Bootloaders
/
Printer
/
BootloaderPrinter.c
diff --git
a/Bootloaders/Printer/BootloaderPrinter.c
b/Bootloaders/Printer/BootloaderPrinter.c
index
fba323c
..
5d4a89b
100644
(file)
--- a/
Bootloaders/Printer/BootloaderPrinter.c
+++ b/
Bootloaders/Printer/BootloaderPrinter.c
@@
-189,6
+189,9
@@
static void ParseIntelHEXByte(const char ReadCharacter)
break;
}
break;
}
+ /* Convert the last two received data bytes into a 16-bit word */
+ uint16_t NewDataWord = ((uint16_t)HEXParser.Data << 8) | HEXParser.PrevData;
+
switch (HEXParser.RecordType)
{
case HEX_RECORD_TYPE_Data:
switch (HEXParser.RecordType)
{
case HEX_RECORD_TYPE_Data:
@@
-204,7
+207,7
@@
static void ParseIntelHEXByte(const char ReadCharacter)
}
/* Fill the FLASH memory buffer with the new word of data */
}
/* Fill the FLASH memory buffer with the new word of data */
- boot_page_fill(HEXParser.CurrAddress,
((uint16_t)HEXParser.Data << 8) | HEXParser.PrevData
);
+ boot_page_fill(HEXParser.CurrAddress,
NewDataWord
);
HEXParser.CurrAddress += 2;
/* Flush the FLASH page to physical memory if we are crossing a page boundary */
HEXParser.CurrAddress += 2;
/* Flush the FLASH page to physical memory if we are crossing a page boundary */
@@
-222,12
+225,12
@@
static void ParseIntelHEXByte(const char ReadCharacter)
case HEX_RECORD_TYPE_ExtendedSegmentAddress:
/* Extended address data - store the upper 12-bits of the new address */
case HEX_RECORD_TYPE_ExtendedSegmentAddress:
/* Extended address data - store the upper 12-bits of the new address */
- HEXParser.CurrBaseAddress = ((
(uint32_t)HEXParser.PrevData << 8) | HEXParser.Data) << 4
;
+ HEXParser.CurrBaseAddress = ((
uint32_t)NewDataWord << 4)
;
break;
case HEX_RECORD_TYPE_ExtendedLinearAddress:
/* Extended address data - store the upper 16-bits of the new address */
break;
case HEX_RECORD_TYPE_ExtendedLinearAddress:
/* Extended address data - store the upper 16-bits of the new address */
- HEXParser.CurrBaseAddress = ((
(uint32_t)HEXParser.PrevData << 8) | HEXParser.Data) << 16
;
+ HEXParser.CurrBaseAddress = ((
uint32_t)NewDataWord << 16)
;
break;
}
break;
}