From 862febf3e28b313b9571605e0ed29cf4e79514af Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 1 Jul 2015 17:00:14 +0200 Subject: save RAM content overridden by bootloader magic and restore it in case of aborted reboot use RAMEND-1 as suggested by @yyyc514 in PR #2474 of course it's not a real solution but we cannot force everyone to update the bootloader using an external programmer --- cores/arduino/CDC.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cores/arduino/CDC.cpp b/cores/arduino/CDC.cpp index 22f3591..d694a2d 100644 --- a/cores/arduino/CDC.cpp +++ b/cores/arduino/CDC.cpp @@ -95,6 +95,7 @@ bool CDC_Setup(USBSetup& setup) // We check DTR state to determine if host port is open (bit 0 of lineState). if (1200 == _usbLineInfo.dwDTERate && (_usbLineInfo.lineState & 0x01) == 0) { + *(uint16_t *)(RAMEND-1) = *(uint16_t *)0x0800; *(uint16_t *)0x0800 = 0x7777; wdt_enable(WDTO_120MS); } @@ -107,7 +108,7 @@ bool CDC_Setup(USBSetup& setup) wdt_disable(); wdt_reset(); - *(uint16_t *)0x0800 = 0x0; + *(uint16_t *)0x0800 = *(uint16_t *)(RAMEND-1); } } return true; -- cgit v1.2.3-18-g5258