Difference between revisions of "Hardware Support/ru"

From KolibriOS wiki
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), эти драйвера находятся в специальной системной директории (/rd/1/drivers/).
+
* Драйвер, динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm). Эти драйвера находятся в специальной системной директории (/rd/1/drivers/).
  
 
== Состав аппаратного обеспечения ПК ==
 
== Состав аппаратного обеспечения ПК ==
  
Итак из чего же состоит компьютер? Большинство пользователей, вспомнив уроки информатики, тут же назовут: системный блок, монитор, клавиатура, мышь. Многие подумав добавят HDD, CD/DVD, Floppy приводы, видео, аудио и сетевую карты. А если заглянуть поглубже?
+
В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера центральный процессор (ЦПУ) и оперативная память (ОЗУ — оперативное запоминающее устроство). Наибольший интерес для программиста представляет Южный Мост чип, обеспечивающий контроль над большинством оборудования.  
 
+
Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОЗУ (см. [http://ru.wikipedia.org/wiki/Северный_интерфейс Северный и Южный интерфейс]), но в этой статье он не будет подробно расписан ввиду его небольшой функциональности с точки зрения программиста.
В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера - центральный процессор (ЦПУ) и оперативная память (ОП). Программиста же решившего написать драйвер для поддержки какого-то устройства в KolibriOS, больше всего заинтересует Южный Мост, чип где сходятся большинство ниточек, контролирующих оборудование.  
 
Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОП, но его мы пока подробно рассматривать не будем ввиду его небольшой функциональности с точки зрения программиста.
 
  
 
== Компоненты южного моста ==
 
== Компоненты южного моста ==
  
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный ''драйвер'' - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство.  
+
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа" каждому такому контроллеру требуется уникальный ''драйвер'' специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде и, самое главное, быстрый и надежный ввод/вывод потоков информации через данное устройство.  
  
 
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.-->
 
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.-->
 
Функционально южный мост включает в себя:
 
Функционально южный мост включает в себя:
* стандартный контроллер шины [[PCI/ru|PCI]];
+
* стандартный контроллер шины [http://ru.wikipedia.org/wiki/PCI PCI];
* контроллер шины [[PCI_Express/ru|PCI Express]];
+
* контроллер шины [http://ru.wikipedia.org/wiki/PCI_Express PCI Express];
* шина [[ISA/ru|ISA]], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста.
+
* шина [http://ru.wikipedia.org/wiki/ISA ISA], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста;
* контроллер шины SMBus или [[I2C]] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);
+
* контроллер шины [http://ru.wikipedia.org/wiki/SMBus SMBus] или [http://ru.wikipedia.org/wiki/I2C I2C] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);
* [[DMA/ru|DMA]] контроллер с поддержкой древних [[ISA/ru|ISA]] и [[LPC/ru|LPC]]-протоколов прямого доступа к [[RAM/ru|оперативной памяти]] без участия ЦПУ;
+
* [http://ru.wikipedia.org/wiki/DMA DMA] контроллер с поддержкой древних ISA и [http://ru.wikipedia.org/wiki/LPC LPC]-протоколов прямого доступа к [http://ru.wikipedia.org/wiki/Оперативная_память оперативной памяти] без участия ЦПУ;
* контроллеры прерываний: старый [[PIC/ru|PIC]] и "продвинутый" [[APIC/ru|APIC]];
+
* контроллеры прерываний: старый [http://ru.wikipedia.org/wiki/PIC PIC] и "продвинутый" [http://ru.wikipedia.org/wiki/APIC APIC];
* [[ATA/ru|ATA]] (IDE) и [[SATA/ru|SATA]] контроллеры;
+
* [http://ru.wikipedia.org/wiki/ATA ATA] (IDE) и [http://ru.wikipedia.org/wiki/SATA SATA] контроллеры;
* контроллер шины LPC для передачи данных и управления [[SIO/ru|SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS/ru|BIOS]] ROM ([[FlashROM/ru|флэш]]);
+
* контроллер шины LPC для передачи данных и управления устройствами ввода/вывода (клавиатура, мышь, [http://ru.wikipedia.org/wiki/параллельный_порт параллельный порт], [http://ru.wikipedia.org/wiki/последовательный_порт последовательный порт], [http://ru.wikipedia.org/wiki/инфракрасный_порт инфракрасный порт] и [http://ru.wikipedia.org/wiki/Дискета флоппи-контроллер]) и BIOS ROM;
* [[RTC/ru|часы реального времени]] (Real Time Clock);
+
* [http://ru.wikipedia.org/wiki/RTC часы реального времени] (Real Time Clock);
* управление питанием (Power management ([[APM/ru|APM]] и [[ACPI/ru|ACPI]]) позволяющие переводить компьютер в «спящий режим» или выключать его;
+
* управление питанием (Power management ([http://ru.wikipedia.org/wiki/Advanced_Power_Management APM] и [http://ru.wikipedia.org/wiki/ACPI ACPI]) позволяющие переводить компьютер в «спящий режим» или выключать его);
* энергонезависимую память [[BIOS/ru|BIOS]] ([[CMOS/ru|CMOS]]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;
+
* энергонезависимую память [http://ru.wikipedia.org/wiki/BIOS BIOS] ([http://ru.wikipedia.org/wiki/CMOS CMOS]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;
* звуковой контроллер (обычно [[AC97/ru|AC97]] или [[HDA/ru|Intel HDA]]).
+
* звуковой контроллер (обычно [http://ru.wikipedia.org/wiki/AC'97 AC'97] или [http://ru.wikipedia.org/wiki/Intel_High_Definition_Audio Intel HDA]).
  
Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры [[USB/ru|USB]], [[FireWire/ru|FireWire]] и [[Audio/ru|аудио-кодек]].
+
Опционально южный мост также может включать в себя контроллер [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/Аудиокодек аудиокодек].
  
Некоторые южные мосты также включают поддержку [[Keyboard/ru|клавиатуры]], [[Mouse/ru|мыши]] и [[Serial/ru|последовательных портов]]. Однако, на многих системных платах эти устройства подключены через другой чип — [[Super_IO/ru|Super I/O]] (контроллер ввода-вывода).
+
Некоторые южные мосты также включают поддержку клавиатуры, мыши и последовательных портов. Однако, на многих системных платах эти устройства подключены через другой чип — [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/ru|BIOS]], определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''.  
+
Во-вторых, существует ряд спецификаций базовой системы ввода-вывода 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]] взаимодействие со всеми устройствами реализуется через PCIe-механизм, старый PCI-сервис эмулируется для совместимости.
+
* В экспериментальном ядре [[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
+
| Работа с UHCI/OHCI/EHCI. В настоящее время поддерживает клавиатуру, мышь, запоминающие устройства (mass storage). (До этого были только драйвера для UHCI, USB клавиатуры и мыши.)
 
|-
 
|-
 
| FireWire
 
| FireWire
Line 107: Line 105:
 
| HyperTransport
 
| HyperTransport
 
| Официальным ядром не поддерживается
 
| Официальным ядром не поддерживается
| ограниченная поддержка в [[Kolibri-A|EmbeddedKOS/ru]]
+
| ограниченная поддержка в [[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="3" | IDE (ATA)
+
|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="6" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего).
+
|rowspan="7" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего).
 
|-
 
|-
 
| HDD
 
| HDD
| Не поддерживается
+
| Поддерживается ядром чтение и запись в режиме IDE и SATA. Драйвер AHCI (SATA) реализован в kernel/blkdev/ahci.inc
 +
|-
 +
|rowspan="6" | USB
 +
| FDD
 +
| ?
 
|-
 
|-
|rowspan="4" | USB
 
 
| 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="22" | AC97
+
|rowspan="23" | AC97
 
|rowspan="7" | Intel Corporation
 
|rowspan="7" | Intel Corporation
 
| ICH0
 
| ICH0