Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming ranges are specified (thanks to Thomas Bleeker).

pull/1469/head
Dean Camera 15 years ago
parent dd995683ea
commit 871d9bf1af

@ -205,8 +205,8 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
/* Throw away the filler bytes before the start of the firmware */
DiscardFillerBytes(DFU_FILLER_BYTES_SIZE);
/* Throw away the page alignment filler bytes before the start of the firmware */
DiscardFillerBytes(StartAddr % SPM_PAGESIZE);
/* Throw away the packet alignment filler bytes before the start of the firmware */
DiscardFillerBytes(StartAddr % FIXED_CONTROL_ENDPOINT_SIZE);
/* Calculate the number of bytes remaining to be written */
uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1);

@ -41,6 +41,8 @@
* - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers
* - Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders
* - Fixed Benito project not resetting the target AVR automatically when programming has completed
* - Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming
* ranges are specified (thanks to Thomas Bleeker)
*
* \section Sec_ChangeLog091223 Version 091223
*

@ -96,6 +96,7 @@ FATFS DiskFATState;
FIL TempLogFile;
/** ISR to handle the 500ms ticks for sampling and data logging */
ISR(TIMER1_COMPA_vect, ISR_BLOCK)
{
uint8_t LEDMask = LEDs_GetLEDs();
@ -157,6 +158,7 @@ int main(void)
}
}
/** Opens the log file on the Dataflash's FAT formatted partition according to the current date */
void OpenLogFile(void)
{
char LogFileName[12];
@ -172,6 +174,7 @@ void OpenLogFile(void)
f_lseek(&TempLogFile, TempLogFile.fsize);
}
/** Closes the open data log file on the Dataflash's FAT formatted partition */
void CloseLogFile(void)
{
/* Sync any data waiting to be written, unmount the storage device */
@ -301,6 +304,7 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
DS1307_SetDate(ReportParams->Day, ReportParams->Month, ReportParams->Year);
DS1307_SetTime(ReportParams->Hour, ReportParams->Minute, ReportParams->Second);
/* If the logging interval has changed from its current value, write it to EEPROM */
if (LoggingInterval500MS_SRAM != ReportParams->LogInterval500MS)
{
LoggingInterval500MS_SRAM = ReportParams->LogInterval500MS;

Loading…
Cancel
Save