Difference between revisions of "Hardware Support/ru"

From KolibriOS wiki
Jump to navigation Jump to search
(New page)
 
Line 12: Line 12:
 
== Компоненты южного моста ==
 
== Компоненты южного моста ==
  
Большинство устройств представлены в Южном Мосту в качестве так называемых контроллеров. Немалая часть большинства драйверов посвящена инициализации, конфигурированию и дальнейшей работе с устройством с помощью этих контроллеров.  
+
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный ''драйвер'' - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство.  
  
 
<!-- 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]] (устаревший);
+
* стандартный контроллер шины [[PCI]];
 
* контроллер шины [[PCI Express]];
 
* контроллер шины [[PCI Express]];
* контроллер шины SMBus или [[I2C]];
+
* шина [[ISA]], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста.
* [[DMA]] контроллер;
+
* контроллер шины SMBus или [[I2C]] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);
* контроллер прерываний [[PIC]] и [[APIC]];
+
* [[DMA]] контроллер с поддержкой древних [[ISA]] и [[LPC]]-протоколов прямого доступ к [[Оперативная память|оперативной памяти]] без участия ЦПУ;
 +
* контроллеры прерываний: старый [[PIC]] и "продвинутый" [[APIC]];
 
* [[PATA]] (IDE) и [[SATA]] контроллеры;
 
* [[PATA]] (IDE) и [[SATA]] контроллеры;
* контроллер шины LPC;
+
* контроллер шины LPC для передачу данных и управление [[SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS]] ROM ([[Флэш-память|флэш]]);
 
* [[часы реального времени]] (Real Time Clock);
 
* [[часы реального времени]] (Real Time Clock);
* управление питанием (Power management (APM и ACPI);
+
* управление питанием (Power management (APM и ACPI) позволяющие переводить компьютер в «спящий режим» или выключать его;
* энергонезависимую память [[BIOS]] ([[CMOS]]);
+
* энергонезависимую память [[BIOS]] ([[CMOS]]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;
 
* звуковой контроллер (обычно AC97 или Intel HDA).
 
* звуковой контроллер (обычно AC97 или Intel HDA).
  
 
Опционально южный мост также может включать в себя контроллер [[Ethernet]], [[RAID]]-контроллеры, контроллеры [[USB]], контроллеры [[FireWire]] и аудио-кодек.
 
Опционально южный мост также может включать в себя контроллер [[Ethernet]], [[RAID]]-контроллеры, контроллеры [[USB]], контроллеры [[FireWire]] и аудио-кодек.
  
Реже южный мост включает в себя поддержку [[клавиатура|клавиатуры]], [[Компьютерная мышь|мыши]] и [[Последовательный порт|последовательных портов]], но обычно эти устройства подключаются с помощью другого устройства — [[Super I/O]] (контроллера ввода-вывода).
+
Некоторые южные мосты также включают поддержку [[клавиатура|клавиатуры]], [[Компьютерная мышь|мыши]] и [[Последовательный порт|последовательных портов]]. Однако, на большинстве системных плат эти устройства подключены через другой чип — [[Super I/O]] (контроллер ввода-вывода).
Поддержка шины PCI включает в себя традиционную спецификацию [[PCI]], но может также обеспечивать поддержку шины [[PCI-X]] и [[PCI Express]]. Хотя поддержка шины [[ISA]] используется достаточно редко, она осталась, что интересно, неотъемлемой частью современного южного моста. Шина SM используется для связи с другими устройствами на материнской плате (например, для управления вентиляторами). Контроллер DMA позволяет устройствам на шине [[ISA]] или [[LPC]] получать прямой доступ к [[Оперативная память|оперативной памяти]], обходясь без помощи центрального процессора.
 
  
Контроллер прерываний обеспечивает механизм информирования ПО, исполняющегося на ЦПУ о событиях в периферийных устройствах.
+
Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно?
IDE интерфейс позволяет «увидеть» системе [[Жёсткий диск|жёсткие диски]]. Шина [[LPC]] обеспечивает передачу данных и управление [[SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS]] ROM ([[Флэш-память|флэш]]).
 
  
APM или [[ACPI]] функции позволяют перевести компьютер в «спящий режим» или выключить его.
+
Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ.  
  
Системная память [[CMOS]], поддерживаемая питанием от батареи, позволяет создать ограниченную по объёму область памяти для хранения системных настроек (настроек [[BIOS]]).
+
Во-вторых, существует ряд спецификаций базовой системы ввода-вывода [[BIOS]], определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''.
 +
 
 +
Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием.
 +
 
 +
Зависимость КолибриОС от сервиса BIOS очень высока, а специализированные системные драйверы - пока очень немногочисленны.
  
 
== Поддержка аппаратного обеспечения в KolibriOS ==
 
== Поддержка аппаратного обеспечения в KolibriOS ==

Revision as of 12:13, 7 July 2010

KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами, мало того система предоставляет возможность прямого доступа к оборудованию прямо из пользовательского режима! Т.е. вы можете написать программу, которая сможет работать с оборудованием используя соответсвующий системный сервис. Правда этот подход лучше использовать исключительно в отладочных или исследовательских целях, а для "нормальной" поддержки оборудования всё-таки писать драйвера. Также нужно понимать, что существуют два вида драйверов:

  • Драйвер являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc).
  • Драйвер динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm), эти драйвера находятся в специальной системной директории (/rd/1/drivers/).

Состав аппаратного обеспечения ПК

Итак из чего же состоит компьютер? Большинство пользователей, вспомнив уроки информатики, тут же назовут: системный блок, монитор, клавиатура, мышь. Многие подумав добавят HDD, CD/DVD, Floppy приводы, видео, аудио и сетевую карты. А если заглянуть поглубже?

В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера - центральный процессор(ЦПУ) и оперативная память(ОП). Программиста же решившего написать драйвер для поддержки какого-то устройства в KolibriOS, больше всего заинтересует Южный Мост, где сходятся большинство ниточек, контролирующих оборудование. Существует также Северный Мост, посредством которго Южный Мост и связан с ЦПУ и ОП, но его мы пока подробно рассматривать не будем ввиду его небольшой функциональности с точки зрения программиста.

Компоненты южного моста

Большинство устройств представлены в Южном Мосту в качестве так называемых контроллеров - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный драйвер - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство.

Функционально южный мост включает в себя:

  • стандартный контроллер шины PCI;
  • контроллер шины PCI Express;
  • шина ISA, которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста.
  • контроллер шины SMBus или I2C для связи с другими устройствами на материнской плате (например, для управления вентиляторами);
  • DMA контроллер с поддержкой древних ISA и LPC-протоколов прямого доступ к оперативной памяти без участия ЦПУ;
  • контроллеры прерываний: старый PIC и "продвинутый" APIC;
  • PATA (IDE) и SATA контроллеры;
  • контроллер шины LPC для передачу данных и управление SIO (это такие устройства, как клавиатура, мышь, параллельный, последовательный порт, инфракрасный порт и флоппи-контроллер) и BIOS ROM (флэш);
  • часы реального времени (Real Time Clock);
  • управление питанием (Power management (APM и ACPI) позволяющие переводить компьютер в «спящий режим» или выключать его;
  • энергонезависимую память BIOS (CMOS) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;
  • звуковой контроллер (обычно AC97 или Intel HDA).

Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры USB, контроллеры FireWire и аудио-кодек.

Некоторые южные мосты также включают поддержку клавиатуры, мыши и последовательных портов. Однако, на большинстве системных плат эти устройства подключены через другой чип — Super I/O (контроллер ввода-вывода).

Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно?

Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ.

Во-вторых, существует ряд спецификаций базовой системы ввода-вывода BIOS, определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно BIOS Boot Specification.

Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием.

Зависимость КолибриОС от сервиса BIOS очень высока, а специализированные системные драйверы - пока очень немногочисленны.

Поддержка аппаратного обеспечения в KolibriOS

Рассмотрим как же работает с оборудованием KolibriOS.

  • Контроллер шины PCI - поддерживается ядром ОС (kernel/bus/pci32.inc)
  • Контроллер шины PCI Express - поддерживается ядром ОС (kernel/bus/PCIe.inc), автонастройка пока только для AMD-NPT начиная с Athlon64
  • Контроллер шины PCI-X - не поддерживается
  • Контроллер шины SMBus или I2C - не поддерживается
  • DMA контроллер - поддерживается ядром ОС
  • Контроллер прерываний PIC - поддерживается ядром ОС
  • Контроллер прерываний APIC - не поддерживается
  • Контроллер PATA (IDE) - поддерживается драйверами соответствующих устройств в ядре (папка /kernel/blkdev).

Системой поддерживаются следующие IDE устройства:

    • Floppy привод (flp_drv.inc)
    • CD/DVD привод (cd_drv.inc)
    • HDD привод (hd_drv.inc)
  • SATA контроллеры - системой не поддерживаются, тем не менее некоторые BIOS предоставляют возможность системе работать с такими контроллерами с помощью тех же самых драйверов соответствующих устройств, что используются для работы с PATA (IDE).
  • Контроллер шины LPC - не поддерживается
  • Часы реального времени (Real Time Clock) - поддерживается ядром ОС
  • Управление питанием APM - поддерживается ядром ОС
  • Управление питанием ACPI - поддерживается драйвером ACPICA
  • Энергонезависимая память BIOS (CMOS) - поддерживается ядром ОС
  • Звуковой контроллер AC97 - поддерживается драйверами соответствующих устройств. Поскольку AC97 стандарт стандартизует только функции кодека и AC-Link, отвечающего за взаимодействие контроллера и кодека, то для различных контроллеров AC97 требуются разные драйвера. В настоящее время система поддерживает контроллеры следующих Южных Мостов:
    • Intel
      • ICH0
      • ICH1
      • ICH2
      • ICH3
      • ICH4
      • ICH5
      • ICH6
    • NVidia
      • NForce
      • NForce2
      • NForce3
      • NForce4
      • NForce 500
    • Silicon Integrated Systems
      • SIS7012
    • ForteMedia
      • FM801
    • VIA
      • VT8231
      • VT8233
      • VT8233C
      • VT8235
      • VT8237
      • VT8237R
      • VT8237R Plus
    • Creative
      • EMU10K1X
  • Звуковой контроллер Intel HDA - системой пока не поддерживается, работа над драйвером ведётся в настоящее время.
  • Контроллер USB - частичная поддержка, с помощью драйвера. Поддерживается работа с контроллером, а также с мышью.
  • Контроллер FireWire - не поддерживается
  • Контроллер RAID - не поддерживается