A computer system includes a Flash or other nonvolatile memory. A
program(s) to coordinate data transfers is loaded into a volatile system
memory to transfer data from an external device to the Flash memory. The
data transferred from the external device to the Flash memory can be
transferred to a previously unused portion of the Flash memory, or
alternatively can overwrite a previously used portion of the Flash memory.
According to one aspect of the invention, the data is transferred from the
external device to the volatile system memory and then from the volatile
system memory to the Flash memory, allowing additional verification steps
to help insure that the data is transferred intact. According to another
aspect of the invention, data is copied from the external device to the
Flash memory on a portion by portion basis, leaving a set of critical
portions to be transferred last.