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 */ /* Throw away the filler bytes before the start of the firmware */
DiscardFillerBytes(DFU_FILLER_BYTES_SIZE); DiscardFillerBytes(DFU_FILLER_BYTES_SIZE);
/* Throw away the page alignment filler bytes before the start of the firmware */ /* Throw away the packet alignment filler bytes before the start of the firmware */
DiscardFillerBytes(StartAddr % SPM_PAGESIZE); DiscardFillerBytes(StartAddr % FIXED_CONTROL_ENDPOINT_SIZE);
/* Calculate the number of bytes remaining to be written */ /* Calculate the number of bytes remaining to be written */
uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1); uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1);

@ -41,6 +41,8 @@
* - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers * - 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 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 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 * \section Sec_ChangeLog091223 Version 091223
* *

@ -96,6 +96,7 @@ FATFS DiskFATState;
FIL TempLogFile; FIL TempLogFile;
/** ISR to handle the 500ms ticks for sampling and data logging */
ISR(TIMER1_COMPA_vect, ISR_BLOCK) ISR(TIMER1_COMPA_vect, ISR_BLOCK)
{ {
uint8_t LEDMask = LEDs_GetLEDs(); 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) void OpenLogFile(void)
{ {
char LogFileName[12]; char LogFileName[12];
@ -172,6 +174,7 @@ void OpenLogFile(void)
f_lseek(&TempLogFile, TempLogFile.fsize); f_lseek(&TempLogFile, TempLogFile.fsize);
} }
/** Closes the open data log file on the Dataflash's FAT formatted partition */
void CloseLogFile(void) void CloseLogFile(void)
{ {
/* Sync any data waiting to be written, unmount the storage device */ /* 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_SetDate(ReportParams->Day, ReportParams->Month, ReportParams->Year);
DS1307_SetTime(ReportParams->Hour, ReportParams->Minute, ReportParams->Second); 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) if (LoggingInterval500MS_SRAM != ReportParams->LogInterval500MS)
{ {
LoggingInterval500MS_SRAM = ReportParams->LogInterval500MS; LoggingInterval500MS_SRAM = ReportParams->LogInterval500MS;

Loading…
Cancel
Save