I just upgraded a couple boards to Optiboot 3 not realizing it would have any impact on my sketches. I thought after burning the bootloader I could just switch board types and start enjoying a little extra flash, optimized boot logic, and faster serial. Now my sketch won't compile.
I'm using Arduino 22, just grabbed Optiboot V3 (dropped in sketches/hardware folder), the new board types showed up, and I burned Optiboot v3 on my Seeeduino v1.1 (Atmega168) and Diecimila (Atmega168) with my USBTinyISP and everything went perfectly there. My sketch compiles fine as long as I have the board set to 'Arduino Diecimila, Duemilanove, or Nano w/ Atmega168'. If I just change the board to '[Optiboot] Arduino Diecimila, Duemilanove, Nano, NG w/ Atmega168' the sketch won't compile anymore. I get the following errors:
C:\Arduino\libraries\SPI\SPI.cpp: In static member function 'static void SPIClass::begin()': C:\Arduino\libraries\SPI\SPI.cpp:23: error: 'SCK' was not declared in this scope C:\Arduino\libraries\SPI\SPI.cpp:24: error: 'MOSI' was not declared in this scope C:\Arduino\libraries\SPI\SPI.cpp:25: error: 'SS' was not declared in this scope
I'm obviously using SPI.h in a C++ library. The most research I've been able to do leads me to speculate that this is related to some definitions somewhere in the Arduino cores for these pins that I'm not getting with the Arduino 18 cores included with Optiboot? If I switch the board type back to 'Arduino Diecimila, Duemilanove, or Nano w/ Atmega168' it compiles just fine. I'm stumped since I clearly don't understand the build process, cores, and libraries well enough to effectively troubleshoot this. Can someone point to some information somewhere the details what exactly is included with Optiboot, what ramifications this has on my sketches, etc?
I'm not sure of my next steps and I haven't been able to Google anything usable... any help?