A memory device driver is described that can support multiple differing
memory devices, in particular, differing Flash memory devices, by being
internally re-configurable to match the driving and management
requirements of the particular memory device. This allows for a limited
number of operating system versions to be produced and maintained for a
given system by the manufacturer, reducing the possibility of
misconfiguration of the system/device by the inadvertent updating or
programming of the wrong operating system version by an end user or
service personnel. The resulting driver routine and/or operating system
is also typically smaller than operating systems/drivers that compile in
or load multiple separate drivers into themselves. In one embodiment of
the present invention, the software driver is automatically configures
itself by querying the memory device for a device ID and/or manufacturer
code or by detecting a specific characteristic of the memory device being
driven.