I have scratch-built a duemilanove using an ATmega328P and an FTDI FT232RL. It uses a 16MHz resonator and gets power from the USB port. For the 328P to 232RL section, t's built per the reference schematic; double checked the layout and schematic. Running Arduino 1.0.1 on a Windows 7. Installed the standard bootloader using an UNO (SMD R2).
A sketch [in my case, Blink] will compile and upload only once after the bootloader has been installed. However, trying to upload any subsequent sketches yields the dreaded "avrdude: stk500_getsync(): not in sync: resp=0x00" error. This is very repeatable. I've re-loaded the bootloader 3 times. Each time the first upload works, but the second time produces the same error. The blink sketch still runs after power is cycled, so the original [first uploaded] program isn't being lost after power down or after the second uploading fails.
I also tried out optiboot. Optiboot loaded without problem, but the system choked and didn't upload any sketch; even selected the board type as both a Duemilanove and a UNO; neither worked.
Any suggestions on how to resolve this issue?