Realtek RTL8139
Realtek RTL8139 — семейство популярных интегрированных контроллеров сетевого интерфейса Fast Ethernet, разрабатывавшееся компанией Realtek в 1997-2005 годах[1][2]. Контроллеры реализуют в одной микросхеме уровни MAC, PHY и трансивера, имеют интерфейс PCI[3] и поддерживают работу на скоростях 10 или 100 Мбит/с по неэкранированной витой паре[2].
В состав семейства входило шесть моделей контроллеров: RTL8139, RTL8139A, RTL8139B, RTL8139C, RTL8139C+, RTL8139D. Они применялись для создания сетевых карт с интерфейсом PCI для ПК, сетевых модулей с интерфейсом mini-PCI и интегрированных сетевых карт ноутбуков и материнских плат.
Благодаря доступности и невысокой цене как самих контроллеров семейства RTL8139[4], так и карт на его основе (6-13 долларов на 2002 год[5]), а также простого программно-аппаратного интерфейса[6] карты на базе RTL8139 были широко распространены, и в множестве операционных систем была поддержана работа с этим контроллером. Ряд систем виртуализации эмулируют именно этот контроллер[7][8][9].
По оценкам самой компании, в начале 2000-х годов Realtek занимал около 65% рынка контроллеров Ethernet[10].
Модели контроллера: 8139/8139A/8139B/8139C/8139D
| Вариант | Год | Напряжение [Вольт] | Корпус | Особенности | Примечания |
|---|---|---|---|---|---|
| RTL8139 | 1997 | 5 | Первая версия одночипового контроллера | ||
| RTL8139A[11] | 1998 | 5 | 128 pins PQFP | Добавлена поддержка Wake-on-LAN | Расширен набор внутренних регистров контроллера |
| RTL8139B[12] | 1999 | 5 или 3.3 (BL) | 128 pin QFP (B) или LQFP (BL) | Единый источник тактовой частоты | Вместо OSC генератора начал применяться кварцевый |
| RTL8139C[13] | 2000 | 3.3 | 128 pin QFP (C) или LQFP (CL) | Wake-on-LAN по шине PCI | Расширения ACPI для шины PCI версии 2.2; исправлено терминирование выводов[14] |
| RTL8139C+[15] | 2001 | 3.3 | 128 pin QFP (C+) или LQFP (CL+) | Реализованы требования NDIS5+ | Добавлен режим C+ с дескипторным управлением буферов, offload расчёта контрольных сумм TCP, UDP, IP, |
| RTL8139D[16] | 2002 | 2.5 или 3.3 | 100 pin QFP (D) или LQFP (DL) | Wake-on-LAN по шине PCI | Техпроцесс 0.25 мкм CMOS, поддержка BootROM сетевой загрузки до 128 КБ |
Технические характеристики 8139D
- Корпус пластмассовый, типа PQFP (100 выводов, с шагом 0,65 мм) или LQFP (100 выводов, шаг выводов 0,50 мм)
- Скорость сетевого интерфейса 10 или 100 Мбит/с, с поддержкой автосогласования
- Системный интерфейс PCI 32 бита
- Соответствует версии PCI 2.2
- Частота шины PCI 16,75…40 МГц
- Поддержка стандарта ACPI и управления питанием
- Способность функционировать как ведущее устройство (PCI Bus Master)
- Соответствует стандартам PC99 и PC2001
- Наличие функции Wake-on-LAN
- Размер раздельных буферов приёма и передачи 2 Кбайт
- Данные конфигурации сохраняются во внешнем ППЗУ типа 93C46 (объёмом 1 Кбит, с организацией 64x16)
- Наличие выводов для управления светодиодными индикаторами сетевой активности
- Поддержка загрузки по сети (Boot ROM, объём до 128 Кбайт)
- Возможность работы в полудуплексном и полнодуплексном режимах, с поддержкой управления потоком в полнодуплексном режиме (IEEE 802.3x)
- Наличие режима пониженного энергопотребления
- Тактовая частота внешнего генератора — 25 МГц
- Напряжение источника питания 3,3 В (для некоторых моделей)); линий ввода-вывода — 5 В; потребляемый ток до 330 мА
- Рабочий диапазон температур 0..70°С
- Изготовлена по технологии КМОП 0,25 мкм
Драйверы
Из-за неполноты документации и наличия лишь проприетарных (бинарных) драйверов, начальная реализация поддержки RTL8139 для операционных систем с открытым исходным кодом требовала значительных усилий. В частности, один из вариантов драйвера для Linux разрабатывался около 4 лет при участии 18 разработчиков[17]. Первый драйвер разрабатывался в 1997—1999 годах Donald Becker[18]. Многие драйверы поддерживали работу с упрощенной более ранней и менее производительной моделью контроллера — RTL8129[19][20].
Для передачи данных в сеть используется 4 дескриптора TSAD, размещенных по фиксированным смещениям, 4 статусных регистра TSD и 2 КБ FIFO буфер данных. Принимаемые из сети пакеты сначала помещаются в приемный FIFO-буфер, затем пересылаются в кольцевой буфер, непрерывный в физической памяти компьютера. Регистры CAPR и CBP используются для отслеживания позиций в этом буфере, статус принятого пакета и его длина (packet header) записывается перед данными пакета после его получения[21][22].
Награды
См. также
Примечания
Ссылки
- RTL8139D (англ.) Общее описание
- RTL8139(A/B) Programming guide: (V0.1) (недоступная ссылка)
- Структурная схема контроллера и драйвера, стр 57, 60
- Структурная схема контроллера
- RTL8139 на wiki-портале osdev.org