Arduino Giga Wifi R1 will not compile programs with SoftwareSerial

Hi there. Hoping I can get a little help with this issue.

I'm using an Arduino Giga R1 Wifi board. The program I'm running is using the softwareserial.h library. The code runs fine on my nano board which leads me to believe it is an issue with softwareserial's compatibility on the giga board. I get an error code when trying to compile the code on the giga board:

WARNING: library SoftwareSerial claims to run on avr architecture(s) and may be incompatible with your current board which runs on mbed_giga architecture(s).

After this I get a long string of compilation errors and of course it doesn't compile. I was hoping someone else had the same or a similar issue and would be able to offer some help? Is there an alternative softwareserial library I can use with the Giga board?

Here's my code but I don't think that will help much.

/***************************************************
 HUSKYLENS An Easy-to-use AI Machine Vision Sensor
 <https://www.dfrobot.com/product-1922.html>
 
 ***************************************************
 This example shows the basic function of library for HUSKYLENS via Serial.
 
 Created 2020-03-13
 By [Angelo qiao](Angelo.qiao@dfrobot.com)
 
 GNU Lesser General Public License.
 See <http://www.gnu.org/licenses/> for details.
 All above must be included in any redistribution
 ****************************************************/

/***********Notice and Trouble shooting***************
 1.Connection and Diagram can be found here
 <https://wiki.dfrobot.com/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336#target_23>
 2.This code is tested on Arduino Uno, Leonardo, Mega boards.
 ****************************************************/

#include "HUSKYLENS.h"
#include "SoftwareSerial.h"

HUSKYLENS huskylens;
SoftwareSerial mySerial(10, 11); // RX, TX
//HUSKYLENS green line >> Pin 10; blue line >> Pin 11
void printResult(HUSKYLENSResult result);

void setup() {
    Serial.begin(115200);
    mySerial.begin(9600);
    while (!huskylens.begin(mySerial))
    {
        Serial.println(F("Begin failed!"));
        Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>Serial 9600)"));
        Serial.println(F("2.Please recheck the connection."));
        delay(100);
    }
}

void loop() {
    if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));
    else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));
    else if(!huskylens.available()) Serial.println(F("No block or arrow appears on the screen!"));
    else
    {
        Serial.println(F("###########"));
        while (huskylens.available())
        {
            HUSKYLENSResult result = huskylens.read();
            printResult(result);
        }    
    }
}

void printResult(HUSKYLENSResult result){
    if (result.command == COMMAND_RETURN_BLOCK){
        Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);
    }
    else if (result.command == COMMAND_RETURN_ARROW){
        Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);
    }
    else{
        Serial.println("Object unknown!");
    }
}

It also will not compile the following code:

#include "SoftwareSerial.h"

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Here is the full error message:

WARNING: library SoftwareSerial claims to run on avr architecture(s) and may be incompatible with your current board which runs on mbed_giga architecture(s).
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp: In member function 'void SoftwareSerial::setTX(uint8_t)':
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:277:22: error: 'digitalPinToBitMask' was not declared in this scope
   _transmitBitMask = digitalPinToBitMask(tx);
                      ^~~~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:277:22: note: suggested alternative: 'digitalPinToPinName'
   _transmitBitMask = digitalPinToBitMask(tx);
                      ^~~~~~~~~~~~~~~~~~~
                      digitalPinToPinName
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:279:27: error: 'portOutputRegister' was not declared in this scope
   _transmitPortRegister = portOutputRegister(port);
                           ^~~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:279:27: note: suggested alternative: '_transmitPortRegister'
   _transmitPortRegister = portOutputRegister(port);
                           ^~~~~~~~~~~~~~~~~~
                           _transmitPortRegister
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp: In member function 'void SoftwareSerial::setRX(uint8_t)':
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:288:21: error: 'digitalPinToBitMask' was not declared in this scope
   _receiveBitMask = digitalPinToBitMask(rx);
                     ^~~~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:288:21: note: suggested alternative: 'digitalPinToPinName'
   _receiveBitMask = digitalPinToBitMask(rx);
                     ^~~~~~~~~~~~~~~~~~~
                     digitalPinToPinName
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:290:26: error: 'portInputRegister' was not declared in this scope
   _receivePortRegister = portInputRegister(port);
                          ^~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp: In member function 'void SoftwareSerial::begin(long int)':
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:309:25: error: 'F_CPU' was not declared in this scope
   uint16_t bit_delay = (F_CPU / speed) / 4;
                         ^~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:309:25: note: suggested alternative: 'FPU'
   uint16_t bit_delay = (F_CPU / speed) / 4;
                         ^~~~~
                         FPU
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:319:7: error: 'digitalPinToPCICR' was not declared in this scope
   if (digitalPinToPCICR((int8_t)_receivePin)) {
       ^~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:319:7: note: suggested alternative: 'digitalPinToPort'
   if (digitalPinToPCICR((int8_t)_receivePin)) {
       ^~~~~~~~~~~~~~~~~
       digitalPinToPort
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:360:52: error: 'digitalPinToPCICRbit' was not declared in this scope
     *digitalPinToPCICR((int8_t)_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
                                                    ^~~~~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:360:52: note: suggested alternative: 'digitalPinToPort'
     *digitalPinToPCICR((int8_t)_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
                                                    ^~~~~~~~~~~~~~~~~~~~
                                                    digitalPinToPort
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:360:48: error: '_BV' was not declared in this scope
     *digitalPinToPCICR((int8_t)_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
                                                ^~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:360:48: note: suggested alternative: '_B'
     *digitalPinToPCICR((int8_t)_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
                                                ^~~
                                                _B
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:363:22: error: 'digitalPinToPCMSK' was not declared in this scope
     _pcint_maskreg = digitalPinToPCMSK(_receivePin);
                      ^~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:363:22: note: suggested alternative: 'digitalPinToPort'
     _pcint_maskreg = digitalPinToPCMSK(_receivePin);
                      ^~~~~~~~~~~~~~~~~
                      digitalPinToPort
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:364:28: error: 'digitalPinToPCMSKbit' was not declared in this scope
     _pcint_maskvalue = _BV(digitalPinToPCMSKbit(_receivePin));
                            ^~~~~~~~~~~~~~~~~~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:364:28: note: suggested alternative: 'digitalPinToPort'
     _pcint_maskvalue = _BV(digitalPinToPCMSKbit(_receivePin));
                            ^~~~~~~~~~~~~~~~~~~~
                            digitalPinToPort
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp: In member function 'virtual size_t SoftwareSerial::write(uint8_t)':
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:429:21: error: 'SREG' was not declared in this scope
   uint8_t oldSREG = SREG;
                     ^~~~
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:429:21: note: suggested alternative: 'SET'
   uint8_t oldSREG = SREG;
                     ^~~~
                     SET
/Users/robbiethomas/Documents/Arduino/libraries/SoftwareSerial/src/SoftwareSerial.cpp:436:3: error: 'cli' was not declared in this scope
   cli();  // turn off interrupts for a clean txmit
   ^~~

exit status 1

Compilation error: exit status 1

That Arduino apepars to have 4 hardware serial ports.

Why would you want to use SoftwareSerial ?

A board with heaps of hardware serial ports might not have support for softwarserial added as there is no need.

:grin:
Using Serial1 it works now. Thanks so much!