Atmega32M1 Optiboot upload problems under embedded linux

As DrAzzy said, if your optiboot is based on "recent" code, then it uses watchdog reset to start the application, and power-on reset will skip the bootloader. You need an actual "external reset" to start the bootloader - that normally happens via the autoreset circuitry, or you can add a "switch" between the RESET pin and ground.