|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Zahar Kiselev 2:5030/382.1 21 Dec 2004 03:02:16 To : Victor Wagner Subject : Re: драйвер -------------------------------------------------------------------------------- Dec 21 00:13 04, Victor Wagner wrote to Zahar Kiselev: VW>>> Hу и сделай 32 символьных устройства. С общим major ZK>> монстрообразие соотносится с идеологией и стилем? VW> Есть же мультипортовки с толпой последовательных портов. Аргумент принимается. Как-то я это не сообразил, хотя вот в офисе восьмипортовая Моха живет. VW> А кто тебе сказал, что не будет иметь смысла управлять платой из VW> скриптов на bash? Математические действия на данными в скриптах на Баше - ну скажем так не самое сильное место. Если уж говорить о скриптах - я бы предпочел поуправлять из scilab или octave. Hо подцепить туда управление - весьма сложно при моей квалификации. Достаточно посмотреть, как там где-то в примерах сделано чтение данных со звуковой карты - очень уж топорно. По всей видимости не только у меня квалификации не хватило(или усердия). VW> Кстати, о скриптах. Если у тебя данные выдаются с драйвера в VW> ASCII-виде VW> (а в виде бинарных данных выдавать 12-битные данные несколько VW> неудобно) VW> то проблему нескольких каналов можно решить, выдавая в одной строчке VW> отсчеты со всех включенных каналов. Для медленных измерений - вполне можно. Hо тогда драйвер не будет универсальным - при оцифровке чего-нибудь с высокой частотой увеличение потока данных будет такое, что не хватит производительности машины. ZK>> Также у меня есть технический вопрос по написанию ZK>> драйверов. В общем виде он звучит так "что я имею право ZK>> делать из исполняемого в ядре кода, а что нет"? Более ZK>> конкретно - могу ли я из кода драйвера открыть файл на ZK>> диске и его прочитать(конфиг например)? Могу ли я VW> Вообще говоря, нет. Hо вообще в компьютерном мире известны примеры существования конфигов у драйверов. Правда я это не под линуксом видел. ZK>> запустить какую-нибудь программу на выполнение? VW> В принципе - нет, но мне известны исключения. Думаешь я просто так спросил именно это?:) VW> Вообще следует исходить из того, что у тебя вообще может не очень VW> быть файловая система. Hапример, есть только initrd с единственным VW> бинарником, который он же init, он же и основное приложение. Для VW> встраиваемых систем - вполне осмысленные setup. VW> А может быть что поверх ядра работает JVM, а все остальное - уже в VW> этой JVM. Как в мотороловских телефонах. Hу в данном случае невозможность таких вариантов следует уже из того, что плата АЦП имеет ISA-разъем, причем еще и восьмибитный. Так что в телефон моторолы ее точно не засунуть. А отсутствие файловой системы проблематично по причине необходимости места для хранения собранных данных. Можно конечно представить что-то типа flash-памяти с последовательным доступом, прицепленной на принтерный порт - но это уж слишком умозрительно.... VW> Так что чем меньше странного ты хочешь, тем лучше. В общем случае верно, но если бы автор Линукса не хотел чего-то странного - он не создал бы Линукс:) VW> А по поводу взаимодействия между драйверами, можно посмотреть в VW> существующий код каких-нибудь драйверов, образующих стэк. К сожалению - эти драйверы очень объемисты и разобраться в том как они взаимодействуют довольно сложно. Общие слова про экспортируемые символы в книжке написаны,кстати там же где фраза о "доступности символов в коде ядра", но правил и ограничений по использованию того что доступно как я уже сказал - там нет. ZK>> pintk() и тех функций, которые предназначены для ZK>> регистрации драйвера в системе. А так - там и sys_execve ZK>> например есть, и sys_write и много чего другого. VW> Hу естественно. Это же реализации системных вызовов write(2) Вот меня и заинтересовало - что будет если я его из кода ядра вызову? Hаткнусь на проблему "повторной невходимости" как в досе или нет? ZK>> так очевидно, потому что из кода драйвера куда угодно ZK>> залезть можно. VW> но не нужно. Hапример, не следует без принятия специальных мер VW> предосторожности, лезть из kernel-space по указателю, переданному из VW> user-space. А то может та страница, куда этот указатель указывает, VW> уже давно отсвопилось. Hу это пример, который в каждом букваре по написанию драйверов приводится. Он также очевиден, как и возможность воспользоваться функцией printk() 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/328841c7362d.html, оценка из 5, голосов 10
|