Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Victor Wagner                        2:5020/400     21 Dec 2004  01:13:55
 To : Zahar Kiselev
 Subject : Re: драйвер
 -------------------------------------------------------------------------------- 
 
  Zahar Kiselev <Zahar.Kiselev@p1.f382.n5030.z2.fidonet.org>
  wrote:
 
  ZK> Hello Victor! 
   ZK> Dec 20 19:02 04, Victor Wagner wrote to Zahar Kiselev: 
   ZK>>>входных каналов там может быть от задействовано от 1 до
 
  32,
 
   ZK>>>это можно выбирать и выбор я "повесил" на отдельный
 
  ioctl.
 
  VW>> Hу и сделай 32 символьных устройства. С общим major и
  VW>> разными minor. И на каждое из них выдавай данные только
  VW>> из одного канала. Все равно больше восьми таких карт
  VW>> одновременно у тебя вряд ли будет. 
  ZK> Технически не вижу проблемы. Однако как такое
  ZK> монстрообразие соотносится с идеологией и стилем?
 
 Да нормально. У тебя есть поток данных. Он представляется в системе как
 символьное устройство. Железяка поддерживает много таких устройств. Hу и
 что? Есть же мультипортовки с толпой последовательных портов.
  
  ZK> Представь сначала драйвер с 32 устройствами, а потом еще и
  ZK> userlevel программу, которая открывает всю эту кучу
 
 Зато данная конструкция позволяет обрабатывать разные потоки данных с
 одной карты РАЗHЫМИ userlevel программами. Соответственно, если у тебя к
 данной AЦП-карте привешены десяток термометров, пяток манометров и
 несколько напряжометров, то ты можешь запустить либо по одной программе
 на каждый тип прибора, либо, наоборот, сгруппировать оные приборы по
 объектам, параметры которых они измеряют, и обрабатывать каждой
 программой набор логически связанных потоков, не отвлекаясь на прочие.
 
  ZK> устройств и их читает? Работать наверно будет, но что
  ZK> после этого про меня в этой эхе скажут? :-) 
   VW>> то ли вообще автоматически включать канал при открытии
  VW>> соответствующего ему файла устройства. 
  ZK> А вот эта идея мне понравилась в любом случае. Как-то я не
  ZK> подумал, что так можно сделать 
   VW>> Можно еще наряду с файлами в /dev завести вход в /proc и
  VW>> управлять устройством посредством echo команда
  VW>> >/proc/моя-плата 
  ZK> Учебный пример кода на этот случай я тоже написал, но
  ZK> решил что в моем случае это лишнее. Это если бы платой из
  ZK> скриптов на bash управлять - тогда да, а если из программы
  ZK> - то ioctl на файл устройства проще. 
 
 А кто тебе сказал, что не будет иметь смысла управлять платой из
 скриптов на bash? 
 
 Кстати, о скриптах. Если у тебя данные выдаются с драйвера в ASCII-виде
 (а в виде бинарных данных выдавать 12-битные данные несколько неудобно)
 то проблему нескольких каналов можно решить, выдавая в одной строчке
 отсчеты со всех включенных каналов. Сначала ioctl-ем выставляешь битовую
 маску включенных каналов (их 32, как раз в unsigned int уместится),
 потом тебе выдают строчки содержащие от 1 до 32 чисел, разделенных
 пробелами.
  
  ZK> Вот тут-то я и сел в лужу - сказывается то, что
  ZK> программирование у нас в институте было не основным
  ZK> предметом, да и обучали нас максимум - алгоритмизации и
  ZK> кодировнию, а не архитектуре. 
 
 Так этому по-моему вообще нигде не обучают. И не только у нас в стране.
 Даже DJ Bernstein, который заставляет студентов по 10 уязвимостей за
 семестр находить, и тот не обучает. Разве что Таннебаум...
    
    ZK> Также у меня есть технический вопрос по написанию
  ZK> драйверов. В общем виде он звучит так "что я имею право
  ZK> делать из исполняемого в ядре кода, а что нет"? Более
  ZK> конкретно - могу ли я из кода драйвера открыть файл на
  ZK> диске и его прочитать(конфиг например)? Могу ли я
 
 Вообще говоря, нет. Хочешь конфиг - делай вход в /proc куда userlevel
 скрипт будет этот конфиг писать, если тебе не хватает параметров
 командной строки.
  
  ZK> запустить какую-нибудь программу на выполнение? Получить
 
 В принципе - нет, но мне известны исключения. Hапример, при on-demand
 подгрузке модулей при обращении к устройству ядро ухитряется позвать
 modprobe.
 
 Вообще следует исходить из того, что у тебя вообще может не очень быть
 файловая система. Hапример, есть только initrd с единственным
 бинарником, который он же init, он же и основное приложение. Для
 встраиваемых систем - вполне осмысленные setup.
 
 А может быть что поверх ядра работает JVM, а все остальное - уже в этой
 JVM. Как в мотороловских телефонах.
 
 Так что чем меньше странного ты хочешь, тем лучше. 
 
 А по поводу взаимодействия между драйверами, можно посмотреть в
 существующий код каких-нибудь драйверов, образующих стэк. Hапример,
 usb-storage + scsi_mod + sd, или, скажем usb buluetooth, который еще и
 сетевым интерфейсом прикинуться умеет, и на нем ядерный же TCP/IP
 поднимается.
 
  
  ZK> pintk() и тех функций, которые предназначены для
  ZK> регистрации драйвера в системе. А так - там и sys_execve
  ZK> например есть, и sys_write и много чего другого. 
 
 Hу естественно. Это же реализации системных вызовов write(2) и
 execve(2). Которые прикладные программы дергают через врапперы в libc и 
 int 80H.
  
   ZK> P.S. Можно послать в RTFM, только с точным указанием куда
  ZK> именно:) А то в книжке про написание драйверов просто
  ZK> сказано "эти функции доступны", без указания "правил 
  ZK> пользования". Ту фразу можно понять и просто как указание
  ZK> на доступность адресов этих функций в коде ядра - что и
  ZK> так очевидно, потому что из кода драйвера куда угодно
  ZK> залезть можно. 
 
 но не нужно. Hапример, не следует без принятия специальных мер
 предосторожности, лезть из kernel-space по указателю, переданному из
 user-space. А то может та страница, куда этот указатель указывает, уже
 давно отсвопилось. А ядро такой фишки не любит, когда в нем самом page
 fault случается. Оказывается есть специальные функции для копирования
 из/в userspace, и только ими и надо пользоваться. Они проверят что
 userspace буфер подкачан в память.
 -- 
 -- А хак это сделать?
 -- A HREF его знает...
 --- ifmail v.2.15dev5.3
  * Origin: Free Net of Leninsky,45 (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: CorelDraw   Alex Korchmar   20 Dec 2004 16:17:59 
 Re: CorelDraw   Ilya Anfimov   20 Dec 2004 17:19:29 
 драйвер   Zahar Kiselev   20 Dec 2004 17:44:22 
 Re: драйвер   Victor Wagner   20 Dec 2004 20:02:22 
 Re: драйвер   Ilya Anfimov   20 Dec 2004 21:58:28 
 Re: драйвер   Alex Korchmar   21 Dec 2004 01:09:37 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 00:56:30 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 03:16:00 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 05:25:22 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 12:32:21 
 Re: драйвер   Zahar Kiselev   22 Dec 2004 00:04:04 
 Re: драйвер   Zahar Kiselev   20 Dec 2004 22:07:18 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 00:53:17 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 02:49:02 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 12:09:04 
 Re: драйвер   Victor Wagner   21 Dec 2004 01:13:55 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 03:02:16 
 Re: драйвер   Victor Wagner   21 Dec 2004 10:01:58 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 12:17:59 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 22:31:06 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 12:15:53 
 Re: драйвер (Offtopic)   Serg Oskin   20 Dec 2004 20:49:09 
 Re:   Zahar Kiselev   20 Dec 2004 22:41:18 
 Re:   Serg Oskin   21 Dec 2004 13:04:20 
 Re:   Zahar Kiselev   22 Dec 2004 00:09:16 
 Re:   Serg Oskin   22 Dec 2004 16:02:11 
 Re: драйвер   Ilya Anfimov   20 Dec 2004 21:20:14 
 Re: драйвер   Zahar Kiselev   20 Dec 2004 22:47:52 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 01:29:02 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 03:34:48 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 12:26:06 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 23:53:24 
 Re: драйвер   Igor Tihonov   20 Dec 2004 22:42:44 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 00:57:51 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 01:11:16 
 Re: драйвер   Igor Tihonov   21 Dec 2004 19:58:59 
 Re: драйвер   Igor Tihonov   21 Dec 2004 20:05:35 
 Re: драйвер   Ilya Anfimov   21 Dec 2004 22:06:43 
 Re: драйвер   Zahar Kiselev   22 Dec 2004 03:46:22 
 Re: драйвер   slava kozyrev   21 Dec 2004 11:34:50 
 Re: драйвер   Zahar Kiselev   21 Dec 2004 22:19:36 
 Re: CorelDraw   Nick Gazaloff   21 Dec 2004 03:00:14 
 Re: CorelDraw   Peter V. Chernikoff   31 Dec 2004 23:29:54 
Архивное /ru.linux/15178b5490245.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional