From 8be2fc482d75ccb58e64fd96d90c73cd7b072b13 Mon Sep 17 00:00:00 2001 From: Schallbert Date: Wed, 20 Jan 2021 14:11:55 +0100 Subject: [PATCH 1/2] Fix linker error "Error: register r24, r26, r28 or r30 required" linkerErrorFixForNonOptimizedBuild Rationale and solution background: https://andrey.mikhalchuk.com/2010/06/19/fix-error-register-r24-r26-r28-or-r30-required.html --- SoftwareSerial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoftwareSerial.cpp b/SoftwareSerial.cpp index 3d14e83..623f8cf 100644 --- a/SoftwareSerial.cpp +++ b/SoftwareSerial.cpp @@ -403,7 +403,7 @@ inline void SoftwareSerial::tunedDelay(uint16_t delay) { "cpi %A0, 0xFF \n\t" "cpc %B0, %1 \n\t" "brne .-10 \n\t" - : "+r" (delay), "+a" (tmp) + : "+w" (delay), "+a" (tmp) : "0" (delay) ); } From 488eac99108f45f55ae945103db069551ee705fc Mon Sep 17 00:00:00 2001 From: Schallbert Date: Wed, 20 Jan 2021 15:13:47 +0100 Subject: [PATCH 2/2] add override keyword to methods overridden Stream class methods. linkerErrorFixForNonOptimizedBuild --- SoftwareSerial.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SoftwareSerial.h b/SoftwareSerial.h index 6cc8857..afb5d83 100644 --- a/SoftwareSerial.h +++ b/SoftwareSerial.h @@ -123,12 +123,12 @@ class SoftwareSerial : public Stream void end(); bool isListening() { return this == active_object; } bool overflow() { bool ret = _buffer_overflow; _buffer_overflow = false; return ret; } - int peek(); + int peek() override; - virtual size_t write(uint8_t byte); - virtual int read(); - virtual int available(); - virtual void flush(); + virtual size_t write(uint8_t byte) override; + virtual int read() override; + virtual int available() override; + virtual void flush() override; using Print::write;