Thank you for this great write-up!
I just want to chime in with some additional lines of code needed for the Arduino M0 Pro and the Atmel Studio 7.
In order to get sercom0 & sercom2 to work, I had to add these lines:
pinPeripheral(0, PIO_SERCOM); //Assign RX function to pin 0
pinPeripheral(1, PIO_SERCOM); //Assign TX function to pin 1
pinPeripheral(5, PIO_SERCOM); //Assign RX function to pin 5
pinPeripheral(4, PIO_SERCOM); //Assign TX function to pin 4
Hope someone find that helpful
Cheers