Computers (e.g., servers) may load data from and store data to various types of storage media. Such storage media may include floppy disks, universal system bus (USB) storage devices, ZIP® disks, compact discs, etc. However, not all computers are equipped to access all types of storage media. For example, a server may have a USB drive, enabling it to access a USB storage device, but may lack a floppy drive, precluding it from accessing a floppy disk.
Some computers have operating systems that require installation of additional software (e.g., drivers) to help the computer function properly. However, the operating systems may be programmed to obtain such software from only a specific type of media (e.g., from only a floppy disk). Computers unable to read that specific type of media may encounter difficulty in obtaining and installing the required software. For example, a computer that requires software to be obtained from a floppy disk, but which lacks a floppy drive, will encounter difficulty in obtaining and installing the software.
For a detailed description of exemplary embodiments, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection or through an indirect electrical connection via other devices and connections.
The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
Described herein is a technique by which a solid-state, non-volatile memory (NVM) device (e.g., a universal system bus (USB) flash drive) removably coupled to a computer system is formatted as another type of storage device. For example, a USB flash drive may be formatted as a floppy disk. Further, a NVM device formatted as another type of storage device is used to load software onto a computer that is unable to read from the another type of storage device and that requires that the software be obtained only through the other type of storage device. Such an electronic device, which requires software to be provided only by a specific type of media, but which is not able to use (or does not have) that type of media, is referred to herein as a “selective electronic device” (SED).
For example, a SED that runs the WINDOWS® 2003 operating system (OS) may require a driver so that it can perform a particular function. The OS may require that the driver be obtained only from a floppy disk. However, the SED may lack a floppy drive. In this case, a floppy disk cannot be used to provide the driver to the OS. As such, a different media—such as a USB storage device—is formatted as a floppy disk and is then used to provide the driver to the OS. In this way, the OS determines (or “thinks”) that it is receiving the driver from a floppy disk, but in reality the OS is receiving the driver from the USB storage device.
Accordingly, there is first described an illustrative technique by which a NVM device may be formatted as a floppy disk. There is subsequently provided a description of an illustrative technique by which the contents of the formatted NVM device are transferred to a SED in accordance with embodiments of the invention. Although the various techniques are described herein in terms of a USB device formatted as a floppy, it should be understood that the same techniques may be applied to any storage device that is formatted as another type of storage device. For example, the techniques described herein may be applied to a USB device formatted as a CD-ROM; a compact flash device may be formatted as a USB device, etc.
A NVM device that has been formatted as a floppy disk is said to contain an “embedded floppy disk,” or EFD. An EFD may be generated on any suitable NVM device that can be removably coupled to a computer, such as a USB flash device or a flash memory stick. In at least some embodiments, the EFD comprises a data structure generated on the NVM device. The EFD generation techniques disclosed herein are described in the context of a USB flash device, but the scope of this disclosure is not limited to applying the EFD generating techniques solely to USB flash devices. Any non-volatile memory device may be used. For example, optical discs (e.g., CD-ROMs, BLU-RAY® discs, HD-DVD discs, holographic discs), MILLIPEDE® storage units, magnetic tape-based storage units, etc. may be used.
The memory housed within the device 100 comprises a plurality of sectors. In an illustrative embodiment, the device 100 memory comprises 256 MB, with 2000 sectors per MB, for a total of 512,000 sectors. Other configurations are possible as well.
The MBR 202 comprises information that instructs a computer coupled to the device 100 as to how the device 100 should be booted. Specifically, the partition table 204 describes the location (e.g., sector) of the beginning of each partition. In the embodiment of
Moreover, in an embodiment in which the EFD 210 is the last component of the memory map 200, as shown in
As previously mentioned, the EFD 210 is segregated from the partition 206 in this way because the partition 206 is used as a USB flash device, whereas the EFD 210 is used as a floppy disk. Intermingling between files in the EFD 210 and the remainder of the device 100 would prevent the EFD 210 from imitating a floppy drive that is separate and distinct from the remainder of the device 100. The EFD table 205 comprises a plurality of bits that indicate the presence of the EFD 210 and the position of the EFD 210 in the memory map 200.
In at least some cases, flash drives may not be manufactured with the EFD 210 and the EFD table 205. Instead, the EFD 210 and the EFD table 205 are embedded into a flash drive by an end-user to achieve a configuration such as that shown in
The secondary storage device 410 comprises, e.g., the USB device 100. The one or more input/output (I/O) devices 412 may include, but are not limited to, devices such as video displays, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, other computers or other well-known input devices.
The USB device 100 is coupled to the computer system 300 by inserting connector 102 into the USB port 312. In this way, the USB device 100 becomes accessible to the processor 402, as the secondary storage device 410 is shown to be accessible to the processor 402 in
When executed by the processor 402, the setup application 416 enables an end-user of the computer system 300 to configure the memory associated with the memory map 200 as desired. Any of a variety of configuration options may be provided to the end-user. One such configuration option is the ability to allocate a specific portion of the memory as the EFD 210. For example, in some embodiments, the setup application 416 causes the processor 402 to determine the number of sectors in the memory map 200. The processor 402 then provides this information to the end-user (e.g., by way of a graphical user interface (GUI) on the display 302). In the embodiment shown in
Once the end-user has allocated a portion of the memory map 200 as the EFD 210, the setup application 416 automatically generates and populates an EFD table. In the embodiment of
In at least some embodiments, the introduction of an EFD into an already-configured flash drive memory may necessitate re-configuration of the partition table and/or the FATs of the various partitions present in the memory. For example, assume the partition 206 of the memory map 200 comprised sectors 2-512,000 prior to generation of the EFD 210. The generation of the EFD 210 in sectors 509,191-512,000 causes the size of the partition 206 to change. The setup application 416 may cause the processor 402 to update the partition table 204 to reflect such changes in the partition 206. The processor 402 also may update the FAT 208 to reflect such changes in the partition 206.
To summarize the foregoing, the setup application 416 causes the processor 402 to allocate a portion of the memory map 200 for the EFD 210, and to generate and populate an EFD table 205. The setup application 416 also causes the processor 402 to update the partition table 204 and/or the FAT 208, and any other pertinent tables in the memory map 200, to reflect changes in the configuration of the memory map 200. The scope of disclosure is not limited to generating a single EFD 210 per device 100. Instead, multiple EFDs may be generated as desired, and EFD tables corresponding to the EFDs may be generated and populated as described above. As previously explained, the techniques described herein may apply to a USB device formatted as a floppy as well as to any suitable storage device formatted as another type of storage device. The computer system 300 interacts with (e.g., reads data from) the EFD 210 as is now described.
As explained above, the OS 414 may require software to be obtained from a floppy disk, but the system 300 may lack a floppy disk drive. Accordingly, referring to
The method 550 begins with coupling the USB device 100 to the chassis 308 by coupling the connector 102 to the USB port 312 (block 552). It is assumed that the EFD 210 and the EFD table 205 already have been generated on the USB device 100. The EFD 210 and the EFD table 205 are generated, for example, by an end-user using the setup application 416 as described above. Alternatively, the EFD 210 and table 205 may have been generated by the manufacturer of the USB device 100. The method 550 then comprises powering up the computer (block 554). When the computer is powered up, the processor 402 launches and executes the BIOS 500 (block 556). The BIOS 500 comprises firmware which is used to boot up the computer and to configure I/O devices coupled to the chassis 308. When executed, the BIOS 500 causes the processor 402 to locate I/O devices (e.g., the keyboard 304, mouse 306, display 302, USB device 100) and to boot the devices. The BIOS 500 also causes the processor 402 to boot the OS 414.
While in real mode, the BIOS 500 causes the processor 402 to search the system 300 for bootable I/O devices, such as those mentioned above. In searching for bootable devices, the processor 402 discovers the USB device 100 plugged in the USB port 312 (block 558). The processor 402 then determines whether the USB device 100 has been formatted as, e.g., a floppy disk (block 560).
After the processor 402 has discovered the presence of a USB device formatted as a floppy disk coupled to the chassis 308 (block 560), the BIOS 500 causes the processor 402 to allocate a portion 403 of the RAM 404 (block 564) or of some other storage housed within the chassis 308. Preferably, the processor 402 allocates 1.44 MB of the RAM 404, because most floppy disks contain 1.44 MB of storage space. The processor 402 then copies some or all of the contents of the EFD 210 to the allocated storage space 403 within RAM via the connector 102 and the USB port 312 (block 566). In some embodiments, the processor 402 copies all contents of the EFD 210 (e.g., 1.44 MB) to the storage space 403. In this way, any software needed by the OS 414 that was previously stored on the EFD 210 of the USB device 100 is transferred to the storage space 403 allocated in the RAM 404 for use by the EFD 210.
At this point in the method 550, the software needed by the OS 414 is stored in RAM 404. However, as previously explained, the OS 414 in a SED may require that the software be provided to the OS 414 by way of a specific type of media (e.g., a floppy disk and associated floppy drive). Thus, in accordance with embodiments of the invention, the method 550 further comprises mounting the storage space 403 allocated in the RAM 404 as a floppy drive, thereby causing the OS 414 to detect the allocated space 403 as a floppy drive (block 568). In this way, if the OS 414 detects that the space 403 allocated in RAM 404 is a floppy drive, the OS 414 will accept the software it needs from the RAM 404 (block 570), all the while “thinking” that it is actually accepting the software from a floppy disk. That is, the OS 414 obtains the software in the same manner regardless of whether the software is on a floppy disk or on the allocated portion of the RAM 404—the use of the allocated RAM is transparent to the OS 414. The technique by which the 1.44 MB of space allocated in RAM 404 is mounted as a floppy drive is now described.
As previously explained, allocated space 403 in the RAM 404 comprises the data (or “floppy image”) obtained from the USB 100. This allocated portion of RAM 404 is mounted as a floppy drive by the BIOS 500. Stated otherwise, the BIOS 500 interfaces with other software in the system 400 (including the OS 414) to re-route accesses intended for a floppy drive to the allocated portion 403 of RAM 404 instead. For example, the BIOS 500 may receive an INT13 call from software to access a floppy drive (e.g., drive B:\). Because the chassis 308 lacks a floppy drive, the BIOS 500 re-routes the INT13 call to the allocated portion 403 of RAM 404 which comprises the floppy image. In this way, the BIOS 500 enables software stored on the system 400 to access a floppy image stored on the RAM 404 which would otherwise not have been accessible.
The BIOS 500 may re-route received access requests (e.g., INT13 calls) using any suitable method. For example, the RAM 404 may contain re-routing data 401 (e.g., a table, data structure, flags, bits and/or any other suitable mechanism(s)) which is usable to indicate how the BIOS 500 should re-route calls to specific destinations. In an illustrative instance, upon receiving a data request from the OS 414 to a floppy drive B:\, the BIOS 500 may check the re-routing data 401 to determine how the BIOS 500 should re-route the request. The re-routing data 401 may indicate that requests to floppy drive B:\ should be re-routed to the allocated portion of RAM 404 containing the floppy image described above. Accordingly, the BIOS 500 may send the request from the OS 414 to the allocated portion 403 of RAM instead of sending the request to the floppy drive B:\ (since the floppy drive B:\ does not exist). In turn, the BIOS 500 may receive the requested data from the floppy image in the allocated portion 403 of RAM and may forward the data to the OS 414. Although a floppy drive B:\ was not accessed, the OS 414 “thinks” that a floppy drive B:\ was accessed. In this way, accesses between the OS 414 and the floppy image on RAM 404 are transparent to the OS 414.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. As previously explained, although the above embodiments are described primarily in terms of floppy drives and disks, USB storage devices, non-volatile memory, RAM, etc., the scope of this disclosure is not limited as such. The scope of this disclosure includes application of the techniques described above to any suitable computer system configuration. For instance, using the techniques described above, a USB storage device formatted as a CD-ROM may have a portion of its contents copied to an allocated portion of RAM. The allocated RAM may then be mounted as a CD-ROM drive. In this way, software that is required to be provided to a SED via a CD-ROM may be provided to the SED even when the SED lacks a CD-ROM drive. Various embodiments may use different types of media for different purposes, and numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. The following claims should be interpreted to embrace all such variations and modifications.