01 Interfaces
Hardware Interfaces
In order to develop a project for the devices connected to the PC, we should have enough knowledge of computer hardware interfaces. The hardware interfaces in different generations are progressively changing. A Pentium PC has the legacy interfaces including IDE, PCI, AGP, ISA, PCMCIA, RS232, Parallel port, and VGA (maybe you do not think it can be a communication interface, but it has an I2C bus inside.). The latest dual core PC has more advanced interfaces, including and PCIe, PC card Express, IEEE1394, IrDA, Bluetooth, WiFi, USB ports, 100MHz Ethernet and DVI/HDMI video port. The popular interfaces which were very popular in old PCs are fading out. For example, the new PCs are only equipped with USB ports and PC Card Express to replace the parallel port, serial port and PCMCIA port.
Some of the interfaces are reserved for specific purposes. For example, VGA/DVI/HDMI has an I2C bus inside, which is used as DDC/EDID (Display Data Channel /Extended Display Identification Data Standard) for reading video formats supported by the display. But that feature can be used for a general purpose I2C interface. I build a programmer to program the EDID in the monitor, but the I2C bus inside the VGA port can not be used for other general purpose I2C communication.
Among these hardware interfaces, the most popular ones are serial communication port, parallel port, USB port, networking adapters of Ethernet, WiFi. Most of the operative systems offer application programming interfaces for serial communication. The other hardware interfaces can hardly accessible via port register, but only via specific driver or protocols. We must understand the corresponding programming interfaces for related hardware.
Software Programming Interfaces
No matter which hardware interface, it makes sense to offer programming interfaces for high level languages. The programming interfaces are device dependent and OS dependent. We have to study them case by case.
In DOS, most of the registers are open for application software. UNIX offers device file for user software to access some ports, and all kinds of libraries (static and dynamic), and all source code is open for everyone. Different Windows platforms have different technical requirement, in general, the software components are available for programming, including ActiveX control, DLL for Visual BASIC, C++, Delphi and other languages.
Additionally, some complex ports can not be programmed directly in latest operation systems, but via protocol interfaces. These interfaces include IrDA, Ethernet, WiFi, and Bluetooth.
Software part is much complicated than hardware part. There are many different terminologies used in programming. And software experts should know them already.
After my background research in the Internet, I found the Please, stumble & review! Thanks!following rules:
- Basically most of the programming languages offers basic hardware programming capability, such as serial communication.
- Linux and DOS offer more capacities because of OS' nature, hardware direct access and device files.
- Any programming languages should have capability to access IP interfaces via high level protocols or dedicated APIs.
- Most of the high level programming languages in Windows NT/2000/XP/Vista can not access hardware directly, but via special software components in the format of DLL. These DLLs offers and limits the hardware access for application software.
- Linux application can access Windows DLL locally. (If you have experience of using famous Linux Mplayer, you should understand my words. Mplayer uses a lot of commercial codec DLL available in Windows platform for playback WMV and Real Video. The developers do not hack them with reverse engineering, but direct utilize them.)
- Since most of the applications are high level languages, it is easy to port applications between different platforms.
References
An educational encyclopedia for Electronics. This site is a good start point for understanding hardware.
Hardware Interface/ Connection Speeds
Probably the key impact to overall system speed in hardware is the speed of the various interfaces or connections. These often times are directly connected with the nature of the particular component.
PC Hardware Interfaces: A Developer's Reference from Amazon bookshelf. Focusing on the latest research on hardware interfaces used in modern information technology, this reference covers universal external interfaces, peripheral device interfaces, external memory interfaces, expansion buses, wireless interfaces, network interfaces, and auxiliary serial interfaces. Specific technologies covered include LPT, COM, USB, FireWire, SCSI, mouse, monitor, printer, audio and video interfaces, Serial ATA and flash cards, ISA, PCI, EISA, PC/104, AGP, LPC, PCMCIA, CardBus, Bluetooth, SPI, MII, SMI, JTAG, and Ethernet. Also included is information on signal line definitions and signal arrangement on I/O connectors, time diagrams, adapters (ATA and NIC), controllers (DMA, PCI IDE, and FDC AT), interrupts, and multifunction cards.
Computer Hardware in Wikipedia.
Windows API in Wikipedia.
PC connections. It is a good presentation with enclosed pictures, so everyone can identify the connection very quickly.



