From 06f53eed83b4ad639698aeb9bcc1a3702e2ac7c4 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 1 Oct 2017 16:25:36 +1100 Subject: Fixed bootloaders not disabling global interrupts during erase and write operations (thanks to Zoltan). --- Bootloaders/Printer/BootloaderPrinter.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index 9021f998f..90321d4a3 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -146,7 +146,7 @@ void Application_Jump_Check(void) JTAG_ENABLE(); #else /* Check if the device's BOOTRST fuse is set */ - if (boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST) + if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST) { /* If the reset source was not an external reset or the key is correct, clear it and jump to the application */ if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY)) @@ -221,8 +221,7 @@ static void FlushPageIfRequired(void) uint32_t NewPageStartAddress = (HEXParser.CurrAddress & ~(SPM_PAGESIZE - 1)); if (HEXParser.PageStartAddress != NewPageStartAddress) { - boot_page_write(HEXParser.PageStartAddress); - boot_spm_busy_wait(); + BootloaderAPI_WritePage(HEXParser.PageStartAddress); HEXParser.PageStartAddress = NewPageStartAddress; @@ -321,14 +320,13 @@ static void ParseIntelHEXByte(const char ReadCharacter) /* If we are writing to a new page, we need to erase it first */ if (!(PageDirty)) { - boot_page_erase(HEXParser.PageStartAddress); - boot_spm_busy_wait(); + BootloaderAPI_ErasePage(HEXParser.PageStartAddress); PageDirty = true; } /* Fill the FLASH memory buffer with the new word of data */ - boot_page_fill(HEXParser.CurrAddress, NewDataWord); + BootloaderAPI_FillWord(HEXParser.CurrAddress, NewDataWord); HEXParser.CurrAddress += 2; /* Flush the FLASH page to physical memory if we are crossing a page boundary */ -- cgit v1.2.3 From ad9225bdd34230e13333be5d4c29e4f96abc9b2b Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 4 Jan 2018 20:12:48 +1100 Subject: Update copyrights for 2018. --- Bootloaders/Printer/BootloaderPrinter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index 90321d4a3..6fde80290 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2017. + Copyright (C) Dean Camera, 2018. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2018 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted -- cgit v1.2.3 From d6a528f9a03fe338e30d93f306e0482612e02e3e Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 22 Jan 2018 16:27:39 +1100 Subject: Add short delays before detaching from the USB bus in the bootloaders (thanks to NicoHood). --- Bootloaders/Printer/BootloaderPrinter.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index 6fde80290..da4162172 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -401,6 +401,9 @@ int main(void) USB_USBTask(); } + /* Wait a short time to end all USB transactions and then disconnect */ + _delay_us(1000); + /* Disconnect from the host - USB interface will be reset later along with the AVR */ USB_Detach(); -- cgit v1.2.3 From 1e9148db894bca208d1076c291e85e134a2f3308 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 2 Apr 2018 14:51:18 +1000 Subject: Fix bootloaders incorrectly checking the BOOTRST fuse on start (thanks to Braden Kell). --- Bootloaders/Printer/BootloaderPrinter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index da4162172..629cc07b4 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -146,7 +146,7 @@ void Application_Jump_Check(void) JTAG_ENABLE(); #else /* Check if the device's BOOTRST fuse is set */ - if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST) + if (!(BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & ~FUSE_BOOTRST)) { /* If the reset source was not an external reset or the key is correct, clear it and jump to the application */ if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY)) -- cgit v1.2.3 From 74dcaa91458cbe8c6b6cbbb246d87e379f32f0e0 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 5 Dec 2018 20:17:27 +1100 Subject: PrinterBootloader: Don't store 32-bit HEX parser flash offsets on small flash devices. --- Bootloaders/Printer/BootloaderPrinter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index 629cc07b4..94521ef16 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -67,7 +67,7 @@ USB_ClassInfo_PRNT_Device_t TextOnly_Printer_Interface = /** Intel HEX parser state machine state information, to track the contents of * a HEX file streamed in as a sequence of arbitrary bytes. */ -struct +static struct { /** Current HEX parser state machine state. */ uint8_t ParserState; @@ -87,11 +87,11 @@ struct /** Checksum of the current record received so far. */ uint8_t Checksum; /** Starting address of the last addressed FLASH page. */ - uint32_t PageStartAddress; + flashaddr_t PageStartAddress; /** Current 32-bit byte extended base address in FLASH being targeted. */ - uint32_t CurrBaseAddress; + flashaddr_t CurrBaseAddress; /** Current 32-bit byte address in FLASH being targeted. */ - uint32_t CurrAddress; + flashaddr_t CurrAddress; } HEXParser; /** Indicates if there is data waiting to be written to a physical page of -- cgit v1.2.3 From 101ed6b74e0d6549e53a7c8216147af37ffc70df Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 8 Jan 2019 19:59:41 +1100 Subject: Documentation: Update copyrights to 2019. --- Bootloaders/Printer/BootloaderPrinter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Bootloaders/Printer/BootloaderPrinter.c') diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c index 94521ef16..deb3b96a8 100644 --- a/Bootloaders/Printer/BootloaderPrinter.c +++ b/Bootloaders/Printer/BootloaderPrinter.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2018. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2018 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted -- cgit v1.2.3