Upgrading a non-volatile memory image such as a flash ROM is accomplished
by partitioning the flash ROM into a plurality of flash ROM regions. One of the
flash ROM regions is selected to receive the software upgrade, which can then be
directly overwritten without having to overwrite the flash ROM image in its entirety.
Through the use of an image buffer, which stores information about the ROM regions,
it is possible to move ROM regions, delete ROM regions, add ROM regions, expand/contact
ROM regions, update ROM regions, and enable/disable ROM regions without having
to modify the entire ROM image or shadow parts of the ROM image in RAM. Additionally,
security and registry information can also be logically linked to a particular region.