Difference between revisions of "Hardware Support/ru"
Jump to navigation
Jump to search
(26 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
− | KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами, | + | KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами. Более того, система предоставляет возможность прямого доступа к оборудованию прямо из пользовательского режима, т.е. присутствует возможность написать программу, которая сможет работать с оборудованием используя соответствующий системный сервис. Правда, этот подход лучше использовать исключительно в отладочных или исследовательских целях, а для "нормальной" поддержки оборудования всё-таки лучше писать драйвера. Также нужно понимать, что существуют два вида драйверов: |
− | * Драйвер являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc). | + | * Драйвер, являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc). |
− | * Драйвер динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm) | + | * Драйвер, динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm). Эти драйвера находятся в специальной системной директории (/rd/1/drivers/). |
== Состав аппаратного обеспечения ПК == | == Состав аппаратного обеспечения ПК == | ||
− | + | В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера — центральный процессор (ЦПУ) и оперативная память (ОЗУ — оперативное запоминающее устроство). Наибольший интерес для программиста представляет Южный Мост — чип, обеспечивающий контроль над большинством оборудования. | |
− | + | Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОЗУ (см. [http://ru.wikipedia.org/wiki/Северный_интерфейс Северный и Южный интерфейс]), но в этой статье он не будет подробно расписан ввиду его небольшой функциональности с точки зрения программиста. | |
− | В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера | ||
− | Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и | ||
== Компоненты южного моста == | == Компоненты южного моста == | ||
− | Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' | + | Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' — программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа" каждому такому контроллеру требуется уникальный ''драйвер'' — специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде и, самое главное, быстрый и надежный ввод/вывод потоков информации через данное устройство. |
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.--> | <!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.--> | ||
Функционально южный мост включает в себя: | Функционально южный мост включает в себя: | ||
− | * стандартный контроллер шины [ | + | * стандартный контроллер шины [http://ru.wikipedia.org/wiki/PCI PCI]; |
− | * контроллер шины [ | + | * контроллер шины [http://ru.wikipedia.org/wiki/PCI_Express PCI Express]; |
− | * шина [ | + | * шина [http://ru.wikipedia.org/wiki/ISA ISA], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста; |
− | * контроллер шины SMBus или [ | + | * контроллер шины [http://ru.wikipedia.org/wiki/SMBus SMBus] или [http://ru.wikipedia.org/wiki/I2C I2C] для связи с другими устройствами на материнской плате (например, для управления вентиляторами); |
− | * [ | + | * [http://ru.wikipedia.org/wiki/DMA DMA] контроллер с поддержкой древних ISA и [http://ru.wikipedia.org/wiki/LPC LPC]-протоколов прямого доступа к [http://ru.wikipedia.org/wiki/Оперативная_память оперативной памяти] без участия ЦПУ; |
− | * контроллеры прерываний: старый [ | + | * контроллеры прерываний: старый [http://ru.wikipedia.org/wiki/PIC PIC] и "продвинутый" [http://ru.wikipedia.org/wiki/APIC APIC]; |
− | * [ | + | * [http://ru.wikipedia.org/wiki/ATA ATA] (IDE) и [http://ru.wikipedia.org/wiki/SATA SATA] контроллеры; |
− | * контроллер шины LPC для передачи данных и управления | + | * контроллер шины LPC для передачи данных и управления устройствами ввода/вывода (клавиатура, мышь, [http://ru.wikipedia.org/wiki/параллельный_порт параллельный порт], [http://ru.wikipedia.org/wiki/последовательный_порт последовательный порт], [http://ru.wikipedia.org/wiki/инфракрасный_порт инфракрасный порт] и [http://ru.wikipedia.org/wiki/Дискета флоппи-контроллер]) и BIOS ROM; |
− | * [ | + | * [http://ru.wikipedia.org/wiki/RTC часы реального времени] (Real Time Clock); |
− | * управление питанием (Power management ([ | + | * управление питанием (Power management ([http://ru.wikipedia.org/wiki/Advanced_Power_Management APM] и [http://ru.wikipedia.org/wiki/ACPI ACPI]) позволяющие переводить компьютер в «спящий режим» или выключать его); |
− | * энергонезависимую память [ | + | * энергонезависимую память [http://ru.wikipedia.org/wiki/BIOS BIOS] ([http://ru.wikipedia.org/wiki/CMOS CMOS]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек; |
− | * звуковой контроллер (обычно [ | + | * звуковой контроллер (обычно [http://ru.wikipedia.org/wiki/AC'97 AC'97] или [http://ru.wikipedia.org/wiki/Intel_High_Definition_Audio Intel HDA]). |
− | Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры [ | + | Опционально южный мост также может включать в себя контроллер [http://ru.wikipedia.org/wiki/Ethernet Ethernet], [http://ru.wikipedia.org/wiki/RAID RAID]-контроллеры, контроллеры [http://ru.wikipedia.org/wiki/USB USB], [http://ru.wikipedia.org/wiki/IEEE_1394 IEEE 1394] и [http://ru.wikipedia.org/wiki/Аудиокодек аудиокодек]. |
− | Некоторые южные мосты также включают поддержку | + | Некоторые южные мосты также включают поддержку клавиатуры, мыши и последовательных портов. Однако, на многих системных платах эти устройства подключены через другой чип — [http://ru.wikipedia.org/wiki/Super_I/O Super I/O] (контроллер ввода-вывода). |
Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно? | Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно? | ||
Line 37: | Line 35: | ||
Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ. | Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ. | ||
− | Во-вторых, существует ряд спецификаций базовой системы ввода-вывода | + | Во-вторых, существует ряд спецификаций базовой системы ввода-вывода BIOS, определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''. |
Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием. | Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием. | ||
Line 67: | Line 65: | ||
* Настраивается BIOSом в режиме совместимости как обычная шина PCI. | * Настраивается BIOSом в режиме совместимости как обычная шина PCI. | ||
* Для AMD-процессоров реализовано автоопределение адреса расширенного конфигурационного пространства PCIe. Для других процессоров этот адрес можно установить вручную. В любом случае для активации сервиса требуется перекомпилировать ядро, включив в сборку ''kernel/bus/PCIe.inc'' и добавив в ядро (в восьмисотых-девятисотых строках ''kernel.asm'') вызов ''call pcie_ext_config''. | * Для AMD-процессоров реализовано автоопределение адреса расширенного конфигурационного пространства PCIe. Для других процессоров этот адрес можно установить вручную. В любом случае для активации сервиса требуется перекомпилировать ядро, включив в сборку ''kernel/bus/PCIe.inc'' и добавив в ядро (в восьмисотых-девятисотых строках ''kernel.asm'') вызов ''call pcie_ext_config''. | ||
− | * В экспериментальном ядре [[Kolibri-A | + | * В экспериментальном ядре [[EmbeddedKOS/ru|Kolibri-A]] взаимодействие со всеми устройствами реализуется через PCIe-механизм, старый PCI-сервис эмулируется для совместимости. |
|- | |- | ||
| PCI-X | | PCI-X | ||
Line 75: | Line 73: | ||
| AGP | | AGP | ||
| ограниченная поддержка | | ограниченная поддержка | ||
− | | см. видеодрайвер ATIKMS | + | | см. драйвер AGP, а также видеодрайвер ATIKMS |
|- | |- | ||
| ISA | | ISA | ||
| ? | | ? | ||
− | | | + | | Драйвером звука поддерживается Creative SB16 (см ниже), также система запускалась с видеокартой ISA Trident TVGA9000B. |
|- | |- | ||
| EISA | | EISA | ||
Line 98: | Line 96: | ||
|- | |- | ||
| USB | | USB | ||
− | | Поддерживается | + | | Поддерживается ядром и драйверами |
− | | | + | | Работа с UHCI/OHCI/EHCI. В настоящее время поддерживает клавиатуру, мышь, запоминающие устройства (mass storage). (До этого были только драйвера для UHCI, USB клавиатуры и мыши.) |
|- | |- | ||
| FireWire | | FireWire | ||
Line 107: | Line 105: | ||
| HyperTransport | | HyperTransport | ||
| Официальным ядром не поддерживается | | Официальным ядром не поддерживается | ||
− | | ограниченная поддержка в [[Kolibri-A | + | | ограниченная поддержка в [[EmbeddedKOS/ru|Kolibri-A]] |
|- | |- | ||
| InfiniBand | | InfiniBand | ||
Line 150: | Line 148: | ||
|- | |- | ||
| HDMI | | HDMI | ||
− | | | + | | ограниченная поддержка |
− | | | + | | см. видеодрайвера ATIKMS и i915 |
|} | |} | ||
Line 175: | Line 173: | ||
|- | |- | ||
| UHCI | | UHCI | ||
− | | Поддерживается драйвером | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| OHCI | | OHCI | ||
− | | | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| EHCI | | EHCI | ||
− | | | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| XHCI | | XHCI | ||
Line 194: | Line 192: | ||
! Примечания | ! Примечания | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4" | IDE (ATA) |
| FDD | | FDD | ||
| Поддерживается ядром ОС | | Поддерживается ядром ОС | ||
Line 203: | Line 201: | ||
| (см. /kernel/blkdev/cd_drv.inc) | | (см. /kernel/blkdev/cd_drv.inc) | ||
|- | |- | ||
− | | HDD | + | | HDD/SSD |
| Поддерживается ядром ОС | | Поддерживается ядром ОС | ||
| (см. /kernel/blkdev/hd_drv.inc) | | (см. /kernel/blkdev/hd_drv.inc) | ||
Line 209: | Line 207: | ||
|rowspan="2" | SATA | |rowspan="2" | SATA | ||
| CD/DVD | | CD/DVD | ||
− | | | + | | Поддерживается ядром чтение в режиме IDE (ATAPI в PIO режиме) (http://board.kolibrios.org/viewtopic.php?f=1&t=2343). |
− | |rowspan=" | + | |rowspan="7" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего). |
|- | |- | ||
| HDD | | HDD | ||
− | | | + | | Поддерживается ядром чтение и запись в режиме IDE и SATA. Драйвер AHCI (SATA) реализован в kernel/blkdev/ahci.inc |
+ | |- | ||
+ | |rowspan="6" | USB | ||
+ | | FDD | ||
+ | | ? | ||
|- | |- | ||
− | |||
| CD/DVD | | CD/DVD | ||
| Не поддерживается | | Не поддерживается | ||
|- | |- | ||
− | | SSD | + | | HDD/SSD |
− | | | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| FlashDrive | | FlashDrive | ||
− | | | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| FlashCard | | FlashCard | ||
− | | | + | | Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305) |
|- | |- | ||
| RAID | | RAID | ||
Line 276: | Line 277: | ||
! Примечание | ! Примечание | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="23" | AC97 |
|rowspan="7" | Intel Corporation | |rowspan="7" | Intel Corporation | ||
| ICH0 | | ICH0 | ||
− |