First, please be aware that the latest firmware is at:
the LCD library can automatically detect both parallel type and I2C type.
Second, if you built your own: version 2.3 uses ATMEGA1284, not ATMEGA644. You can still flash earlier versions of firmware (prior to version 2.1.6) if you have 644, but the latest firmware is too large to fit on 644, so you will need 1284. Also, a blank MCU does not come with bootloader, so either you can use a ISP programmer to flash the firmware, or you use ISP programmer to flash the bootloader then you can flash any firmware using the USB port.