Работа с железом
-
Уже давно интересует тема программирования оборудования, написание дров и т.п. Но если раньше не было ни компа ни достаточного уровня в знаниях, то сейчас все порядком лучше Можно конечно начать с ковыряния дров KolibriOS, но так, мне кажеться далеко не уедишь. Так вот, с чего все это начать? С чтения материалов на какую тему? Оценнивая свои знания как неочень, я не собираюсь сразу бросаться в написания дров, а хочу для начала повысить свой общий теоретический уровень знаний.to infinity and beyond
There are some articles on the wiki at www.osdev.org that might be of interest.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
Классику надеюсь читал?
Сам почти не читал, но вроде хорошая книга: Владимир Кулаков "Программирование на аппаратном уровне. Специальный справочник". Но там конечно не про всё железо.
А какое железо в первую очередь интересует?
Да и ещё я уже писал ответ на этот вопрос.
Сам почти не читал, но вроде хорошая книга: Владимир Кулаков "Программирование на аппаратном уровне. Специальный справочник". Но там конечно не про всё железо.
А какое железо в первую очередь интересует?
Да и ещё я уже писал ответ на этот вопрос.
В деле написания драйверов можно выделить две проблемных области:
1. Как отдельная железка функционирует (модель, машина состояний) и как она отдает свои ресурсы (как подключена) системе на аппаратном уровне (набор управляющих регистров и т.п.) . По этому пункту необходимы базовые знания об архитектуре эвм, плюс изучение даташитов на интересующее устройство. В основном, но не всегда, нужно еще изучать некоторые системные устройства, такие как таймеры, контроллер прерываний, DMA и т.п. если нужное устройство работает через них.
2. Как драйверу предоставлять свои услуги операционной системе и приложениям. Эта область, естественно, зависит от архитектуры операционной системы и принятых в ней соглашений - т.н. "драйверная модель".
То есть я хочу сказать, что ответ на вопрос "с чего начать ?" зависит от того, что из вышеприведенного ты уже знаешь.
1. Как отдельная железка функционирует (модель, машина состояний) и как она отдает свои ресурсы (как подключена) системе на аппаратном уровне (набор управляющих регистров и т.п.) . По этому пункту необходимы базовые знания об архитектуре эвм, плюс изучение даташитов на интересующее устройство. В основном, но не всегда, нужно еще изучать некоторые системные устройства, такие как таймеры, контроллер прерываний, DMA и т.п. если нужное устройство работает через них.
2. Как драйверу предоставлять свои услуги операционной системе и приложениям. Эта область, естественно, зависит от архитектуры операционной системы и принятых в ней соглашений - т.н. "драйверная модель".
То есть я хочу сказать, что ответ на вопрос "с чего начать ?" зависит от того, что из вышеприведенного ты уже знаешь.
UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse
Бегло поискал, вот, по 1 пункту: http://dfiles.ru/files/xfjk455jy .
Сам когда-то читал:
"Аппаратура персональных компьютеров и её программирование" Вегнер В.А., Крутяков А.Ю и др. -- М.: Радио и связь, 1995 -- 224с.
"Разработка устройств сопряжения для персонального компьютера типа IBM PC", Ю.В.Новиков, О.А.Калашников, С.Э.Гуляев, издательства ЭКОМ, 1997
Но это, конечно, уже безбожно устарело.
Сам когда-то читал:
"Аппаратура персональных компьютеров и её программирование" Вегнер В.А., Крутяков А.Ю и др. -- М.: Радио и связь, 1995 -- 224с.
"Разработка устройств сопряжения для персонального компьютера типа IBM PC", Ю.В.Новиков, О.А.Калашников, С.Э.Гуляев, издательства ЭКОМ, 1997
Но это, конечно, уже безбожно устарело.
UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse
Юров, Пирогов, Зубков, Кулаков, Фигурнов, Авгуров, Гук
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Как знал, что получу тут ответы по существу, а не кучу "умных" советов. Всем спасибо. Теперь понятно с чего начинать и в каком направлении двигаться.
to infinity and beyond
Конечно читал, но надо теоретическую часть подтянуть. Пока интересуют тачпад и ACPI.
to infinity and beyond
Touchpad должен уже работать - если он был PS/2, то уже давно. А если он USB - то после того, как CleverMouse написала поддержку USB. Поэтому лучше начать с баг-репорта, если что-то в нём не работает. А ACPI по сложности по сравнению с тачпадом, это как от земли до небаpunk_joker wrote:Пока интересуют тачпад и ACPI.
yogev_ezra, тачпад работает в режиме эмуляции, тобишь без поддержки мультитача к которому я прывык, да и вообще брагодаря мультитачу я привык работать на ноуте именно с тачпадов, к тому же это устройство для меня интересно. Насчет разности сложностей понятно, ну что сделаешь коли так интересы пали.
to infinity and beyond
А, я так понимаю, USB-тачпад?
Скорее вего да. ElanTech.SoUrcerer wrote:А, я так понимаю, USB-тачпад?
to infinity and beyond
ETPS/2 Elantech Touchpad - всетаки ps/2, к тому же вспомнил, что он у меня работал еще в сборках без usb.SoUrcerer wrote:А, я так понимаю, USB-тачпад?
to infinity and beyond
Работа с USB сильно отличается от работы с железками подключенными к системе традиционно. Рекомендую Кулакова (кроме той части, где описано программирование хост-контроллера) и "USB in nutshell" (есть на русском) для начала. Сама спецификация USB - вещь довольно запутанная, но необходимая. Тачпад относится к HID устройствам, - читаем соответствующую часть спецификации. USBAPI от CleverMouse. Затем разбираем Колибривский драйвер HID, как пример. Полезно повозиться с USB-снифферами под виндой или линухом при изучении целевого устройства.
Spoiler:
Не могу точно сказать, относится ли мультитач к стандартным HID устройствам, - если нет, то нужно будет писать загружаемый драйвер, дабы не возникало проблем с совместимостью. А это наталкивается на некоторые вилы, имхо. UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse
Вообще, PS/2 тачпады тоже встречаются, у них часто свой протокол. Для начала можно взглянуть на
http://www.win.tue.nl/~aeb/linux/kbd/scancodes-13.html
http://www.synaptics.com/decaf/utilities/ACF126.pdf
http://www.win.tue.nl/~aeb/linux/kbd/scancodes-13.html
http://www.synaptics.com/decaf/utilities/ACF126.pdf
Who is online
Users browsing this forum: No registered users and 10 guests