10-21-2013
Leaving aside the performance problems, there's a bigger fundamental difference between the two. There's things PCI can do and USB just can't. DMA as mentioned above is one of them.
This is because the PCI bus is an extension of the CPU's own hardwired bus, essentially. It has most of the same features as the CPU's own bus, and communication is extremely direct, to the point all hardware on PCI as well as system memory in general ends up inhabiting the same memory map. (More or less. It's gotten more complicated with each revision, but once configured, still handles itself in a manner like this.) Use one address and you're talking to system memory. Use another address and you're talking to video RAM. Use another address and you're talking to your network card's boot ROM. And such.
This turns out to be vital for things your computer absolutely needs to boot, like video. They can include little bits of machine code on the cards which give the BIOS a very basic ability to use them. The BIOS doesn't have to load a driver to see it, the code just kind of appears in memory where it needs to be thanks to the memory map. This is also why mac's require different kinds of video cards than PC's -- different kind of BIOS.
USB is extremely in-direct; it takes tons of messages back and forth to do anything, and wasn't designed as a CPU bus anyway. Things PCI does with one pulse would have to be emulated in software. Rigidly standard things like USB keyboards are handled in BIOS these days, USB media as well (though often badly). But you couldn't replace a PCI video card with a USB one and have your computer boot. The BIOS by nature is too dumb to load a driver, and sees no video as a result, and cannot boot.
Last edited by Corona688; 10-21-2013 at 05:42 PM..
9 More Discussions You Might Find Interesting
1. BSD
Hi!
I just wanted to know what network cards are supported in FreeBSD. I have looked at the list of supported cards but I can't find any of them in the stores. Is the list not updated, I would really preciate info about where (in EU, Sweden) I can buy them.
/Peter (2 Replies)
Discussion started by: Barfly.se
2 Replies
2. Solaris
How do I get the PCI ID for my Realtek adapter?
It's a Solaris x86 installation. (5 Replies)
Discussion started by: kuultak
5 Replies
3. UNIX for Dummies Questions & Answers
Hi,
im having a problem installing my pci wireless card. Im using knoppix, but my problem is with the mobo i think. im using an older laptop, toshiba satellite 2540 and when i plug in the card i get lights on sometimes. this means its getting power right. so then to install the card into the... (0 Replies)
Discussion started by: jestra
0 Replies
4. UNIX for Dummies Questions & Answers
platform: sunblade 100
Solaris 10.
When running a test-all from the ok prompt on this new (to me) system, it locks up at pci@1f,0/usb/c,3. It's been there for about 25 minutes.
I do have a usb keyboard and mouse attached, both are known good. There is no flash stick/ thumb drive... (0 Replies)
Discussion started by: montana77
0 Replies
5. Linux
I installed PCI Card HP SC44Ge - SAS1068E
on my linux CentOS 5.4
is there a way to find out if the PCI is properly installed and recognized by linux.
lspci is enough?
just to add that PCI card is connected to a tape...
also how can I find out driver and firmware version?
thanks a... (1 Reply)
Discussion started by: karlochacon
1 Replies
6. UNIX for Dummies Questions & Answers
Is there an easy way to setup a cross-over cable (USB-USB) between a linux box and a windows PC? My 2 machines are next to each other but I really do not want to keep transfering my files using my USB drive.
Thanks! (4 Replies)
Discussion started by: Xterra
4 Replies
7. Programming
For a project that I'm working on I want to write a low level PCI driver, but I can't seem to find any free/cheap documentation on PCI firmware specifications. I came across the "pci firmware specification 3.0" manual but this costs USD $1000 :eek:. I am not developing a commercial product... (13 Replies)
Discussion started by: neur0n
13 Replies
8. Solaris
How do I find any available PCI slots on a v440?
When I run prtconf, I get the following output? But I am not able to make out whether all the PCI slots are used.
================================= IO Devices =================================
Bus Freq
Brd Type MHz Slot ... (1 Reply)
Discussion started by: jtamminen
1 Replies
9. Slackware
Need to free up a usb port for webcam. What does xorg.conf look like in order to work if I move mouse to PCI port via a converter plug? (1 Reply)
Discussion started by: slak0
1 Replies
VGA(4) BSD Kernel Interfaces Manual VGA(4)
NAME
vga -- generic video card interface
SYNOPSIS
options VESA
options VESA_DEBUG=N
options VGA_ALT_SEQACCESS
options VGA_NO_FONT_LOADING
options VGA_NO_MODE_CHANGE
options VGA_SLOW_IOACCESS
options VGA_WIDTH90
device vga
In /boot/device.hints:
hint.vga.0.at="isa"
DESCRIPTION
The vga driver is a generic video card driver which provides access to video cards. This driver is required for the console driver
syscons(4). The console driver will call the vga driver to manipulate video hardware (changing video modes, loading font, etc).
The vga driver supports the standard video cards: MDA, CGA, EGA and VGA. In addition, the driver can utilize VESA BIOS extensions if the
video card supports them. VESA support can either be statically included in the kernel or can be loaded as a separate module.
In order to statically link the VESA support to the kernel, the VESA option (see below) must be defined in the kernel configuration file.
The vesa module can be dynamically loaded into the kernel using kldload(8).
DRIVER CONFIGURATION
Kernel Configuration Options
The following kernel configuration options (see config(8)) can be used to control the vga driver. These options provide compatibility with
certain VGA cards.
VGA_ALT_SEQACCESS
You may want to try this option if the mouse pointer is not drawn correctly or the font does not seem to be loaded properly on the VGA
card. However, it may cause flicker on some systems.
VGA_SLOW_IOACCESS
Older VGA cards may require this option for proper operation. It makes the driver perform byte-wide I/O to VGA registers and slow
down a little.
VGA_WIDTH90
This option enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These modes are not always supported by the video card and
the display. It is highly likely that LCD display cannot work with these modes.
The following options add optional features to the driver.
VESA Add VESA BIOS support to the driver. If the VGA card has the VESA BIOS extension 1.2 or later, this option will utilize the VESA BIOS
service to switch to high resolution modes.
VESA_DEBUG=N
Set the VESA support debug level to N. The default value is zero, which suppresses all debugging output.
The following options will remove some features from the vga driver and save kernel memory.
VGA_NO_FONT_LOADING
The vga driver can load software font to EGA and VGA cards. This option removes this feature. Note that if you use this option and
still wish to use the mouse on the console then you must also use the SC_ALT_MOUSE_IMAGE option. See syscons(4).
VGA_NO_MODE_CHANGE
This option prevents the driver from changing video modes.
EXAMPLES
Your kernel configuration should normally have:
device vga
And you need the following line in /boot/device.hints.
hint.vga.0.at="isa"
The following lines should be included in the kernel configuration file in order to enable the VESA BIOS Extension support.
options VESA
device vga
If you do not want VESA support included in the kernel, but want to use occasionally, do not add the VESA option. And load the vesa module
as desired:
kldload vesa
SEE ALSO
vgl(3), syscons(4), config(8), kldload(8), kldunload(8)
STANDARDS
Video Electronics Standards Association, VESA BIOS Extension (VBE).
HISTORY
The vga driver first appeared in FreeBSD 3.1.
AUTHORS
The vga driver was written by Soren Schmidt <sos@FreeBSD.org> and Kazutaka Yokota <yokota@FreeBSD.org>. This manual page was written by
Kazutaka Yokota.
BSD
June 30, 1999 BSD