Golikov 0 14 октября, 2014 Опубликовано 14 октября, 2014 · Жалоба Всем привет! Для того чтобы править миром не хватает малой части :) Может кто на пальцах, схематично объяснить как устроены драйверы под юниксом? Вот допустим у меня есть какой-нибудь ARM, на нем операционная система юникс. У ARM есть USB, и у меня есть Ethernet <-> USB типа LAN9730. Что надо сделать чтобы можно было создать ТСР сокет который сможет подружиться с миром вокруг через этот езернет? Я так понимаю что где-то в юниксе должен крутиться ТСР стэк и мне надо как-то умудриться входные данные с этого LAN подать в него, а выходные в LAN. А также настроить этот LAN на работу. Или допустим я хочу пошевелить ногами или послать данные через UART. Как это делается? Не обращаться же напрямую в регистры проца из юникса, да это и не возможно как я понимаю. Нужна общая схема, самый самый далек взгляд на систему, максимально популярно. Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба http://dchekmarev.ru/blog/article/1252939707 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба что-то я не настолько просветлен... можно чуть более подробно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба http://dchekmarev.ru/blog/article/1252939707 какое это имеет отношение к драйверам unix-систем? Касательно драйверов могу посоветовать почитать книгу "Linux device drivers". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Касательно драйверов могу посоветовать почитать книгу "Linux device drivers". В целом бестолковая книга. Более практичная - "Essential Linux Device Drivers" Но даже в ней нет упоминания RNDIS который нужен для USB-Ethernet адаптеров Так что правы те у кого такие вопросы вызывают приступы немотивированного сарказма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Незнание другого человека вызывает приступы сарказма только у недалеких людей. Я рано или поздно узнаю, а они такими и останутся;) По сути вопроса. Очевидно что за 1 тему на форуме невозможно научиться писать драйвера, а главное что сейчас это и не требуется. Ближайшей моей задачей является понимание их работы, понимание того как идут данные. AlexandrY - судя по соседним темам вы искушенный в потрохах операционок человек, и хотелось бы рассчитывать на вашу помощь в этом вопросе. Вопрос же не в конкретном переходнике USB-Ethernet. В это же USB может быть воткнут GPS приемник или еще что-то. А на юниксе сверху может стоять андроид с его классами работы с GPS или чем-то еще. И мне хочется понять как так делают что все срастается... Ведь не могли же люди писавшие яву машину предусмотреть все варианты устройств подключаемых к портам и так далее, а тем не менее оно все как-то работает... Так что если можно без немотивированного сарказма, максимально упрощенно как все работает? А правильно я понимаю что если RNDIS поддержан в операционке (говорим про юникс), то достаточно сделать USB устройство с правильным протоколом, и данные с него пойдут в ТСР? То есть USB-WiFi может работать по тому же принципу, и в целом может быть даже какой то USB-RS485, на котором так же можно будет поднять ТСР сеть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadmix 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Так что если можно без немотивированного сарказма, максимально упрощенно как все работает? Слишком общие вопросы задаете, сложно отвечать :) Попробуем конкретизировать: 1. может все-таки не unix, а linux? :) 2. у вас уже имется какое-то устройство (или отладочная плата) на ARM9 с установленным linux или вы пока просто фантазируете на тему? 3. сразу стремитесь познать драйвера, а есть ли опыт разработки по linux? простой опыт работы с linux? 4. наверняка у вас есть конкретная аппаратно/программная задача, может обрисуете? По сути вопроса. Ближайшей моей задачей является понимание их работы, понимание того как идут данные. Боюсь, что на пальцах вам здесь не расскажут. По встраиваемому линуксу можно почитать например здесь или здесь. По драйверам здесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба 1 - да наверное. Я их путаю, наверное линукс 2 - скорее фантазирую, вероятнее всего будет что-то типа odroid-u3 3 - Работа на настольных компутерах, очень базовое представление. И я даже не столько стремлюсь познать драйвер. Я прекрасно знаю как пошевелить ножками ARM вообще и в целом, то есть как работает проц, периферия, но я хочу понять принципы работы с железом из линукса, именно с начинкой проца. 4 - Та задача которая есть это скорее самообразование, хочется продвинутся в вопросах "взрослых-распространенных-пользовательских" операционок под железо. Хочу попробовать подтянуть железо под андроид, который в базе ядро юникса-линукса не знаю кого там... Боюсь, что на пальцах вам здесь не расскажут. Жаль. Мне надо в общих чертах чтобы хотя бы понимать какие вопросы надо задавать. За ссылочки спасибо, поизучаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadmix 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Ок, я понял. Если "это скорее самообразование", то сслылочки должны немного расширить познания. Правда про андроид там ни слова, но, ИМХО, андроид нужен только в девайсах с графикой и тачскрином. Обычно можно обойтись линуксом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Так что если можно без немотивированного сарказма, максимально упрощенно как все работает? А правильно я понимаю что если RNDIS поддержан в операционке (говорим про юникс), то достаточно сделать USB устройство с правильным протоколом, и данные с него пойдут в ТСР? То есть USB-WiFi может работать по тому же принципу, и в целом может быть даже какой то USB-RS485, на котором так же можно будет поднять ТСР сеть? Я же говорю внятной документации на реализацию RNDIS в линуксе нет. Там все архаично и безсистемно. В трех же словах описать принцип построения и взаимодействия драйверов нереально. А я уже кучу слов написал. Это по тому, что драйвера для разных физических интерфейсов различаются на столько, что почти бессмысленно искать в них что-то общее. Общие там только самые абстрактные вещи типа стековой структуры, блочной или поточной передачи и т.п. Т.е. написав драйвер для UART-а вы все равно мало что будете понимать в драйверах для Ethernet-а. Потому что это не драйверы, а целые стековые архитектуры с совершенно неповторимыми API между слоями стеков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Жаль. Мне надо в общих чертах чтобы хотя бы понимать какие вопросы надо задавать. За ссылочки спасибо, поизучаю. Посмотрите еще: Написание драйвера для LCD дисплея под embedded linux Разработка драйвера ведомого SPI устройства для embedded Linux Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба Т.е. написав драйвер для UART-а вы все равно мало что будете понимать в драйверах для Ethernet-а. Потому что это не драйверы, а целые стековые архитектуры с совершенно неповторимыми API между слоями стеков. Понятно, спасибо за разъяснения, я глупо надеялся что есть какая-то логика... А как вы с этим живете? Не лезете на уровень драйверов или уже поднатарели и спокойно в этом ковыряетесь? Ок, я понял. Если "это скорее самообразование", то сслылочки должны немного расширить познания. Да я читаю, скорее всего это как раз то что мне нужно, правда думал что объемчик будет поменьше:) Правда про андроид там ни слова, но, ИМХО, андроид нужен только в девайсах с графикой и тачскрином. андроид - это надстройка, ява машина над юниксом, хороша тем что под нее меньше людей боятся писать, так что иногда и без экрана он имеет смысл, но все же редко... Написание драйвера для LCD дисплея под embedded linux Разработка драйвера ведомого SPI устройства для embedded Linux ага спасибо, добавлю в список на прочтение:)... книжками затарился на год вперед чувствую... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба если совсем на пальцах, то USB kernel API с одной стороны и NETLINK kernel API с другой. а как вы этот драйвер писать будете - зависит от возможностей, заложенных непосредственно в чип, алгоритм строится под конкретную железку. т.е. без детальной документации на него не обойтись. И, если в документации на чип алгоритм не описан, - то ещё плюс немного смекалки и фантазии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба понятно дело что как работает железка - это известно. А сам драйвер - это фактически процесс который крутиться и пихает данные при помощи этих API? А как получать запросы от ТСР стэека которые надо в USB передать? Обработка колбэков или можно как-то событие зарегистрировать или как это в линуксе называется? А ведь еще надо как то сказать что Сокету что они именно через ваш драйвер наружу должны стучаться, то есть как-то сделать этот EthX через который полезут данные... Я так понимаю RNDIS примерно этим и занимается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 15 октября, 2014 Опубликовано 15 октября, 2014 · Жалоба я к сожалению не знаю что за RNDIS - это по моему что-то виндовое. да, через NETLINK можно EthX зарегистрировать. http://free-electrons.com/doc/training/lin...rnel-slides.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться