Перейти к содержимому

Lpc interface controller что это

  • автор:

16). Назначение lpc, место в общей системной шине пэвм. Топология. Протокол, физический интерфейс, формат транзакции. Чип ввода-вывода Super I/o.

Назначение LPC (Low Pin Count): системная периферийная синхронная параллельная шина PS/2 — разъем для подключения клавиатуры и мыши, VGA, IDE (ATA); для подключения Legacy-устройств. Мультиплексированная, с разрядностью 4 бита. Разъемов и карт расширения нет. Топология – управляемая хостом шина, но чаще используется соединение «точка-точка».

Состав моста Super I/O.

2 приемопередатчика (UART – Universal Asynchronous Receiver/Transmitter), реализующие работу асинхронного последовательного порта COM.

Контроллер IEEE-1284, реализующий работу порта LPT— Line print Terminal

Контроллер FDC – Floppy Disc Controller, реализующий подключение флоппи-дисковода.

Контроллер порта джойстика (Game Port).

Контроллер MIDI MPU-401 Musical Instrument Digital Interface – шина для связи музыкальных инструментов

Контроллер порта IrDA – Infra red Data Association – инфракрасный протокол связи (обычно использует один из UART).

ASKIR – Amplitude Shift Keyed Infrared port

KBC – поддержка системной клавиатуры, а также мыши. Иногда реализован в основном чипсете, и тогда в Super I/O отключается.

HW (HardWare) Monitoring – мониторинг параметров системы. Оцифровка сигналов от источника питания, тахометров вентиляторов, термодиодов и терморезисторов и предоставление данной информации программисту. Зачастую реализуется подключением Super I/O или другого контроллера к шине SMBus (частный случай I2O bus – Intelligent I/O).

Интерфейс SPI для подключения микросхем типа Firmware Hub

LPC для подключения чипов на материнской плате. Частота синхронизации 33 МГц, уровни напряжения совпадают с PCI 3.3V. Программно прозрачная, реализуется как мост PCI-LPC (PCI-ISA), отслеживающий все обращения за пределами пространства устройств PCI. Не поддерживает общий механизм конфигурирования и Plug&Play ввиду специфики подключенных устройств.

17). Протокол шины lpc, логическая и физическая структуры. Сигналы шины lpc. Протоколы dma, ecp. Режимы протокола. Фазы транзакции.

Сигналы шины LPC.

LAD[3:0] – мультиплексированная шина команд, адреса и данных

LFRAME# — сигнал границы кадра (подачи команды)

LRESET# — сигнал сброса, берется с шины PCI

LCLK – сигнал синхронизации, берется с шины PCI (Тактовая частота 33 МГц)

LDRQ# — индивидуальная линия сигнала DMA/Bus Master (в рамках Super I/O отводится портам LPT и IrDA).

Протокол режим Slave. Транзакция начинается с фазы Start, подкрепленной сигналом LFRAME#. При необходимости прерывания обмена сигнал LFRAME# понижается до выдачи всех необходимых фаз. Обмен выполняется блоками по 1, 2 или 4 байта. Адресация памяти 32-битная, портов – 16-битная. Ввиду 4-битной разрядности для передачи одного байта требуется 2 такта.

Протокол DMA. Запрос на открытие канала DMA подает устройство с помощью сигнала LDRQ#. У каждого логического устройства есть такая линия. Мост Super I/O поддерживает обычно одну такую линию – для LPT в режиме ECP. Хост, получив запрос, должен обратиться к контроллеру DMA за выделением запрошенного канала. Получив канал, хост начинает DMA-обмен. Вместо фазы ADDR подается фаза Size. Далее идет номер канала DMA (младшие 3 бита) и признак последнего байта (старший бит). При записи хост должен передавать управление устройству (TAR) по передаче каждого байта для получения фазы SYNC. При чтении хост передает управление устройству сразу же и ожидает от него сигнала SYNC и очередного байта. Сброс канала DMA передается в фазе SYNC либо по тому же протоколу, что и запрос (при неудаче инициализации обмена).

Start – начало транзакции; CycleType/DIR – команда Cycle Type / Direction, тип цикла и направление передачи; ADDR – адрес; TAR – цикл передачи управления, при чтении или операции Bus Master; DATA – передача данных; Sync – сигнал холостого хода, подается устройством.

Протокол ECP (Extended Capabilities Port) обеспечивает двунаправленную передачу данных в полудуплексном режиме, имеет раздельные каналы данных для каждого направления движения, позволяет работать с активными периферийными устройствами и поддерживает простую компрессию данных RLE. Есть возможность многоканальной адресации периферийных устройств.

18). Устройства хранения данных, иерархия устройств памяти

Предназначены для хранения данных, подлежащих обработке центральным процессором. Классификация:

1). внутренние (внутри корпуса системы); внешние.

2). со сменными носителями; со встроенными движущимися носителями; твердотельные накопители.

3). блочные с произвольным доступом; блочные с последовательным доступом; потоковые (почти то же, что и последовательного типа).

4). магнитные (магнитная ориентация ячеек); оптические (оптические свойства материалов); электронные (хранение эл. заряда в ячейках); комбинированные (один принцип – для чтения, другой – для записи).

Характеристики: Емкость [байт] — max количество информации, которое может в ней храниться.

Скорость доступа: время обращения при чтении/записи: /,между началом обращения и началом чтения,– длительн. физ. процесса чт.,–t восстановл., если произошло разрушение инфы, –t подготовки для приведение запоминающих эл-ов в исх. состояние, –t для физ. изменения состояния ЗЭ при записи инфы.

Цикл памяти: .Время ожидания – t на пересылку в память или из памяти одного слова данных. Пропускная способность — количество бит или байтов, пересылаемых за одну секунду.

Особенности оперативной памяти:

Доступ к оперативной памяти всегда произвольный и адресный.

Адрес ячейки обычно состоит из 4 компонентов – номер ранга (Rank), номер микросхемы (DRAM Device), номер банка (Bank), номер строки (Row) и номер столбца (Column). Единица адресации – байт.

Указанный адрес в общем случае не совпадает с физ. адресом в едином адресном пространстве системы, существует системная карта адресов.

В оперативной памяти хранятся данные, поступающие на выполнение, которые могут интерпретироваться как инструкции и операнды к ним.

NOR: состоит из параллельно включенных элементарных ячеек хранения информации. Это дает произвольный доступ к данным и побайтную запись информации.

NAND: принцип последовательного соединения элементарных ячеек, образующих группы (по 16 в группе), которые объединяются в страницы, а страницы — в блоки. При таком построении массива памяти обращение к отдельным ячейкам невозможно. Программирование выполняется одновременно только в пределах одной страницы, а при стирании обращение происходит к блокам или к группам блоков. Процессы записи/стирания в памяти NAND выполняются значительно быстрее, чем в памяти NOR.

StrataFlash: использованы элементы NAND и NOR, увеличение скорости чтения и снизижение стоимости хранения бита Применение: для хранения BIOS.

Lpc interface controller что это

LPC (Low Pin Count, малое число контактов) — шина, разработанная компанией Intel и предназначенная главным образом для подключения стандартных устройств, доставшихся современным персональным компьютерам «в наследство» от ранних ПК и обычно называемых унаследованными (legacy). Раньше такие устройства подключались к шине ISA.

Целесообразность разработки новой шины объясняется следующими основными причинами:

  • унаследованные устройства используют заранее определённые диапазоны адресов памяти и ввода-вывода и не обладают возможностью конфигурирования, предусмотренной технологией Plug and Play, поэтому они не могут быть напрямую подключены к более современным шинам (PCI, PCI Express ), имеющимся в современных ПК;
  • традиционно использовавшаяся для подключения таких устройств шина ISA имеет много сигналов (88, не считая линий питания), что усложняет и удорожает как контроллеры, так и системные платы, поэтому сохранение её в прежнем виде нецелесообразно;
  • необходимость сохранять электронную совместимость с шиной ISA в обычных ПК отсутствует, поскольку предназначенные для неё устройства расширения (например, сетевые и звуковые платы) к рубежу веков практически «вымерли».

Шина LPC имеет всего 7 обязательных и 6 необязательных сигналов. Обмен данными по ней идёт в синхронном режиме с частотой 33 МГц (шина ISA является асинхронной, что также усложняет работающее с ней оборудование), причём каждый так передаётся 4 информационных или управляющих бита. Разрядность адреса увеличена до 32 бит, что позволяет задатчикам шины прямо обращаться к адресному пространству памяти объёмом 4 Гбайта (у шины ISA разрядность адреса составляла 24 бита, что ограничивало возможности адресации величиной 16 Мбайт). Реальная пропускная способность LPC, составляющая 6,7 Мбайт/с, ненамного уступает таковой у ISA (до 8 Мбайт/с) и совершенно достаточна для одновременной работы всех подключенных к ней устройств (по расчётам Intel, они используют порядка 75% максимальной пропускной способности).

В современных ПК шина LPC через мост подключается к шине PCI или PCI Express (технически мост PCI-LPC обычно входит в состав микросхемы «южного моста»). К LPC обычно присоединяется микросхема многофункционального контроллера, в англоязычной документации именуемого «Super I/O». В его состав могут входить, например, контроллер интерфейса PS/2, контроллер гибких дисков , а также набор линий общего назначения (General Purpose I/O, GPIO), к которым часто подключаются датчики температуры и вентиляторы. Кроме того, к LPC могут подсоединяться другие как современные (например, модуль ISA. Например, с точки зрения программиста подключенные к LPC порты и контроллер интерфейса PS/2 генерируют обычные для них запросы прерываний IRQ1, IRQ3, IRQ4, IRQ12, хотя физически эти линии отсутствуют. Определять наличие или отсутствие тех или иных устройств, подключенных к LPC, необходимо соответствующими функциями BIOS. Зачастую информация о них содержится в таблицах ACPI, поэтому анализ конфигурации обычно целесообразно начинать именно с их разбора.

ISA умер! Да здравствует LPC?

Сегодня в персональном компьютере осталось только одно функциональное устройство, по которому можно проследить его генеалогию, — это интерфейс ISA, доставшийся ему по наследству от IBM PC AT. Большинство карт расширения выполняется по стандарту PCI, многие видеокарты подключаются по AGP. Однако производители карт расширения и материнских плат кивают друг на друга: если стандарт существует, то под него должны выпускаться карты; если выпускаются карты с интерфейсом ISA, то материнские платы должны его поддерживать. В спецификации PC98 наличие разъемов расширения стандарта ISA признается нежелательным. Однако для подсоединения таких устройств, как параллельные и последовательные порты, клавиатура, флоппи-диск, какой-нибудь интерфейс все же необходим. Поэтому разработчики микросхем для материнских плат вынуждены разводить ISA на кристалле, а чтобы добро не пропадало зря, — и выводить его наружу. Что же придет ему на смену?

Наименование Направление Назначение
Периферия Основной задатчик
LAD[3:0] I/O I/O Мультиплексированные команды, адреса и данные
LFRAME# I O Фрейм, указывает на начало новой команды
LRESET# I I Сброс, те же функции, что PCI Reset. При наличии PCIRST# необязателен
LCLC I I Тактовая частота 33 МГц, те же функции, что PCICLK

Для подключения перечисленных выше устройств Intel предлагает новый стандарт — LPC (Low Pin Count, Малое Количество Контактов). Этот интерфейс, по утверждению представителей корпорации, будет встраиваться в будущие чипсеты для материнских плат. Такие намерения Intel означают, что, вероятнее всего, мы вскоре сможем в добровольно-принудительном порядке ознакомиться со стандартом LPC. Попробуем сделать это заранее и по собственной воле.

Введение нового стандарта преследует следующие цели:

  • убрать из системы ISA и X-bus;
  • снизить стоимость системы;
  • обеспечить скорость обмена, не меньшую, чем по шине X-bus;
  • предоставить те же типы циклов, что и X-bus;
  • увеличить адресуемое пространство с традиционных 16 Мбайт до 4 Гбайт;
  • значительно упростить временные диаграммы за счет синхронной природы интерфейса;
  • обеспечить прозрачность для программного обеспечения и отсутствие конфликтов из-за ресурсов;
  • обеспечить пригодность как для настольных, так и для мобильных систем;
  • обеспечить функции управления потребляемой мощностью.

Контактов действительно очень мало: семь обязательных (для передачи информации) и шесть дополнительных (для подключения устройств, выполняющих функцию задатчика и управления мощностью). Названия и функции обязательных сигналов интерфейса LPC приведены в табл. 1. Команды, адреса и данные передаются по линиям LAD[3:0] тетрадами-нибблами последовательно по четыре бита за один раз. Подобно PCI интерфейс синхронный, каждый цикл состоит из нескольких полей, каждое из которых имеет длительность в один период тактовой частоты 33 МГц. Любой цикл обмена по интерфейсу LPC начинается с того, что основной задатчик на шине (обычно чипсет) устанавливает активный уровень на линии LFRAME#. При этом все периферийные устройства переходят в состояние «начало цикла» и анализируют состояние линий LAD[3:0]. Если устройства передавали информацию по линиям LAD[3:0], то они немедленно их освобождают. Таким образом, этот сигнал может использоваться для прекращения затянувшихся циклов, например, при сбоях и зависаниях. То есть при достаточно интеллектуальном основном задатчике зависшее периферийное устройство не сможет подвесить всю систему. Сигнал LFRAME# может быть активным более одного периода тактовой частоты 33 МГц. В этом случае действительной считается информация, имевшаяся на LAD[3:0] во время последнего периода тактовой частоты. Первое поле — START — определяет тип операции, его возможные значения приведены в табл. 2.

Значение LAD[3:0] Тип операции
0 Начало ввода/вывода или чтения/записи
1 Зарезервировано для последующего расширения
10 Разрешение для задатчика номер 1
11 Разрешение для задатчика номер 2
0100-1110 Зарезервировано для последующего расширения
1111 Принудительное прекращение цикла

Следующее поле — CYCTYPE + DIR (Cycle Type / Direction, тип цикла и направление передачи), определяется текущим задатчиком. Это поле может иметь значения, указанные в табл. 3. Значение бита LAD[0] зарезервировано, и он всегда должен быть равен 0.

Поле SIZE (Размер) может принимать значения 00 при передаче 1 байта, 01 при передаче 2 байт и 11 при передаче 4 байт. Значение 10 зарезервировано. Это поле используется только при операциях прямого доступа; ввод/вывод и чтение/запись осуществляются побайтно. Поле ADDR имеет длину четыре периода тактовой частоты для операций ввода/вывода и восемь периодов для циклов обращения к памяти. Адреса передаются начиная со старшей тетрады, то есть при обращении к памяти первыми передаются биты 31:28, а последними — 3:0.

LAD[3:2] LAD[1] Тип операции
0 0 Чтение из внешнего устройства
0 1 Запись во внешнее устройство
1 0 Чтение из памяти
1 1 Запись в память
10 0 Прямой доступ к памяти для чтения
10 1 Прямой доступ к памяти для записи
11 Х Зарезервировано. Периферия должна игнорировать это значение, а основной задатчик, обнаружив его, прерывает цикл установкой LFRAME# в активное состояние

Поле CHANNEL используется в операциях прямого доступа к памяти и содержит в битах 0:2 номер канала, а в бите 3 — аналог сигнала Terminal Count шины ISA.

Поле DATA (Данные) имеет длину два периода тактовой частоты и содержит данные, передаваемые младшей тетрадой вперед. В одном цикле может содержаться одно, два или четыре поля DATA.

Поле передачи управления Turn Around, TAR, используется для передачи контроля над линиями LAD [3:0] второму участнику данного цикла, что необходимо при операциях чтения. Оно имеет продолжительность два периода тактовой частоты, на первом периоде текущий задатчик устанавливает на линиях LAD[3:0] значение 1111, на втором отключается, ожидая информацию от второго участника диалога.

Поле SYNC служит для синхронизации источника и приемника данных. Его вставляет ведомый участник цикла для того, чтобы подготовить для передачи запрошенные данные, или для размещения полученной информации. Полей SYNC в одном цикле может быть несколько, фактически столько, сколько нужно для подготовки. Значения поля SYNC приведены в табл. 4.

LAD[3:0]
0 Синхронизация достигнута
0001-0100 Зарезервировано
101 Короткое ожидание
110 Длительное ожидание, будет добавлено много полей SYNC
0111-1000 Зарезервировано
1001 Синхронизация достигнута, передача будет продолжена в следующем цикле (только при прямом доступе к памяти)
1010 Ошибка. В переданных данных содержится ошибка
1011 — 1111 Зарезервировано

Значение 1010 — Ошибка необходимо потому, что все циклы должны иметь определенную длину, так что периферийное устройство обязано передать требуемое для данного цикла количество данных, но перед этим оно честно предупреждает задатчика о том, что эти данные имеют чисто фиктивный характер.

Ознакомившись с типами полей, можно более подробно рассмотреть механизмы начала, окончания и принудительного прекращения цикла. Цикл начинается с того, что основной задатчик устанавливает активный уровень на линии LFRAME#. С этого момента периферийные устройства только анализируют состояние линий LAD[3:0], прервав любую операцию на шине (если она проводилась). Задатчик может удерживать LFRAME# в активном состоянии более одного периода частоты синхронизации, при этом он даже может произвольно менять состояние LAD[3:0]. Действительным значением поля START будет то, которое имелось на этих линиях перед переходом LFRAME# в пассивное состояние. Если считанное поле START распознается периферийными устройствами, то они должны декодировать весь цикл, а в противном случае — просто дожидаться следующей активации LFRAME# (например, устройства ввода/вывода, не использующие циклы прямого доступа или захвата шины, могут их просто игнорировать). Принудительное прекращение цикла является специальным циклом, так как начинается с установки LFRAME# в активное состояние, а заканчивается установкой поля START со значением 1111. При этом для более уверенного распознавания линия LFRAME# находится в активном состоянии не менее четырех периодов тактовой частоты.

Поле Значение Источник Число тактов
START 0 Основной задатчик 1
CYCTYPE+DIR 100 Основной задатчик 1
ADDR ХХХХ Основной задатчик 8
TAR 1111 Основной задатчик 2
SYNC 101 Периферийное устройство 3
SYNC 0 Периферийное устройство 1
DATA ХХХХ Периферийное устройство 2
TAR 1111 Периферийное устройство 2
Всего тактов 20
Время доступа 0,66 мкс
Скорость передачи 1,5 Мбайт/с

В табл. 5 приведены последовательность и характеристики полей в цикле чтения из памяти. Основной задатчик инициирует цикл, определяет тип цикла и направление передачи (чтение из памяти), адрес памяти и информирует об освобождении линий LAD[3:0]. Периферийное устройство во время подготовки данных передает поля SYNC со значением 0101. Когда данные готовы для передачи, устройство передает поле SYNC со значением 0000, две тетрады данных и информирует основного задатчика об освобождении линий LAD[3:0].

Количество полей синхронизации соответствует быстродействию памяти и может изменяться. В данном примере предполагалось наличие ППЗУ с временем доступа 120 нс (4*33 нс = 132 нс). Цикл записи построен примерно так же, но данные передает основной задатчик, а периферийное устройство — только поля SYNC и TAR. В поле SYNC устройство помещает значение либо 0000 (успешная запись), либо 1010 (ошибка при записи). Соответственно возможны варианты, когда устройство не буферизует данные, а выдает поля SYNC до момента реальной записи.

Поле Значение Источник Число тактов
START 0 Основной задатчик 1
CYCTYPE+DIR 110 Основной задатчик 1
ADDR ХХХХ Основной задатчик 8
DATA ХХХХ Основной задатчик 2
TAR 1111 Основной задатчик 2
SYNC 0 Периферийное устройство 1
TAR 1111 Периферийное устройство 2
Всего тактов 17
Время доступа 0,56 мкс
Скорость передачи 1,8 Мбайт/с

В табл. 6 приведены последовательность и характеристики полей в цикле чтения из памяти. Совершенно аналогично происходит ввод/вывод при работе с портами, отличие состоит лишь в других значениях полей CYCTYPE+DIR. Для ознакомления с функциями работы с прямым доступом к памяти и управления потребляемой мощностью в табл. 7 приведены необязательные линии интерфейса LPC.

Наименование Направление Назначение
Периферия Основной задатчик
LDRQ# O I Запрос на прямой доступ к памяти или захват шины. Каждому устройству, обладающему этими функциями, требуется отдельная линия LDRQ#
SERIRQ I/O I/O Последовательный запрос на прерывание
CLKRUN# OD I/OD OD I/OD То же, что и PCI CLKRUN#
PME# OD I/OD То же, что и PCI PME#
LPCPD# I O I O Отключение, указывает, что периферия должна подготовиться к отключению
LSMI# O/D I O/D I Как и PCI SMI#, нужен для повторных попыток

При запросе прямого доступа к памяти (ПДП) или захвата шины используется линия LDRQ#. В первом случае по ней передается номер канала ПДП, во втором — зарезервированное значение 100. При благоприятном для данного запроса исходе арбитража основной задатчик начинает производить циклы ПДП. Бит LAD[3] в поле CHANNEL играет специальную роль и соответствует линии шины ISA TC (Terminal Count). В случае передачи последней порции данных (1, 2, 4 байт) этот бит устанавливается в 1, сигнализируя о том, что текущий сеанс ПДП закончен. Также сеанс ПДП может быть завершен установкой поля SYNC=0000 (синхронизация достигнута) или SYNC=1010 (ошибка), так как при циклах ПДП для индикации готовности данных используется значение SYNC=1001 (синхронизация достигнута; в следующем цикле будут еще данные). Последовательность полей и другие характеристики цикла ПДП при 8-битном чтении внешним устройством из основной памяти приведены в табл. 8. В зависимости от типа ПДП (8, 16 или 32 разряда) последние четыре поля передаются один, два или четыре раза соответственно. Соответственно будут меняться время доступа и скорость передачи.

Цикл захвата шины, как и все остальные, инициируется основным задатчиком после получения запроса по линии LDRQ#. Основной задатчик, как и при всех других циклах, формирует поле START, имеющее значение 0010 или 0011 (разрешение для задатчика 1 или задатчика 2; в настоящее время поддерживается не более двух задатчиков). После этого основной задатчик передает управление шиной при помощи поля TAR. Далее все протекает как при описанных выше циклах, за одним исключением: поля SYCTYPE+DIR и последующие, которые определяют тип цикла и направление передачи, формируются устройством, получившим право на захват шины.

Наименование Направление Назначение
Периферия Основной задатчик
LDRQ# O I Запрос на прямой доступ к памяти или захват шины. Каждому устройству, обладающему этими функциями, требуется отдельная линия LDRQ#
SERIRQ I/O I/O Последовательный запрос на прерывание
CLKRUN# OD I/OD OD I/OD То же, что и PCI CLKRUN#
PME# OD I/OD То же, что и PCI PME#
LPCPD# I O I O Отключение, указывает, что периферия должна подготовиться к отключению
LSMI# O/D I O/D I Как и PCI SMI#, нужен для повторных попыток

Для работы с устройствами, использующими прерывания, используется линия SERIRQ# и одноименный протокол, описанный в спецификации шины PCI «PCI Local Bus Specification, Rev 2.1». Управление включением/выключением периферийных устройств осуществляется при помощи линий LPCPD# и LRST#. При выключении первая из них устанавливается основным задатчиком в низкий уровень, при этом в течение еще не менее 30 мкс на шину подается сигнал тактовой частоты LCLC. Все периферийные устройства при обнаружении низкого уровня на линии LPCPD# обязаны прекратить любую активность на шине и перейти в режим пониженного энергопотребления. Переход к работе происходит при подаче основным задатчиком на линию LPCPD# высокого уровня. Подача тактового сигнала осуществляется заранее, не менее чем за 100 мкс перед установкой высокого уровня LPCPD#. Для правильного перехода внешних устройств в начальное состояние на линии LRST# поддерживается низкий (активный) уровень еще в течение 60 мкс.

Драйвер для неизвестного устройства Intel ICH LPC Interface Controller

Сегодня в очередной раз столкнулся с необходимостью установки драйвера для неизвестного устройства Intel(R) 82801GB/GR (ICH7 Family) LPC Interface Controller — 27B8. В зависимости от модели чипсета название этого устройства может быть другим, но суть от этого не меняется. Это достаточно старая и известная проблема, которая до сих пор у многих вызывает затруднения.

Если в Диспетчере устройств открыть закладку «Сведения» для этого неизвестного устройства, то в разделе «ИД оборудования» можно увидеть строку ACPI\ATK0110. ATK 0110 — это виртуальное устройство которое собирает информацию о работе материнской платы для утилиты Asus AiBooster. Для Windows 2000 и выше нужно установить драйвер ATK0110 ACPI UTILITY.

Будьте внимательны! В архиве находятся две версии драйвера: для 32-битных и 64-битных операционных систем. Обязательно следует устанавливать версию, которая соответствует разрядности вашей операционной системы.

Вы так же можете использовать Windows Update, который автоматически подберет, скачает и установит необходимый драйвер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *