Abstract:
An interface module and method to provide interfacing of removable digital storage devices (DSDs) to a host system, the interface module having multiple interfaces for the connection of digital storage devices, e.g. Compact Flash ( 86 ), a host communication means including a processor ( 110 ) for providing a communication channels to transport data ( 12 ) and other signals ( 18 ) between the digital storage device and the host system and means including a processor ( 110 ) for presenting data held on a connected DSD to the host system. Data contained in a DSD is presented to the host system in a transparent manner, that is the data appears as part of a local file or drive hierarchy without the intervention of the user. The invention enables constantly connecting and disconnecting different types of DSD which follow different protocols, without invoking installation routines, system error conditions, or other procedures involving heavy software or time overheads.

Description:
[0001]     The present invention relates to an apparatus and method for interfacing digital storage devices.  
         [0002]     The advent of consumer digital devices has consequently created new types of digital media storage. Examples of such consumer digital devices include products such digital cameras, personal digital devices (PDAs) and digital audio players.  
         [0003]     In the case of digital cameras and digital imaging there are several popular forms of data storage device common in use. The market has adopted a number of standard devices which include Compact Flash (CF), SmartMedia (SM), Sony Memory Stick (SMS), SecureDigital/Multimedia Card (SD/MMC) and various types of PCMCIA storage device including compact Type II magnetic drives. In addition, some cameras write directly to PC compatible media such as writable optical discs (CD-R, CD-RW) and magnetic “floppy” disks. Generally, solid-state memory devices have limited storage capacity, and are not intended as the ultimate means of image storage due to cost constraints. Systems which use CD-R or CD-RW disks, however, do provide a cost effective means of storing and retaining images long-term. In terms of market uptake, together CF and SM account for more than 80% of the digital camera systems on the market. Card capacities are increasing rapidly with capacities expected to range from the current standard of 16 MB (megabytes) to 256 MB and above.  
         [0004]     Although user preferences vary, digital camera users generally capture a full card of images and upload these image files to another system for long-term storage and archiving. Typically a PC system is used as a storage device, whereby images are transferred to an internal storage drive, which is most commonly an industry-standard hard drive. For ultimate data archiving, the image files can be transferred to a secure data storage medium such as CD-R or CD-RW using a PC as the intermediate storage system. It is also to be expected that consumer devices will become available which will link directly to the camera via the data communications interface. This is most commonly Universal Serial Bus (USB) although PC compatible RS232 interfaces are still in use.  
         [0005]     In addition to requiring file storage capabilities, end-users will ultimately require prints of their images. This can be achieved today by printing directly from a PC on one of the many types of colour printer available. Although print quality is generally acceptable with available consumer devices, none of them can match the low cost per print, quality of print and durability of conventional wet-film prints. Accordingly, although digital camera uptake in the consumer market is now exceeding conventional camera shipment, the ability of consumers to achieve the same level of performance as conventional film is reduced by the absence of any cost-effective means of producing high-quality images directly from the camera or from the internal storage device.  
         [0006]     To address this issue, manufacturers of high quality photo-printing equipment are planning to deploy public-access systems for the upload and printing of digital images. Traditional wet film processing equipment will be superseded by fully digital print systems. Consumers will directly insert the physical storage device into the “photo terminal” where the system will read all files and display the images on a video display for selection, manipulation and printing via the installed digital print system. It is intended that such systems will take the form of transactional terminals/kiosks with touch-screen displays which will be designed for consumer/customer use within a traditional retail environment. As such, both the terminal and the means of interfacing to the physical media have to be designed for ease of use and be engineered for robustness against accidental or deliberate misuse.  
         [0007]     In addition, it is an essential requirement that images are transferred from the storage device to the processing terminal within a short period of time to reduce customer waiting time at the terminal. Given the current capacity of solid state devices (4-256 MB) and the planned improvement from manufacturers, it is a key requirement of such applications that the transfer rate is above 1 Mbyte per second and ideally an order of magnitude higher.  
         [0008]     Similarly, digital music players, which rely on compressed audio files, also use the same types of solid state memory devices and interfaces as are used in digital cameras, although at present, SD/MMC and SMS are the most common types used. For these, there exists an opportunity for retailers to offer digital music download within stores by writing directly to the physical storage device or by interfacing via one of the communication ports provided on the player (normally USB).  
         [0009]     Again, some form of public access terminal will be required which customers can use directly without store assistance, and which will incorporate full transactional payment facilities. This application essentially parallels that of digital imaging with the difference being that data is written to the physical memory device, rather than read off it. The user interface may be more demanding for imaging applications than for audio. Otherwise, the requirements in terms of electronic communication and physical features of the read/write interface are the same in both applications.  
         [0010]     Although there will be other applications and products which use compact forms of digital storage device, the rapid uptake of both digital cameras and digital audio players coupled with requirements for a range of versatile e-commerce transaction terminals, has created a need for some form of multi-device reader/writer, which can interface to all common types of storage device. The key features needed in such a device are multi-device handling capability, ease of use and robustness.  
         [0011]     As not all products use the same memory device and it is necessary to cater for a range which should include CF, SM, SMS, SD/MMC and PC Card devices operating in true IDE mode.  
         [0012]     Further, the reader should be designed to facilitate insertion and removal of the memory devices. It should be noted that some devices (particularly CF and PC Card) have a large number of connector pins and correspondingly high insertion/extraction force. Alignment of the device during insertion is critical. Ergonomics of the interface is important together with visual/audible feedback of correct insertion prior to each read/write cycle.  
         [0013]     Although many types of reader/writer are available for PC use, these are generally not reliable/robust enough for public unattended use. The durability of the mechanical interface and components is key to the long term functionality of the device.  
         [0014]     In addition to mechanical robustness, however, PCs are known to be prone to software “crashes”, and current operating systems, even with “plug and play” functionality cannot provide a reliable public access service. In particular, with the different media different error states can arise if media is not inserted correctly, is withdrawn prematurely, the data is corrupted, and so forth. Moreover, the diversity of physical and software interfaces from application programs to the devices themselves make it very difficult for manufacturers to implement a single kiosk apparatus compatible simultaneously with the wide variety of formats in the marketplace today.  
         [0015]     It is an object of the present invention to provide a computer interface and application protocols which multiple digital media interface satisfying the criteria discussed above.  
         [0016]     It is a further object of the present invention that the data contained in a storage device be presented to host system in a transparent manner, that is the data appears as part of a local file or drive hierarchy without the intervention of the user.  
         [0017]     It is a yet further object of the present invention to enable interfacing of storage devices to a host system, constantly connecting and disconnecting different types of storage device which follow different protocols, without invoking installation routines, system error conditions, or other procedures involving heavy software or time overheads.  
         [0018]     In a first aspect, the invention provides an interface module for the interfacing of removable digital storage devices (DSDs) to a host system, the module comprising: 
        a connector interface means for the connection of at least one digital storage device;     a host communication means for providing a communication channel to transport data and other signals between a digital storage device and the host system; and     a data presenter means for presenting data held on a connected DSD to the host system.        
 
         [0022]     Preferably the connector interface means is adapted to read any data including low level data from the DSD.  
         [0023]     Preferably the host communication means provides a first communication channel to transport data between a digital storage device and the host system and a second communication channel to transport control signals between the interface module and the host system.  
         [0024]     Preferably the data presenter means further comprises a data buffer.  
         [0025]     Preferably the data presenter means presents data held on a connected DSD to the host system as part of a file hierarchy local to the host.  
         [0026]     Preferably the interface module further comprises a data routing means for routing of data and signals from a temporarily connected DSD to the host system.  
         [0027]     Preferably the interface module further comprises a detection means for detecting connection of an DSD to the interface module.  
         [0028]     Preferably, the detection means detects the DSD without reading data from the DSD.  
         [0029]     Preferably the interface module further comprises a connection control means for controlling the physical connection of DSDs.  
         [0030]     Preferably the interface module further comprises a user interface control means for controlling the user interface of DSDs.  
         [0031]     Preferably the interface module further comprises an indication means for indicating the status of DSDs to the interface module.  
         [0032]     Preferably the interface module further comprises flash memory for storing application firmware.  
         [0033]     Hardware control functions for the plurality of different DSD receptacles may be integrated into a common control function within the interface module.  
         [0034]     The data access functions and file system for the plurality of different DSD receptacles may be integrated into a single storage device driver within the host computer system.  
         [0035]     Hardware control functions may be implemented via a separate driver.  
         [0036]     This arrangement allows for the compact assembly of an interface module and associated module housing to receive a number of external connections. A single interfacing means is provided for a number of different digital media devices, providing high bandwidth communication channels with appropriate software control to present any one device in a transparent manner to a host system. This removes the inconvenience of separate detect and start-up routines at the application level, for when different types are connected, as would be the case in conventional arrangements.  
         [0037]     The connector interface means may have a modular architecture wherein different communication and/or device protocols are catered for by different connector interface modules.  
         [0038]     For example, it is possible to cater for several types of storage device via a single interface protocol. One example of this is to provide IDE interface logic for the interfacing of Compact Flash and PC-Card type II devices. Other examples using this modular approach include providing separate modules for handling the interfacing of USB compatible devices or wireless based devices. A wireless based device may operate according to the Bluetooth wireless standard or other known wireless protocols.  
         [0039]     It is also possible to organise the interface modules or elements physically so as to facilitate ease of manufacture. An example of this would be to arrange the interface connections for memory stick, SD/MMC and SmartMedia devices onto a daughterboard PCB.  
         [0040]     The interface connection to the digital storage devices may be implemented by using commercially available or proprietary components to physically interface to the communication channels of the of the interface module.  
         [0041]     Said communication channels comprise interconnecting means arranged for high bandwidth transfer of data and other signal information between an externally connected DSDs and interface module.  
         [0042]     The communication channels between an externally connected DSD and the interface module may be managed through the provision of proprietary interfaces and controllers.  
         [0043]     For example, IDE interface logic may be provided to control the routing of data to the CPU from Compact Flash, PC-card Type II or other devices capable of operating in true ATE/IDE mode. Alternatively, a PCMCIA controller may be used for the case of Compact Flash and PC-card.  
         [0044]     Similarly, data may be acquired from a device through a USB interface.  
         [0045]     Preferably the interface module further comprises a bridging connector to provide data and signal management by the interface module for providing communication channels between an externally connected DSD and the interface module.  
         [0046]     Said communication channels further comprise interconnecting means arranged to provide for high bandwidth transfer of data and other signal information between the interface module and host.  
         [0047]     Said interconnecting means may comprise a suitable communications interface. The communications interface may comprise known standard interfaces.  
         [0048]     Examples of standard interfaces which may be used to transfer data between the interface module and host system include IEEE 1394 (Firewire), small computer system interface (SCSI) and peripheral computer interface (PCI). The PCI solution may included both direct PCI and bridged PCI alternatives.  
         [0049]     A PCMCIA controller may also be used to manage the flow of data to a host system.  
         [0050]     Additionally, universal serial bus (USB) or derivative standard such as USB 2.0 may be used to transfer data to a host system.  
         [0051]     Alternatively, IEEE 1394 may be used to transfer data to a host system.  
         [0052]     An additional communication channel may be provided between the interface module and the host system in the form of a serial RS232 bus.  
         [0053]     A separate input/output control block may be used to control the connection and disconnection of DSDs to the interface module.  
         [0054]     This block may manage the direct control of any connection and disconnection indications for the DSDs, such as LED indicators. Similarly, this control may control any connection and disconnection mechanisms, for example, solenoids, for the opening and closing of shutter mechanisms to allow the connection or disconnection of DSDs to the connector interface means.  
         [0055]     Behaviour of the I/O control block may be defined by application software executed on either the host system via the interface module or solely by the interface module.  
         [0056]     This may be implemented using spare commands within the storage device interface (such as IDE). In the preferred embodiments to be described herein, however, the control block communicated with the host via the same physical interface, but with a distinct driver program. The I/O control is therefore implemented independently of the file system mapping, and a modular structure for the software and hardware can be maintained.  
         [0057]     The control interface may be controlled by the same local CPU, or a dedicated MPU.  
         [0058]     The GPIO block may be implemented as a single field programmable gate array (FPGA) or CPLD.  
         [0059]     Management of the interface module behaviour is managed by the CPU. The CPU runs an embedded operating system (OS) capable of multitasking the read/write processes for each device and host data communications. This processor communicates with the host PC system via a number of communication ports.  
         [0060]     Preferably the interface module further comprises an embedded OS that mediates interfacing of digital storage devices so as to present data stored on such a device as part of the host system local file/drive hierarchy wherein data stored on a DSD is mapped onto the file system of the host system and connecting or removing a device from the interface does not impact the normal operation of the host system.  
         [0061]     The devices supported by the interface may include devices compatible with the following format types: Compact Flash, Smart Media, Sony Memory Stick, Secure Digital/Multimedia Card, or PCMCIA memory card (PC Card).  
         [0062]     The external connections may provide inputs, outputs or both. In a digital media drive storage and retrieval application, the transport of data in the interface module will generally be inward, from the external connections to the processing module. In particular, external input connections may be provided by the interface module for the presentation of a flash file system, with high bandwidth interconnections provided in the interface module.  
         [0063]     The operation of the interface module is unaffected by external DSD connection and disconnection.  
         [0064]     The interface module may separately provide local bus interconnections for communication between other processing units.  
         [0065]     The interface module may be subdivided into processing units, each unit receiving a set of separately pluggable externally connecting modules and processing the external signal.  
         [0066]     The invention further provides a method for the interfacing of removable digital storage devices (DSDs) to a host system, the method comprising the steps: 
        connecting of at least one digital storage device;     providing a communication channel to transport data and other signals between said digital storage device and the host system; and     presenting data held on said connected DSD to the host system.        
 
         [0070]     Preferably the step of providing a communication channel further comprises providing a first communication channel to transport data between a digital storage device and the host system and a second communication channel to transport control signals between the interface module and the host system.  
         [0071]     Preferably the step of presenting data comprises presenting data held on a connected DSD to the host system as part of a file hierarchy local to the host.  
         [0072]     Preferably the method further comprises routing of data and signals from a temporarily connected DSD to the host system.  
         [0073]     Preferably the method further comprises detecting connection of an external DSD to the interface module.  
         [0074]     Preferably the method further comprises detecting the DSD without reading data from the DSD.  
         [0075]     Preferably the method further comprises controlling the physical connection of DSDs.  
         [0076]     Preferably the method further comprises controlling the user interface of DSDs.  
         [0077]     Preferably the method further comprises indicating the status of DSDs to the interface module.  
         [0078]     Hardware control functions for the plurality of different DSD receptacles may be integrated into a common control function within the interface module.  
         [0079]     Preferably the method further comprises accessing data for the plurality of different DSD receptacles by accessing a single storage device driver within the host computer system.  
         [0080]     Preferably the method further comprises accessing hardware control functions for the plurality of different DSD receptacles by accessing a separate device driver within the host computer system.  
         [0081]     In a second aspect the invention provides a method of and apparatus for interfacing removable digital storage devices to a host system wherein data held on said devices is presented transparently as part of the host system local file or drive hierarchy, wherein a driver stack interfaces said devices to the host system, the driver stack providing a mirror of the host system replicating commands and data across a driver stack.  
         [0082]     In a third aspect the invention provides a method of and apparatus for interfacing a variety of removable digital storage devices (DSDs) to a host computer system wherein specific mechanical and electrical interfaces are provided for each type of DSD and data held on said devices is presented transparently as part of a host system file system, wherein a driver stack interfaces said different devices to the application level software in the host system via a common application programming interface.  
         [0083]     Communication with the host computer system may present the various DSD types within a single storage class driver. For example, a standard SCSI type driver provides a superset of all the commands necessary to address and access files within the range of DSDs contemplated herein.  
         [0084]     The devices may be assigned different logical drive names (drive letters) in the file system, and/or some of them may be integrated in a single logical drive. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0085]     Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings, in which:  
         [0086]      FIG. 1  shows a kiosk fascia including interface means for multiple digital storage devices in accordance with the present invention;  
         [0087]      FIG. 2  is a system application diagram for the interfacing of said digital storage devices to a host system in accordance with an embodiment of the invention;  
         [0088]      FIG. 3  is block diagram of an interface module with the embodiment of  FIGS. 1 and 2 ;  
         [0089]      FIG. 4  is a block diagram of the interface module for Within another embodiment of the invention;  
         [0090]      FIG. 5  is a block diagram of yet another embodiment of the interface module;  
         [0091]      FIG. 6  is a block diagram of yet another embodiment of the interface module;  
         [0092]      FIG. 7  is a software component diagram for the embodiments of  FIGS. 3, 4  or  6 ;  
         [0093]      FIG. 8  illustrates a data communications stack within the embodiment of  FIG. 7 . 
     
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS  
       [0094]      FIG. 1  shows a kiosk fascia including interface means for multiple digital storage devices.  
         [0095]     This shows an embodiment of an electronic system for controlling a multi-device interface which has features which benefit embedded use within a kiosk  2  for the purpose of reading data from and writing data to physical solid state memory devices.  
         [0096]     Such a kiosk  2  may for example comprise a screen  4  acting as a user interface. The screen may be implemented as a “touchscreen” to allow user interaction. Other means for user interaction may be provided, such as a keyboard or the like.  
         [0097]     The kiosk provides a number of insert slots  6  for the insertion of different types of digital storage devices for interfacing to the kiosk host system. The host system controls the kiosk operation. Another slot is provided for insertion of credit cards of the like for charging of kiosk services.  
         [0098]     The kiosk allows for a number of different digital storage devices to be used, providing separate slots for different devices such as, among others, Sony memory stick  10 , SD/MMC  12 , Smart media  14 , compact flash  16  and PCMCIA Type II cards  18 , as well as magnetic/optical media (CD-RW)  20 .  
         [0099]     The kiosk interface also provides indication means  22  for indicating if a device has been inserted, or, for example, if a device is in use by the kiosk or about to be ejected. For certain types of media such as compact flash or PCMCIA cards there is also provided means  24  for activating an insertion and ejection mechanism. Such a mechanism should provide the smooth transport of the device to and from the interface connecting means with the kiosk.  
         [heading-0100]     Memory Devices and Characteristics  
         [0101]     Characteristics of memory device types and features can be summarised as follows:  
         [heading-0102]     Compact Flash  
         [0103]     This is an open standard form of memory device originally developed by Sandisk Corporation. It is available in reasonably high capacities (currently up to 256 MB) and uses a parallel data communications bus. Internally the device uses flash memory components and can operate and store data in a true Flash File System (FFS) format. Compact flash includes an internal control device/ASIC which permits the device to be used in a so-called true ATA/IDE mode. This is accomplished by setting the control voltage one of the control pins on the 50 way interface connector. When activated in this mode, the device behaves exactly as an ATA/IDE device and through a direct interface, can be read from a PC systems IDE bus. Alternatively, the CF card can be interfaced to a PCMCIA port of a PC, with minimal passive re-routing of the signals form the CF card to the PCMCIA connector.  
         [0104]     The architecture/bus design of this card permits a maximum burst data rate in true IDE mode of approximately 16 Mbytes per second. In true IDE mode, which is most commonly used in digital cameras, the FFS is mapped to an equivalent LBA (Logical Block Addressing) structure which can be read through the normal ATA command set.  
         [0105]     The CF connector includes two pins which mechanically protrude beyond the others.  
         [0106]     These are connected to ground and are used to interface to a card detect circuit to power the card only when the connector is inserted correctly. All CF cards are 5V TTL signal level power.  
         [heading-0107]     Smart Media  
         [0108]     Details are not necessary for an understanding of the present invention.  
         [heading-0109]     Sony Memory Stick  
         [0110]     Details are not necessary for an understanding of the present invention.  
         [heading-0111]     Secure Digital/Multimedia Card  
         [0112]     Details are not necessary for an understanding of the present invention.  
         [heading-0113]     PCMCIA Memory Card (PC Card)  
         [0114]     Details are not necessary for an understanding of the present invention.  
         [heading-0115]     Communications and Bandwidth  
         [0116]     In order to interface all of the above devices and provide for future devices, it is necessary to specify a suitable form of communications interface which will allow data to be transferred between the host system (PC) and embedded system. A number of potential standard interfaces can be used for this product.  
         [0117]     A well known interfacing standard is USB, a physical+protocol layer transmission standard introduced for general medium bandwidth communications for PC peripherals. The current standard and physical devices available is capable of a maximum serial bit rate of 12 Mbits/second. Given the serial nature of this transmission protocol and the requirements for handshaking and control, the maximum sustainable data transfer rate which can be achieved is of the order of 1 Mbyte per second. This would be adequate for current generation memory devices but would not provide sufficient bandwidth for memory capacities above 32 MB in this particular application. The primary advantages of this bus are simplicity, reduced development effort and low cost.  
         [0118]     There is also the capability for supporting future iterations of the USB standard, such as USB2.0.  
         [0119]     Examples of other standard interfaces which may also be used to transfer data between the interface module and host system include IEEE 1394 (Firewire), small computer system interface (SCSI) and peripheral computer interface (PCI). The PCI solution may include both direct PCI and bridged PCI alternatives.  
         [0120]     A PCMCIA controller may also be used to manage the flow of data to a host system.  
         [0121]      FIG. 2  is a system application diagram of an embodiment for interfacing digital storage devices to a host system.  
         [0122]     This shows the main elements which make up the kiosk of  FIG. 1 , and other associated components.  
         [0123]     The kiosk system comprises a host system  30 , which is shown here implemented by a personal computer (PC) based system. A number of peripherals may be connected to the host system to provide the various functional aspects of the kiosk. A touchscreen monitor  32  provides a graphical user interface (GUI) for the kiosk. A card reader  34  is provided for reading credit cards or other type of charge card to provide payment for use of the kiosk, and a receipt printer  36  for proof of purchase. A colour printer may be provided for printing proof prints and other documents. Additionally, a link to photo-finishing system  40  is provided for the provision of high quality photographic prints. An interface module  42  provides the means for interfacing all of the key devices (such as CF, SM, SonyMS, SD/MMC and PCMCIA memory card) are in a single kiosk peripheral device, with the necessary controls features to suit applications in this area.  
         [0124]     The host system comprises the necessary elements needed for interfacing and controlling the various peripherals of the kiosk, including media storage CD-ROM drive  42 , floppy disk drive  44  and hard disk drive  46 ; motherboard  48 , printer interface  50  and interface  52  to digital storage device interface module  54 .  
         [0125]      FIGS. 3 and 4  are block diagrams of two embodiments of the interface module of  FIG. 2  and interfaces to the host system and other components.  
         [0126]      FIG. 3  shows a basic embodiment of the electronic system of the interface module and  FIG. 4  an embodiment with additional PCMCIA controller means. Like numerals describe like elements in each Figure.  
         [heading-0127]     Description of Electronic System  
         [0128]     With reference to  FIGS. 3 and 4  the electronic system of the interface module will now be described. The multi-device reader design is capable of read/write control of the following key devices: 
        Sony Memory Stick  80      Secure Digital/MMC  82      Smart Media  84      Compact Flash  86      PCMCIA card (PC card)—memory devices only in true ATA mode  88      Direct USB connection of device  90      Bluetooth wireless interconnection to devices  92         
 
         [0136]     The system block diagram illustrates the electronic interconnection of components of a such a multi reader device. This includes a connector interface  100  to all of the above supported devices, 3 of which (SMS, SD/MMC and SM) are mounted on a daughter-board  102  to provide mechanical flexibility in the final assembly. This allows all of the market dominant memory storage devices to be accessed (read and write capability). In addition, two channels  104 ,  106  are provided for direct interfacing to digital products, i.e. USB  90  and Bluetooth  92 .  
         [0137]     The various devices  80 - 84  connect by way of connectors  108 - 112  to matching interfaces  114 - 116  and PCMCIA bridge  118  via buses  120 - 124 . Similarly, devices  86 ,  88  are linked by way of connectors  126 ,  128  to IDE interface logic controller  130 . PCMCIA bridge  118  also connects to IDE interface logic controller  130 . Similarly, USB port connects to a PCI-USB bridge  132 . Bus means  134 - 138  are provided for connection to a central processor unit  140 .  
         [0138]     Other ports include local area network (LAN) port  142  connecting to interface  144 , small systems computer interface (SCSI) port  146  and interface  148 , both connecting to bus  138 .  
         [0139]     There is also provided an IEEE 1394 (Firewire) port  150  and layers  152  connecting to bus  134  and an RS232 port  154  and layers  156  connecting to CPU  140 .  
         [0140]     A manual eject means  158  is provided for connectors  126 ,  128 . Servo means  160  are further provided for physical transport of devices. Indicators  162  are provided for each connector means  108 - 112 ,  126 ,  128 . Servo means  160  and indicators  162  are connected to general purpose input/output means (GPIO)  166 . Card and power control  168  is also connected to GPIO  166 . GPIO  166  is connected to CPU  140 .  
         [0141]     Also provided on the interface module are flash ROM  170  and SDRAM  172 .  
         [0142]      FIG. 4  shows an alternative embodiment of the electronic system with additional PCMCIA controller means  174 . Like numerals describe like elements in  FIGS. 3 and 4 .  
         [0143]     All devices are controlled by a 32 bit processor  140  which runs an embedded operating system capable of multitasking the read/write processes for each device and host data communications. This processor communicates with the host PC system via a number of communication ports. For data transfer (&gt;1 Mbyte/sec), one of the high-bandwidth data ports is used, such as 1394 (“Firewire”)  150 , 100Tx LAN  154  or SCSI  146 . Only one data communications port will be implemented in any product, with the choice depending on the application and system integration requirements. Generally, 1394 will be the preferred communications channel. For slow speed data communication, a separate serial RS232 channel  154  is provided. This will enable boot loading of the 32 bit processor firmware from the host PC system. In addition, this communications channel can be used for low-level control commands to the device when the main data communications channel is unavailable. Such situations can occur when there is an operating system error on the host PC system which prevents communication over the main data channel which will invariably include a high level software protocol and operating system drivers and be somewhat prone to system hangs.  
         [0144]     A number of additional external interface for future device support are also included, as will now be briefly described.  
         [heading-0145]     USB Port Interface:  
         [0146]     In some situations, it may be desirable to connect to the physical device directly via a USB port  104 , leaving the memory storage device intact in the product. For example, one potential application of the above device is delivering digital music to portable digital audio players e.g. MP3 players. Generally, these devices use USB as the data communications channel. The disadvantage of this approach is reduced data transfer rate due to the limitations of the USB interface (&lt;1 Mbyte/sec average transfer speed). Although the device could be plugged directly into the Host PC&#39;s USB port, this may cause problems due to driver availability and system hangs from incorrect connection and removal of the USB device  90 . It will also be necessary to provide Windows drivers for all types of devices supported, as many devices still do not implement a standard high-level protocol, but simply use the basic USB protocol to transfer data and commands.  
         [heading-0147]     Bluetooth:  
         [0148]     Future products will use this emerging wireless standard, which is capable of burst data rates of typically 11 Mbits/sec and is comparable to USB performance. The clear advantage, however, is wireless connectivity. Suitable provision for an appropriate local bus bluetooth transceiver  106  will be provided as a plug-in.  
         [0149]     Solid state memory storage devices generally operate on some from of true flash file system and can either employ a serial communications interface or a parallel interface (generally 8 bit). In addition, some devices, such as compact flash, can operate in a true IDE/ATA mode allowing them to be connected directly to a PC IDE expansion bus. Alternatively, it is possible to use a PCMCIA interface adapter, as this interface standard has ATA/IDE drivers as a subset, with only minor additional logic controls required to implement the ATA standard communication protocol. With the exception of CF and PCMCIA memory cards, all others use flash file systems, some of which are proprietary, e.g. Sony Memory stick. The following notes describe the communications and controls to each of the devices.  
         [heading-0150]     Compact Flash:  
         [0151]     Compact flash can operate either in true flash file System (FFS) mode or true IDA/ATA mode. It is simpler to implement an ATA class driver than true FFS, so this device is controlled using ATA commands. The device is enabled in ATA mode by driving the appropriate pins on the interface connector. The ATA driver can either be coded directly for the embedded RTOS or it is possible to use any Card and Socket services (CSS) within the RTOS and to communicate via a PCI-PCMCIA bridge chip. This would replace the IDE interface logic block which is driven from the local bus of the processor. The disadvantage of utilizing a PCMCIA bridge could be speed, as the CSS incurs considerable protocol stack overhead.  
         [heading-0152]     Smart Media:  
         [0153]     Smart media operates in a true FFS mode via an 8 bit data bus. To simplify the design and avoid the need to write detailed FFS drivers, this design uses a PCMCIA-smartmedia bridge ASIC (Feiya part number SMC1205DL). This ASIC maps the FFS to ATA commands and allows smart media to be connected to en ATA/IDE port. The ASIC takes care of all error checking required by the Smartmedia interface standards. NB It is important to cater for both 3.3V and 5C cards and ensure proper power on control sequence. This is handled by the card power control block.  
         [heading-0154]     Sony MS, SD/MMC  
         [0155]     Both of these devices use a serial data/communications bus and require low level bitwise control from the processor. Some custom hardware may be required in each case to ensure proper signal levels control and timing.  
         [heading-0156]     ATA/IDE Block  
         [0157]     As discussed above, CF, Smartmedia (via bridge chip) and memory type PC cards can all support the ATA command and data protocols. This is a relatively simple interface requiring minimal addressing. This block provides the necessary addressing and multiplexing of local bus lines to provide 3 selectable ATA interfaces. It is envisaged that this will be implemented within some form of FPGA/CPLD. Other digital control functions may also be swept into this block.  
         [heading-0158]     GPIO Block  
         [0159]     The GPIO control logic block provides low level digital control of the front panel LED&#39;s and the shutter solenoids. Each device slot on the front bezel of the device has a single LED to indicate status to the end user of the device. For example, the LED will be illuminated when the user is prompted to insert the memory device. This user would be asked to identify the type of memory device they have, by application software controlling the images presented on the main kiosk screen. Additionally, the LED could be controlled in a pulsed mode to indicate when it is safe to remove the memory device from the slot. This is important, as loss of data or damage to the card could result from removal of the device whilst it is being accessed.  
         [0160]     The control logic block also provides control of the two shutter solenoids on the CF and PCMCIA connector slots. This is ultimately controlled by the main application software. The shutters prevent users from inserting smaller cards into the larger CF and PCMCIA sockets. The control interface is connected to an external MCU which provides TTL level signals to the control logic circuit block.  
         [0161]     All of the functionality of this block may be implemented together with the ATA interface within a single FPGA/CPLD.  
         [heading-0162]     1394 Bus  
         [0163]     This bus is used as the preferred data communications channel for the device, giving a burst data rate of 400 Mbits/sec. Depending on the configuration and software stack, mean transfer rates in the 5-10 Mbytes/sec are possible. The choice of the Link Layer Controller (LLC) is particularly important in respect to speed. Most consumer type devices use a FIFO based controller due to cost requirements and such devices require a high processor overhead to control data transfer to and from the LLC. The particular LLC chosen for this design is a PCI based controller which allows burst data transfer of large data blocks via PCI command chaining: this gives a much higher transfer rate than local bus FIFO controllers.  
         [0164]     In the design shown, the media drive operates as a client node on the 1394 bus, with a single port PHY device employed. In some situations, it may be a requirement for this device to act as a master on the 1394 bus and control other devices. Current and future consumer products may include 1394 interfaces (as present on digital video cameras) as the primary communications channel. As such it may be desirable to have an external 1394 port available as another direct consumer port. In this instance, a multi-port PHY device can be used in place of the single port PHY.  
         [heading-0165]     Processor and Associated IC&#39;s  
         [0166]     The need for high bandwidth on the 1394 channel is the key requirements driving the selection of processor, which therefore requires a PCI expansion bus to drive the PCI LLC. Ideally, this processor should have integral PCI expansion, such as the Toshiba MIPS however, other processors with expansion companion chips such as the Intel SA110 would also be capable of powering this device. Overall, the performance is set primarily by the 1394 requirements, although the device needs to be able to simultaneously transfer data from the devices and to the host.  
         [0167]     The main application code is stored within flash memory to permit in system programming (ISP) of the embedded application firmware. A suitable flash device will include a boot ROM section for storing non-volatile boot code. Application memory is available both internally on the processor and externally via a suitable SDRAM.  
         [heading-0168]     RS232  
         [0169]     Serial RS232 is provided primarily as a low-level control channel and is used for command level control and diagnostics in the event of communications errors on the main data channel. In addition, application firmware will be flashed via this channel to provide a means of upgrading the embedded control software.  
         [heading-0170]     Power Control Block  
         [0171]     Power is supplied via a single 3.5 mm jack plug to the power control block. This provides all of the necessary power to each component and control of the power on sequence to each device.  
         [heading-0172]     Alternative Implementations  
         [0173]     There are a number of alternative approaches to providing a peripheral device capable of accessing all of the identified storage devices.  
         [heading-0174]     Using Commercially Available Single Readers  
         [0175]     The interface module  54  can be implemented as a collection of single reader devices, such as are already commercially available, but with suitable adapter boards to present their slots in appropriate spatial relationship. Not all of the advantageous features highlighted in the present application can be implemented using these drives, however. In particular, the indicator LEDs, and status monitoring may not be available in such cases.  
         [heading-0176]     PCI Card  
         [0177]      FIG. 5  shows a PCI implementation of the above described system.  
         [0178]     The devices and their connectors are shown as before in  FIGS. 3 and 4 . These connect to a PCI connecting card  200  by way of buses  202 . PCI card  200  holds the PCMCIA controller  174  with CF/PCMCIA logic  204  and SmartMedia PCMCIA bridge  118 , connected by buses  206 ,  208  respectively. EEPROM  210  is also provided. Connection to the host system is by way of standard PCI edge connector  212 . Other input/output routing is as shown at  214 .  
         [0179]     It is possible to eliminate the serial data communications channel by interfacing all devices onto a single integrated motherboard (PCI card)  200 , as shown in  FIG. 5 . In this implementation, a PCI-local bus bridge is used, giving potentially 33 Mbytes/sec burst transfer speed across the host system&#39;s PCI bus (actual speed will depend on the chosen bridge IC). All of the devices will be interfaces via the PIO and ATA ports as described elsewhere. This approach gives the advantage of high data transfer from host to embedded controller.  
         [0180]     However, the key disadvantage of this approach would be mechanical limitations, since the PCI bridge has to be in close proximity to the host processor/core logic, and the kiosk design has to be based around the single integrated motherboard  
         [0181]     The advantage of adopting this approach may be minimal, as the communication with each device will become limited on the physical read/write limitation of each device. For instance, Sony MS is capable of a read data rate of 2 Mbytes/sec, so a direct PCI implementation does not provide any advantage. Even the fastest devices (CF and SM) are both only capable of a maximum data read of 16.6.Mbytes/sec in burst mode so the ideal channel bandwidth of around 10 Mbytes/sec (average) is required. This can be provided by 1394. The additional cost of the 1394 LLC and PHY is more than justified by the design flexibility this bestows. More importantly, a device based on 1394 is more easily integrated in a number of types of consumer facing kiosks where there may be some distance from the host system to the peripheral device.  
         [heading-0182]     1394—ATA Bridge  
         [0183]      FIG. 6  shows a IEEE 1394 Firewire implementation of the system.  
         [0184]     In this implementation A lower PCB  250  is connected to interface module  252  and host IEEE 1394 bus  50  by way of 1394—ATA bridge  254 .  
         [0185]     One of the difficulties of implementing the preferred device is developing the embedded 1394 protocol stack. This involves considerable low-level code and detailed knowledge of the 1394 bus standards and is generally regarded as a specialist area. One simple means of achieving a 1394 to ATA bridge (allowing all ATA devices to be controlled) is shown in  FIG. 6 . In this implementation, a single 1394-ATA bridge is used (e.g. Oxford semiconductor OX911) to interface the host 1394 bus to the ATA devices. Whilst in principle this appears to work and can be demonstrated to work, the practicalities of managing the devices preclude this as an option. For example, such devices generally use a higher level communications protocol, designated SBP2 (Serial Bus Protocol 2). This is implemented on Windows 2000 and is used specifically from removable media devices, normally based on 1394 physical bus. Windows 2000, which is the preferred kiosk operating system, will occasionally hang if the device is removed during a cycle or at any time. This is unacceptable in the case of a public access kiosk.  
         [0186]     Other options are Host IDE Interface, SCSI and LVDS  
         [heading-0187]     Software Architecture  
         [0188]      FIGS. 7 and 8  show details of the software systems, which are provided on both the host and client (embedded) side.  
         [0189]      FIG. 7  shows the software component diagram, highlighting the functional elements of the host and client. The top level requirement is to make any of the removable storage devices visible to the application layer. This may be in the form of either a custom visual C++ application or alternatively web based html/xml/Java application running within a browser context.  
         [heading-0190]     1394 Device Driver Stack  
         [0191]      FIG. 8  is a diagram of data communications driver stack for transparently interfacing digital storage device to a host system.  
         [0192]     The ideal situation is to make the device visible through the device manager and provide a driver stack capable of interfacing to the file manager of the operating system.  FIG. 8  shows the way this can be achieved on both the host and the client. This approach uses a generic transport protocol, termed SBP-2 (serial Bus Protocol) designed specifically for 1394 command and data transport. On the host side, this is shown as layer  4 . The SBP2 protocol stack ( 4 ), communicates with 1394 protocol stack ( 5 ) to relay commands and data down to the 1394 controller. This diagram is simplified and, depending on the host O/S, there will be several intermediate layers within the driver stack. Nevertheless, the basic elements of the communications stack are illustrated correctly.  
         [0193]     The embedded driver stack essentially mirrors that within the host. Thus, layers  4 - 9  provide a command and data transport mechanism which uses the physical 1394 serial bus. Above this layer, a storage class driver ( 3 ) delivers the device level commands to the stack. The most appropriate storage class to use is a SCSI based driver since all of the commands required are contained within the SCSI command set. The class driver then provides the link to the file management system ( 2 ) which can be based on a number of standard models, e.g. NTFS, DOS etc.  
         [0194]     The device driver stack constructed in this way is therefore a block level stack i.e. levels  4 - 9  simply move/replicate commands and data by blocks across the 1394 bus and driver stack. Architecturally, this has advantages on both the client and host sides. On the client side, the control layer ( 10 ) is simply designed as if it were a SCSI device interface, receiving SCSI commands and executing them, such as data block read. On the host side, all components can be standard operating system components. One of the key requirements to construct this driver stack, is to provide full O/S plug and play (PnP) capability, so that when the physical device is plugged into the 1394 port, that the appropriate driver stack is enabled.  
         [0195]     An important aspect of this design is the use of the OHCI (Open Host Controller Interface) PCI controllers for the 1394 link. This provides DMA capabilities not available on FIFO based controllers and gives major speed benefits on the embedded side.  
         [0196]     Below the control layer in the embedded system, 3 of the devices (CF, SM and PCMCIA memory cards) will use a PCI based PCMCIA controller with the appropriate card and socket services stack ( 14 ). In this instance, the control layer simply translates the SCSI commands from the SBP2 layer onto the appropriate ATA commands to be executed by the PCMCIA driver ( 14 ). Since SCSI and ATA are very similar in structure, the resultant control layer is significantly simplified from the approach.  
         [0197]     Both SD/MMC and Sony memory Stick require custom drivers to communicate commands and data over the serial bus to each device. To maintain consistency on the control layer interface, drivers  12  and  13  would be designed to interpret the same ATA command set as all other devices routed through the PCMCIA controller ( 14 ).  
         [heading-0198]     GPIO Control  
         [0199]     Control of the low level logic devices including the LED&#39;s, solenoids and card detects can be accomplished through the serial control channel shown on Figure ( 5 ). Commands, such as turning on an LED, can be executed from the application utilizing a sockets-based command API. This block provides a hardware abstraction layer, buffering the application from the physical device drivers, presenting a simple string based message command syntax to the application developer. The block may comprise a buffer for storing a block-level or file-level representation of the device. This block uses standard “sockets” interfaces to establish communication between the application and custom device drivers.  
         [0200]     It would be possible in alternative situations to embedded the hardware control signaling in the same logical channel as one of the drives, for example using spare commands in the IDE command set. The separation of the hardware control protocols from the media read/write channels simplifies greatly the implementation of the multi-medium interface unit and the application software also.  
         [heading-0201]     Boot Loader and Debug  
         [0202]     The serial link between the host and the client systems also provide a means of downloading firmware revisions from the host. To enable this, the embedded system will include some form of non-volatile boot ROM to provide the basic utilities necessary to communicate with the host and receive new application firmware.  
         [0203]     In addition, the serial channel will simplify the interfacing to the end application, as all of the peripheral devices used in the kiosk are controlled via the socket device driver. The high bandwidth data channel is used for data only and the serial link can therefore provide low level controls and diagnostics to overcome any problem occurring in the complex  1394  device driver stack.  
         [heading-0204]     Mechanical Details  
         [0205]     As explained above, these are presented in a separate patent application.  
       CONCLUSION  
       [0206]     The apparatus and methods described enable the provision of a multi-interface terminal for public access applications in digital photography, digital audio and other applications. In addition to simple uploading and downloading of data, applications may provide for user data to be copied across from one storage device to another. The devices may be of different types, inserted simultaneously, or they may be inserted serially, with buffering provided either within the interface module or the host computer system.  
         [0207]     The skilled person will appreciate from the foregoing the benefits and advantages of the invention in the various aspects highlighted in the introduction, and also in other aspects not specifically highlighted. A range of modifications and variations have been presented herein, and these and other modifications and variations may be contemplated without departing from the spirit and scope of the invention.