1. A computer program product usable with a programmable computer having computer readable program code embodied therein, for updating firmware stored in a rewritable non-volatile memory, said rewritable non-volatile memory capable of storing a plurality of firmware code images, said firmware code images having position dependent code, comprising: computer readable program code which causes a computer processor to determine which one of a plurality of firmware code images stored in said rewritable non-volatile memory is to be updated; and computer readable program code which causes a computer processor to select one of a plurality of update firmware code images that has position dependent code suitable for replacing said determined firmware code image to be updated.