Page 1 of 2

Работа с железом

Posted: Sun Aug 25, 2013 8:32 pm
by punk_joker
Уже давно интересует тема программирования оборудования, написание дров и т.п. Но если раньше не было ни компа ни достаточного уровня в знаниях, то сейчас все порядком лучше :) Можно конечно начать с ковыряния дров KolibriOS, но так, мне кажеться далеко не уедишь. Так вот, с чего все это начать? С чтения материалов на какую тему? Оценнивая свои знания как неочень, я не собираюсь сразу бросаться в написания дров, а хочу для начала повысить свой общий теоретический уровень знаний.

Re: Работа с железом

Posted: Sun Aug 25, 2013 8:45 pm
by hidnplayr
There are some articles on the wiki at www.osdev.org that might be of interest.

Re: Работа с железом

Posted: Sun Aug 25, 2013 9:34 pm
by Asper
Классику надеюсь читал?

Сам почти не читал, но вроде хорошая книга: Владимир Кулаков "Программирование на аппаратном уровне. Специальный справочник". Но там конечно не про всё железо.
А какое железо в первую очередь интересует?

Да и ещё я уже писал ответ на этот вопрос.

Re: Работа с железом

Posted: Sun Aug 25, 2013 10:52 pm
by UnКайF
В деле написания драйверов можно выделить две проблемных области:

1. Как отдельная железка функционирует (модель, машина состояний) и как она отдает свои ресурсы (как подключена) системе на аппаратном уровне (набор управляющих регистров и т.п.) . По этому пункту необходимы базовые знания об архитектуре эвм, плюс изучение даташитов на интересующее устройство. В основном, но не всегда, нужно еще изучать некоторые системные устройства, такие как таймеры, контроллер прерываний, DMA и т.п. если нужное устройство работает через них.

2. Как драйверу предоставлять свои услуги операционной системе и приложениям. Эта область, естественно, зависит от архитектуры операционной системы и принятых в ней соглашений - т.н. "драйверная модель".

То есть я хочу сказать, что ответ на вопрос "с чего начать ?" зависит от того, что из вышеприведенного ты уже знаешь.

Re: Работа с железом

Posted: Sun Aug 25, 2013 11:22 pm
by UnКайF
Бегло поискал, вот, по 1 пункту: http://dfiles.ru/files/xfjk455jy .
Сам когда-то читал:
"Аппаратура персональных компьютеров и её программирование" Вегнер В.А., Крутяков А.Ю и др. -- М.: Радио и связь, 1995 -- 224с.
"Разработка устройств сопряжения для персонального компьютера типа IBM PC", Ю.В.Новиков, О.А.Калашников, С.Э.Гуляев, издательства ЭКОМ, 1997
Но это, конечно, уже безбожно устарело.

Re: Работа с железом

Posted: Mon Aug 26, 2013 12:11 am
by Mario_r4
Юров, Пирогов, Зубков, Кулаков, Фигурнов, Авгуров, Гук

Posted: Mon Aug 26, 2013 12:24 am
by punk_joker
Как знал, что получу тут ответы по существу, а не кучу "умных" советов. Всем спасибо. Теперь понятно с чего начинать и в каком направлении двигаться.

Re: Работа с железом

Posted: Mon Aug 26, 2013 9:36 am
by punk_joker
Asper wrote:Классику надеюсь читал?

А какое железо в первую очередь интересует?
Конечно читал, но надо теоретическую часть подтянуть. Пока интересуют тачпад и ACPI.

Re: Работа с железом

Posted: Mon Aug 26, 2013 9:42 am
by yogev_ezra
punk_joker wrote:Пока интересуют тачпад и ACPI.
Touchpad должен уже работать - если он был PS/2, то уже давно. А если он USB - то после того, как CleverMouse написала поддержку USB. Поэтому лучше начать с баг-репорта, если что-то в нём не работает. А ACPI по сложности по сравнению с тачпадом, это как от земли до неба :-)

Re: Работа с железом

Posted: Mon Aug 26, 2013 9:51 am
by punk_joker
yogev_ezra, тачпад работает в режиме эмуляции, тобишь без поддержки мультитача к которому я прывык, да и вообще брагодаря мультитачу я привык работать на ноуте именно с тачпадов, к тому же это устройство для меня интересно. Насчет разности сложностей понятно, ну что сделаешь коли так интересы пали.

Re: Работа с железом

Posted: Mon Aug 26, 2013 10:21 am
by SoUrcerer
А, я так понимаю, USB-тачпад?

Re: Работа с железом

Posted: Mon Aug 26, 2013 10:47 am
by punk_joker
SoUrcerer wrote:А, я так понимаю, USB-тачпад?
Скорее вего да. ElanTech.

Re: Работа с железом

Posted: Mon Aug 26, 2013 11:00 am
by punk_joker
SoUrcerer wrote:А, я так понимаю, USB-тачпад?
ETPS/2 Elantech Touchpad - всетаки ps/2, к тому же вспомнил, что он у меня работал еще в сборках без usb.

Re: Работа с железом

Posted: Mon Aug 26, 2013 11:31 am
by UnКайF
Работа с USB сильно отличается от работы с железками подключенными к системе традиционно. Рекомендую Кулакова (кроме той части, где описано программирование хост-контроллера) и "USB in nutshell" (есть на русском) для начала. Сама спецификация USB - вещь довольно запутанная, но необходимая. Тачпад относится к HID устройствам, - читаем соответствующую часть спецификации. USBAPI от CleverMouse. Затем разбираем Колибривский драйвер HID, как пример. Полезно повозиться с USB-снифферами под виндой или линухом при изучении целевого устройства.
Spoiler:Не могу точно сказать, относится ли мультитач к стандартным HID устройствам, - если нет, то нужно будет писать загружаемый драйвер, дабы не возникало проблем с совместимостью. А это наталкивается на некоторые вилы, имхо.

Re: Работа с железом

Posted: Mon Aug 26, 2013 1:08 pm
by SoUrcerer
Вообще, PS/2 тачпады тоже встречаются, у них часто свой протокол. Для начала можно взглянуть на
http://www.win.tue.nl/~aeb/linux/kbd/scancodes-13.html
http://www.synaptics.com/decaf/utilities/ACF126.pdf