Hardware Support/ru

From KolibriOS wiki
Revision as of 01:34, 7 July 2010 by Asper (talk | contribs) (New page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

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

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

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

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

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

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

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

  • контроллер шины PCI (устаревший);
  • контроллер шины PCI Express;
  • контроллер шины SMBus или I2C;
  • DMA контроллер;
  • контроллер прерываний PIC и APIC;
  • PATA (IDE) и SATA контроллеры;
  • контроллер шины LPC;
  • часы реального времени (Real Time Clock);
  • управление питанием (Power management (APM и ACPI);
  • энергонезависимую память BIOS (CMOS);
  • звуковой контроллер (обычно AC97 или Intel HDA).

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

Реже южный мост включает в себя поддержку клавиатуры, мыши и последовательных портов, но обычно эти устройства подключаются с помощью другого устройства — Super I/O (контроллера ввода-вывода). Поддержка шины PCI включает в себя традиционную спецификацию PCI, но может также обеспечивать поддержку шины PCI-X и PCI Express. Хотя поддержка шины ISA используется достаточно редко, она осталась, что интересно, неотъемлемой частью современного южного моста. Шина SM используется для связи с другими устройствами на материнской плате (например, для управления вентиляторами). Контроллер DMA позволяет устройствам на шине ISA или LPC получать прямой доступ к оперативной памяти, обходясь без помощи центрального процессора.

Контроллер прерываний обеспечивает механизм информирования ПО, исполняющегося на ЦПУ о событиях в периферийных устройствах. IDE интерфейс позволяет «увидеть» системе жёсткие диски. Шина LPC обеспечивает передачу данных и управление SIO (это такие устройства, как клавиатура, мышь, параллельный, последовательный порт, инфракрасный порт и флоппи-контроллер) и BIOS ROM (флэш).

APM или ACPI функции позволяют перевести компьютер в «спящий режим» или выключить его.

Системная память CMOS, поддерживаемая питанием от батареи, позволяет создать ограниченную по объёму область памяти для хранения системных настроек (настроек 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 - не поддерживается