This is how I create the empty images...
• Open the boards.txt file
• Comment-out these two lines (.build.core line and .build.variant line)...
# atmega328Pbb1.build.core=arduino:arduino
# atmega328Pbb1.build.variant=arduino:standard
• Remove the comment from this line...
atmega328Pbb1.build.core=empty
• Close and save boards.txt
• If it is running close and restart the Arduino IDE
• The stuff in the cores/empty directory is now the current core. The only thing of interest is in main.cpp which consists of this...
int main(void)
{
for (;;);
return 0;
}
• In the Arduino IDE, select the board of interest (the board that was just switched to the empty core)
• Verify
• Navigate to the TEMP directory and locate the dot-hex file. That is the empty image.
• Copy and rename the empty image to the bootloaders/empty directory.
• Open the boards.txt file
• Comment-out this line...
# atmega328Pbb1.build.core=empty
• Restore these lines...
atmega328Pbb1.build.core=arduino:arduino
atmega328Pbb1.build.variant=arduino:standard
• Ensure this points to the correct directory (empty)...
atmega328Pbb1.bootloader.path=empty
• Set this to the name of the empty image...
atmega328Pbb1.bootloader.file=empty328Pat1.hex
• Close and save boards.txt
• If it is running close and restart the Arduino IDE
It is a lot of fiddly steps but the build settings are correct (e.g. the processor speed) so a mostly-empty-image could easily be created. For example, you may want the "empty" image to slowly flash an LED. That way you would know the empty image is loaded and it is safe to fiddle with the wiring.