|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Zahar Kiselev 2:5030/382.1 20 Dec 2004 17:44:22 To : Alex Korchmar Subject : драйвер --------------------------------------------------------------------------------
Dec 20 15:17 04, Alex Korchmar wrote to Vitaly Mayatskih:
AK> нет, вывод неправильный - правильный - что линух, вопреки
AK> распространенному заблуждению, не лучше и не надежнее чем винда - точно
AK> так же на раз роняется
Вот и я то же самое тем "паровозостроителям" втолковываю.
Что в линуксе действительно проще - это поднять его из упавшего состояния без
полной переустановки. Hу и дописать/подправить какую-нибудь мелочь под свои
надобности тоже проще. Я как-то раз видел исходник _простого_ драйвера
устройства под двухтысячную винду. С одной стороны вроде бы и Си, с другой -
_ничего_ непонятно за всеми этими дефайнами с переопределением одного на другое.
Как в книжке ну например по теоретической химии - для непосвященного понятны
только предлоги и фразы типа "отсюда следует":-)
И - ни одного обращения к портам устройства - потому что в винде HAL.
А под линуксом я довольно успешно продвигаюсь в написании драйвера экзотической
отечественной платы АЦП. Кстати - то, что она под восьмибитный ISA-слот не
мешает ей выдавать вполне приличную для измерительного устройства точность в 12
разрядов.
И мне почти все понятно. При том что я совершенно не считаю себя
профессиональным программистом. Hо к концу новогодних каникул надеюсь что эта
конструкция из линуксового компа и платы АЦП уже будет выдавать на принтер
нарисованные в GRACE графики исследуемых процессов.
Вот как ты это прокомментируешь? Признаешь что мой уровень умения
программировать резко падает как только я вижу винду? :-)
Кстати о непонятном: как всегда в линуксе - все становится просто, как только
понимаешь _что_ же нужно сделать. Ответы на вопрос "как" - при этом довольно
быстро находятся. Так и с этой платой - возможностей у нее всяких много. Если
пытаться делать "универсальный" драйвер, позволяющий потом использовать любую из
них - то возникает главная проблема - как множество этих возможностей на
довольно ограниченную модель "символьного устройства"? В частности например
входных каналов там может быть от задействовано от 1 до 32, это можно выбирать и
выбор я "повесил" на отдельный ioctl. А данные из символьного устройства
"вытекают" общим потоком - ну и как рекомендуется помечать в этом потоке то, что
соответствует первому каналу? В драйвере ведь еще и буфер есть, какая-то порция
данных может там остаться с момента предидущего чтения - ведь карта "наполняет"
буфер асинхронно по отношению к читающей программе...
Если делать драйвер только под данное конкретное применение этой платы - то
можно конечно "прибить гвоздями" настройки и исходя из этого писать работающую с
драйвером программу. Правда от вышеописанного это не очень сильно помогает.
И к тому же под другое применение придется делать другой вариант драйвера.
А применений уже сейчас нашлось два и возможно найдется третье, не считая моих
личных (как же не воспользоваться нахаляву хорошей железкой:)
Вот и получилось у меня, что "по кускам" уже почти все работает, а как собрать
это в единую конструкцию - я пока не решил. Hе потому что не умею собрать, а
потому что не знаю как это наиболее правильно сделать.
Zahar(@spbdept.rbc.ru) Остров Большой Березовый: http://birch-island.spb.ru
--- Msged/LNX 6.1.1
* Origin: N:60.17'54" E:28.39'40" (2:5030/382.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/328841c6dbf2.html, оценка из 5, голосов 10
|