From f6095c9325c1c6bf8f649b72afaaa76d41329230 Mon Sep 17 00:00:00 2001
From: towara <towara@stce.rwth-aachen.de>
Date: Sat, 15 Apr 2017 00:29:25 +0200
Subject: [PATCH 1/2] fix missing serial.cpp in Makefile

---
 Marlin/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Marlin/Makefile b/Marlin/Makefile
index 1c4d703c45..b6b3ebdc7e 100644
--- a/Marlin/Makefile
+++ b/Marlin/Makefile
@@ -296,7 +296,7 @@ CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp	\
 	temperature.cpp cardreader.cpp configuration_store.cpp \
 	watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \
 	dac_mcp4728.cpp vector_3.cpp qr_solve.cpp endstops.cpp stopwatch.cpp utility.cpp \
-	printcounter.cpp nozzle.cpp
+	printcounter.cpp nozzle.cpp serial.cpp
 ifeq ($(LIQUID_TWI2), 0)
 CXXSRC += LiquidCrystal.cpp
 else

From 150b15c31161375c2a3b16c6e405d9ef5243334a Mon Sep 17 00:00:00 2001
From: towara <towara@stce.rwth-aachen.de>
Date: Mon, 17 Apr 2017 11:59:47 +0200
Subject: [PATCH 2/2] fix compiler errors generated by more stringent flags in
 Makefile: - use volatile for registers - avoid implicit casts

---
 Marlin/pinsDebug.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/Marlin/pinsDebug.h b/Marlin/pinsDebug.h
index 3fb8101096..a60b7449cd 100644
--- a/Marlin/pinsDebug.h
+++ b/Marlin/pinsDebug.h
@@ -59,8 +59,8 @@ bool endstop_monitor_flag = false;
 
 // manually add pins that have names that are macros which don't play well with these macros
 #if SERIAL_PORT == 0 && (AVR_ATmega2560_FAMILY || AVR_ATmega1284_FAMILY)
-  static const unsigned char RXD_NAME[] PROGMEM = {"RXD"};
-  static const unsigned char TXD_NAME[] PROGMEM = {"TXD"};
+  static const char RXD_NAME[] PROGMEM = {"RXD"};
+  static const char TXD_NAME[] PROGMEM = {"TXD"};
 #endif
 
 /////////////////////////////////////////////////////////////////////////////
@@ -92,11 +92,11 @@ const char* const pin_array[][3] PROGMEM = {
   // manually add pins ...
   #if SERIAL_PORT == 0
     #if AVR_ATmega2560_FAMILY
-      {RXD_NAME, 0, 1},
-      {TXD_NAME, 1, 1},
+      {RXD_NAME, "0", "1"},
+      {TXD_NAME, "1", "1"},
     #elif AVR_ATmega1284_FAMILY
-      {RXD_NAME, 8, 1},
-      {TXD_NAME, 9, 1},
+      {RXD_NAME, "8", "1"},
+      {TXD_NAME, "9", "1"},
     #endif
   #endif
 
@@ -181,7 +181,7 @@ static bool pwm_status(uint8_t pin) {
 
 
 
-const uint8_t* const PWM_other[][3] PROGMEM = {
+const volatile uint8_t* const PWM_other[][3] PROGMEM = {
     {&TCCR0A, &TCCR0B, &TIMSK0},
     {&TCCR1A, &TCCR1B, &TIMSK1},
   #if defined(TCCR2A) && defined(COM2A1)
@@ -199,7 +199,7 @@ const uint8_t* const PWM_other[][3] PROGMEM = {
 };
 
 
-const uint8_t* const PWM_OCR[][3] PROGMEM = {
+const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
 
   #ifdef TIMER0A
     {&OCR0A,&OCR0B,0},