What is PCMCIA? 1.0 PCMCIA General Introduction The Personal Computer Memory Card International Association (PCMCIA) was formed with the goal of promoting interchangeability of Integrate Circuit Cards (IC Cards) among a variety of computer and other electronic products. Both data storage ("Memory") and peripheral expansion ("I/O") card types are defined by this standard. Many implementations will permit either type of 68-pin card to operate in the same slot. This standard governs a 68-pin interchange or I/O type card only. Cards compliant with this standard are referred to as PC Cards. PCMCIA serves both as a technical standards setting body and a trade association. To address these areas, the association operates both Technical and Marketing committees. The Technical Committee is concerned with the standard itself, and the Marketing Committee is primarily concerned with market development and promotional activities. It is the stated charter of PCMCIA to be market driven in its development of technical standards. 1.1 Standardization Goals of PCMCIA The primary goal of this standard is to enable system and card manufacturers to build products operable by end-user's unfamiliar with the underlying technology. In order to satisfy this goal, the specific requirements (Electrical, Physical and Software) of numerous memory technologies, plug-in peripheral devices and the needs of various card applications had to be satisfied. The standard was initially focused on IBM PC-compatible systems. A major goal of the standard, however, is to allow a variety of computer types and non-computer consumer products to freely interchange these cards. This standard is also applicable to embedded systems to the extent that the embedded system needs to be able to transfer its data back and forth to a host computer. 1.2 Card Physical (Card Types and Card Dimensions) There are three types of PC Cards (Type I, Type II, and Type III). Type I cards confine mostly to memory enhancements, such as memory cards. Type II cards include memory enhancements and I/O functions, such as modem and LAN cards. Type III cards confine mostly magnetic storage enhancements, such as hard disk cards. The three PC Card types differ only in thickness. The PC Card dimensions for the Type I, Type II, and Type III are shown below. PC Card Dimensions ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ LENGTH ³ WIDTH ³ THICKNESS ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ 3.370 ³ 2.126 ³ .130 ³ ³ TYPE I ³ (85.6) ³ (54.0) ³ (3.30) ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ 3.370 ³ 2.126 ³ .196 ³ ³ TYPE II ³ (85.6) ³ (54.0) ³ (5.0) ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ 3.370 ³ 2.126 ³ .404 ³ ³ TYPE II ³ (85.6) ³ (54.0) ³ (10.3) ³ ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Millimeters are shown in parentheses (). A mismated PC Card and connector shell withstand a minimum static load of 13 pounds (6 kg) without damage to the PC Card or connector. PC Cards must be opaque (non see-through). 2.0 PCMCIA Architecture Safely using PC Card and sockets in a non-conflicting manner involves the interaction of several hardware and software architectural layers. A simple "PCMCIA Architecture Diagram" is shown below. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Application ÃÄ¿ ÀÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÃÄ¿ ÀÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ þ þ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ -------------- ³ ³ þ ³ | Resource | ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ | Management | ³ þÄ¿ ³ ³ Operating System ³ ³ | Table | ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄþ ³ -------------- ³ ³ ³ þ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ Card Services ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ³ þ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ Memory ³ ³ ³ ³ ³ ³ ³ Technology ³ þÄÙ ³ ³ ³ ³ ³ Driver ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ þ ³ ³ þ þ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ þÄÙ ³ ³ ³ ³ ³ Client ÃÄ¿ ³ ³ ÀÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÃÄÄ¿ ³ ³ ³ ³ ÀÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ þ þ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ þ ³ ³ ³ ³ ³ ³ Socket Services ÃÄÄ¿ ³ ÀÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ³ þÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ³ ³ ³ ³ þ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ÚÄÅÄÄÄÄÅÄÄ¿ Adapter ÚÄÄÄÄÄÅÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÙ þ þ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ þ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³ PC ³ ³ PC ³ ³ Card ³ ³ Card ³ ÀÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ 2.1 Hardware Layer (PC Cards, Sockets, and Adapters) Cards compliant with the PCMCIA PC Card Standard are referred to as PC Cards. All types (memory, I/O, and storage) of these 68-pin PC Cards have the same physical characteristics and compatible electrical characteristics. PC Cards are plugged into sockets on a host system. Host systems may have one or more sockets and these sockets may be grouped together on one or more adapters. An example of a host system with more than one adapter would be one where an adapter was build into the motherboard and another plugged into the system's expansion bus (ISA, EISA or Micro Channel). Adapter usually generate maskable hardware interrupts when status changes occur in sockets or on PC Cards. Status changes include: * card inserted or removed, * battery low or dead, * ejection or insertion request, * card locked or unlocked in socket, and * and a busy to ready transition. 2.2 Socket Services Immediately above the hardware layer the Socket Services software provides a standardized interface to manipulate PC Cards, sockets, and adapters. As noted above, host systems may have more than one PC Card adapter present. Each adapter may have its own Socket Services implementation. All instances of Socket Services are intended to support a single instance of Card Services. Card Services registers to receive notification of status changes on PC Cards or in sockets. By making all accesses to adapters, sockets, and PC Cards through the Socket Services interface, higher-level software (including Card Services) is unaffected by changes in the hardware. Only a hardware-specific Socket Services implementation must be modified to accommodate any hardware changes. 2.3 Card Services Above the Socket Services software layer is the Card Services layer. Card Services coordinates access to PC Cards, sockets, and system resources among multiple clients. These clients be resident or transient device drivers, system utilities, or application programs. There is only one Card Services implementation in a host system.(Unlike Socket Services where there may be multiple implementation to accommodate multiple adapters). Cards services makes all assess to the hardware layer through the Socket Services software interface. The single Card Services implementation is intended to be the sole client of all Socket Services implementations present. All Socket Services status change reporting is routed to this single Card Services implementation. Card Services then notifies interested clients when status changes occur. To prevent conflicts with clients who are unaware of Card Services, direct access to all Socket Services functions is blocked by Card services. A method of bypassing the Card Services blockage is provided for software developers of specialized applications which must access Socket Services. Programs which bypass Card Services and make direct to Socket Services must insure such access is benign and does not interfere with Card Services usage of Socket Services, PC Cards, sockets, or adapters. 2.4 Memory Technology Drivers The PCMCIA standard supports a wide range of memory devices on PC Cards. While all PC Cards may be read as if they contained static-RAM devices, special programming algorithms may be required to write or erase PC Cards. Card Services hides the details of what is required to write or erase PC Cards from client device drivers through byte-oriented write and copy functions and a block-oriented erase function. Within Card Services, Memory Technology Drivers (MTD) implement the specific programming algorithms required to access memory devices. These drivers may be embedded within Card Services or may register with a Card Services implementation at run-time. When PC Cards are installed, MTDs monitoring insertion events register with Card Services to support access to a PC Card through the Card Services read, write, copy, and erase functions. 2.5 Client Device Drivers Client device drivers refer to all users of Card Services. These may be device drivers, utility programs, or application programs. 3.0 PCMCIA Software Architecture The key elements of the PCMCIA software architecture are the "Socket Services" and the "Card Services". Socket Services comprise the hardware-dependent software that controls the physical PCMCIA slots (also called "sockets") controller hardware. Card Services are hardware-independent and are the software management interface that automatically allocates/release the system resources, such as memory and IRQ, once Socket Services detect that a PCMCIA card has been inserted/removed into/from a slot. 3.1 Socket Services Overview Socket Services is the lowest layer in a multi-layer architecture that manages resources on PCMCIA-compatible memory and I/O cards (collectively known as PC Cards). It is a software interface to the hardware used to manage PC Card sockets in a host computer. Socket Services provides a universal software interface to the hardware that controls sockets for PC Cards. It provides only the lowest level access to PC Cards. It masks the details of the hardware used to implement these sockets, allowing higher-level software to be developed which is able to control and utilize PC Cards without any knowledge of the actual hardware interface. 3.2 Card Services Overview Software layers above Socket Services provide additional capabilities. Immediately above Socket Services is Card Services which arbitrates the use of Socket Services resources. Card Services is responsible for taking requests from multiple processes and sharing the resources provided by Socket Services among these processes. Card Services has two goals. First, to support the ability of PCMCIA-aware device drivers, configuration utilities, and application programs (known as clients) to share PC Cards, sockets, and system resources. Second, to provide a centralized resource for the common functionality required by these clients. The Card services interface is structured in a client/server model. Application programs, device drivers, and utility programs are the clients requesting services. A Card Services implementation is the server providing the functions requested by the clients. Why use PCMCIA? What are the advantages? The computing devices are shifting to meet the following features/advantages: * Smaller * Lighter * Lower Power Consumption * More Powerful * High Capacity Removable Storage * Communications * Ruggedness * Ease of Use * Standards * Interoperability * Applications Compatibility * Flexibility/Choice * Longer Battery Life This trend results in the increase of portable computing devices such as laptop, notebook, sub-notebook, palmtop, pen-based, and PDS (Personal Digital Assistant)... etc., with PCMCIA slots which comply with the PCMCIA standard. Because of this trend, many traditional desktop PCs also support PCMCIA card drive as optional or even standard. PCMCIA is going to be a standard support for computing or even general electronic devices.