Made by Vasiliy Pupkin, или паяем девайс для компа

Спецвыпуск Xakep, номер #012, стр. 012-125-1

Иван Иваныч aka Mr. False (mr_false@xakep.ru)

Дарова, помидорчик (перец уже приелся как-то ;))! Эх, девайсы, девайсы... Целый спец забит оными творениями мозгов человеческих. А ты не пробовал сам спаять свой собственный? И не надо в меня тяпками кидаться, создание девайсов - занятие не такое уж и геморное, особенно для таких заслуженных работников паяльника и канифоли, как ты. Не веришь? Доказать? Ну, бери Хспез в руки, комп - под мышку, паяльник - в зубы, и - вперед! Задавим рынок своими поделками! =)))

Лет зе девелопинг бегин

Сперва... А сперва - не совсем интересная, хотя и обязательная вещь. Теория. Во-первых - разберемся, что же будем паять. А паять мы будем простенький девайс для ISA-слота, который будет мигать светодиодами под управлением написанной нами же проги. Ну, что приуныл? Мне просто места не хватит объяснить схемы посложнее, да и сначала нужно сварганить нечто совсем простенькое. И еще надо изучить кучу инфы по самому слоту.

ISA - аббревиатура от Industry Standard Architecture (промышленный стандарт архитектуры). Шина впервые применена в самых первых моделях PC и, по совместительству, является первой шиной расширения (т.е. такой шиной, в которую можно пихать всякие левые девайсы типа аудиоплат и прочей фигни). В XT-шках применена восьмибитная шина (с разрядностью данных 8 бит - отсюда она получила название ISA8) и разрядностью адреса 20 бит. В более поздних моделях, начиная с AT, применена модель ISA16, которая имела разрядность данных 16 бит и адреса - 24 бит. За ней следуют различные зверушки типа EISA (Extended ISA), ISA PnP (прегеморройнейшая вещь, надо заметить, хотя до геморроя PCI ей далеко)... Про PCI и VLB молчу сознательно - это штуковины из другой оперы. Инфа для общего развития: шина работает на частоте 8 Мгц, поэтому пиковая пропускная способность шины достигает для ISA8 - 4 мб/с, а для ISA16 - 8 мб/с. Также нам с тобой не обойтись без описания разъемов шин. Здесь я оные и привожу:

Вот что значат эти контакты:

+12в, +5в, -12в, -5в - питание

GND - земля

Data[7:0] - шина данных

Addr[19:0] - шина адреса

AEN - разрешение адресации портов

IOWR# - запись в порт

IORD# - чтение порта

SmemWR# - запись в память

SmemRD# - чтение памяти

IRQ9, IRQ[3:7] - запросы аппаратных прерываний (в смысл можно не врубаться =))

DRQ[1:3] - запросы каналов DMA (аналогично)

DACK[1:3]# - подтверждение запросов DMA

TC - признак завершения счетчика циклов DMA

IOCHRDY - готовность устройства

BALE - разрешение защелки адреса

Refr# - цикл регенерации памяти

IOCHK - контроль канала

Reset - сигнал аппаратного сброса

Bclock - синхронизация шины ~8Mhz

OSC - несинхронизированная частота ~14,431818 Mhz

Недвусмысленно с исподвыдпорпердом

Вот так вот, незамысловато. Как это все фурычит? Хехст, да очень просто! Есть такая инструкция процессора: "out dx, al". Именно через нее осуществляется работа с внешними устройствами. После выполнения инструкции на шине адреса появляется число, которое выставлено в регистре dx, а на шине данных - что лежит в al. Просто? Просто! Эту фиговину, как предвидится, мы вставим в свою программу (драйвер девайса, екерны бабай! =)). Что у нас виднеется на других выходах, нам не важно, не так ли ;))?

Содержание  Вперед на стр. 012-125-2

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001