]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Make sure NOBITS is set on reset_key
authorDanny Nguyen <danny@keeb.io>
Wed, 20 Mar 2019 21:45:45 +0000 (17:45 -0400)
committerskullydazed <skullydazed@users.noreply.github.com>
Fri, 19 Apr 2019 21:44:16 +0000 (14:44 -0700)
Patch from https://github.com/qmk/qmk_firmware/issues/3657#issuecomment-415147411

Long story short, in avr-gcc pre-8.2, reset_key was assigned to a memory area that was in a normal range, but when 8.2 came out, that memory got moved to an out of range area, causing errors like 0x800293 out of range. Apparently, this was fixed up in avr-gcc, but we haven't seen a release with the fix yet (we expected it in 8.3, but that didn't happen for some reason).

What this commit does is move the reset_key back to the original memory location it was in before.

tmk_core/common/avr/bootloader.c

index c4b913280ede7f250c0b4ebc273387d5f374e1ad..3cdcd2e426b6b68a774b955c900e18962a60d28a 100644 (file)
@@ -70,7 +70,7 @@
  * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html
  */
 #define BOOTLOADER_RESET_KEY 0xB007B007
-uint32_t reset_key  __attribute__ ((section (".noinit")));
+uint32_t reset_key  __attribute__ ((section (".noinit,\"aw\",@nobits;")));
 
 /** \brief initialize MCU status by watchdog reset
  *