реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
Golikov A.
сообщение Oct 14 2014, 19:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Всем привет! Для того чтобы править миром не хватает малой части sm.gif
Может кто на пальцах, схематично объяснить как устроены драйверы под юниксом?

Вот допустим у меня есть какой-нибудь ARM, на нем операционная система юникс. У ARM есть USB, и у меня есть Ethernet <-> USB типа LAN9730.

Что надо сделать чтобы можно было создать ТСР сокет который сможет подружиться с миром вокруг через этот езернет?
Я так понимаю что где-то в юниксе должен крутиться ТСР стэк и мне надо как-то умудриться входные данные с этого LAN подать в него, а выходные в LAN. А также настроить этот LAN на работу.

Или допустим я хочу пошевелить ногами или послать данные через UART. Как это делается? Не обращаться же напрямую в регистры проца из юникса, да это и не возможно как я понимаю.

Нужна общая схема, самый самый далек взгляд на систему, максимально популярно.

Заранее спасибо!
Go to the top of the page
 
+Quote Post
Lagman
сообщение Oct 15 2014, 09:37
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



http://dchekmarev.ru/blog/article/1252939707
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 15 2014, 10:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



что-то я не настолько просветлен... можно чуть более подробно?
Go to the top of the page
 
+Quote Post
Dubov
сообщение Oct 15 2014, 10:08
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(Lagman @ Oct 15 2014, 13:37) *

какое это имеет отношение к драйверам unix-систем?

Касательно драйверов могу посоветовать почитать книгу "Linux device drivers".
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 15 2014, 10:44
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Dubov @ Oct 15 2014, 13:08) *
Касательно драйверов могу посоветовать почитать книгу "Linux device drivers".


В целом бестолковая книга.
Более практичная - "Essential Linux Device Drivers"

Но даже в ней нет упоминания RNDIS который нужен для USB-Ethernet адаптеров

Так что правы те у кого такие вопросы вызывают приступы немотивированного сарказма.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 15 2014, 11:29
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Незнание другого человека вызывает приступы сарказма только у недалеких людей. Я рано или поздно узнаю, а они такими и останутсяwink.gif

По сути вопроса. Очевидно что за 1 тему на форуме невозможно научиться писать драйвера, а главное что сейчас это и не требуется. Ближайшей моей задачей является понимание их работы, понимание того как идут данные.

AlexandrY - судя по соседним темам вы искушенный в потрохах операционок человек, и хотелось бы рассчитывать на вашу помощь в этом вопросе.

Вопрос же не в конкретном переходнике USB-Ethernet. В это же USB может быть воткнут GPS приемник или еще что-то. А на юниксе сверху может стоять андроид с его классами работы с GPS или чем-то еще. И мне хочется понять как так делают что все срастается... Ведь не могли же люди писавшие яву машину предусмотреть все варианты устройств подключаемых к портам и так далее, а тем не менее оно все как-то работает...

Так что если можно без немотивированного сарказма, максимально упрощенно как все работает?


А правильно я понимаю что если RNDIS поддержан в операционке (говорим про юникс), то достаточно сделать USB устройство с правильным протоколом, и данные с него пойдут в ТСР? То есть USB-WiFi может работать по тому же принципу, и в целом может быть даже какой то USB-RS485, на котором так же можно будет поднять ТСР сеть?
Go to the top of the page
 
+Quote Post
samike
сообщение Oct 15 2014, 12:06
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 12-04-06
Из: Москва
Пользователь №: 16 039



Цитата(Golikov A. @ Oct 15 2014, 15:29) *
Так что если можно без немотивированного сарказма, максимально упрощенно как все работает?


Слишком общие вопросы задаете, сложно отвечать sm.gif
Попробуем конкретизировать:
1. может все-таки не unix, а linux? sm.gif
2. у вас уже имется какое-то устройство (или отладочная плата) на ARM9 с установленным linux или вы пока просто фантазируете на тему?
3. сразу стремитесь познать драйвера, а есть ли опыт разработки по linux? простой опыт работы с linux?
4. наверняка у вас есть конкретная аппаратно/программная задача, может обрисуете?

Цитата(Golikov A. @ Oct 15 2014, 15:29) *
По сути вопроса. Ближайшей моей задачей является понимание их работы, понимание того как идут данные.


Боюсь, что на пальцах вам здесь не расскажут.

По встраиваемому линуксу можно почитать например здесь или здесь.
По драйверам здесь.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 15 2014, 12:45
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



1 - да наверное. Я их путаю, наверное линукс
2 - скорее фантазирую, вероятнее всего будет что-то типа odroid-u3
3 - Работа на настольных компутерах, очень базовое представление. И я даже не столько стремлюсь познать драйвер. Я прекрасно знаю как пошевелить ножками ARM вообще и в целом, то есть как работает проц, периферия, но я хочу понять принципы работы с железом из линукса, именно с начинкой проца.
4 - Та задача которая есть это скорее самообразование, хочется продвинутся в вопросах "взрослых-распространенных-пользовательских" операционок под железо. Хочу попробовать подтянуть железо под андроид, который в базе ядро юникса-линукса не знаю кого там...


Цитата
Боюсь, что на пальцах вам здесь не расскажут.

Жаль. Мне надо в общих чертах чтобы хотя бы понимать какие вопросы надо задавать. За ссылочки спасибо, поизучаю.

Go to the top of the page
 
+Quote Post
samike
сообщение Oct 15 2014, 12:57
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 12-04-06
Из: Москва
Пользователь №: 16 039



Ок, я понял.
Если "это скорее самообразование", то сслылочки должны немного расширить познания.
Правда про андроид там ни слова, но, ИМХО, андроид нужен только в девайсах с графикой и тачскрином. Обычно можно обойтись линуксом.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 15 2014, 12:59
Сообщение #10


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Golikov A. @ Oct 15 2014, 14:29) *
Так что если можно без немотивированного сарказма, максимально упрощенно как все работает?


А правильно я понимаю что если RNDIS поддержан в операционке (говорим про юникс), то достаточно сделать USB устройство с правильным протоколом, и данные с него пойдут в ТСР? То есть USB-WiFi может работать по тому же принципу, и в целом может быть даже какой то USB-RS485, на котором так же можно будет поднять ТСР сеть?


Я же говорю внятной документации на реализацию RNDIS в линуксе нет. Там все архаично и безсистемно.

В трех же словах описать принцип построения и взаимодействия драйверов нереально.
А я уже кучу слов написал. biggrin.gif

Это по тому, что драйвера для разных физических интерфейсов различаются на столько, что почти бессмысленно искать в них что-то общее.
Общие там только самые абстрактные вещи типа стековой структуры, блочной или поточной передачи и т.п.

Т.е. написав драйвер для UART-а вы все равно мало что будете понимать в драйверах для Ethernet-а.
Потому что это не драйверы, а целые стековые архитектуры с совершенно неповторимыми API между слоями стеков.
Go to the top of the page
 
+Quote Post
Harvester
сообщение Oct 15 2014, 13:30
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Цитата(Golikov A. @ Oct 15 2014, 16:45) *
Жаль. Мне надо в общих чертах чтобы хотя бы понимать какие вопросы надо задавать. За ссылочки спасибо, поизучаю.

Посмотрите еще:
Написание драйвера для LCD дисплея под embedded linux
Разработка драйвера ведомого SPI устройства для embedded Linux


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 15 2014, 13:32
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Т.е. написав драйвер для UART-а вы все равно мало что будете понимать в драйверах для Ethernet-а.
Потому что это не драйверы, а целые стековые архитектуры с совершенно неповторимыми API между слоями стеков.

Понятно, спасибо за разъяснения, я глупо надеялся что есть какая-то логика... А как вы с этим живете? Не лезете на уровень драйверов или уже поднатарели и спокойно в этом ковыряетесь?

Цитата
Ок, я понял.
Если "это скорее самообразование", то сслылочки должны немного расширить познания.

Да я читаю, скорее всего это как раз то что мне нужно, правда думал что объемчик будет поменьшеsm.gif

Цитата
Правда про андроид там ни слова, но, ИМХО, андроид нужен только в девайсах с графикой и тачскрином.

андроид - это надстройка, ява машина над юниксом, хороша тем что под нее меньше людей боятся писать, так что иногда и без экрана он имеет смысл, но все же редко...



Цитата
Написание драйвера для LCD дисплея под embedded linux
Разработка драйвера ведомого SPI устройства для embedded Linux


ага спасибо, добавлю в список на прочтениеsm.gif...
книжками затарился на год вперед чувствую...
Go to the top of the page
 
+Quote Post
krux
сообщение Oct 15 2014, 17:23
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



если совсем на пальцах, то USB kernel API с одной стороны и NETLINK kernel API с другой.
а как вы этот драйвер писать будете - зависит от возможностей, заложенных непосредственно в чип, алгоритм строится под конкретную железку.
т.е. без детальной документации на него не обойтись. И, если в документации на чип алгоритм не описан, - то ещё плюс немного смекалки и фантазии.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 15 2014, 19:23
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



понятно дело что как работает железка - это известно. А сам драйвер - это фактически процесс который крутиться и пихает данные при помощи этих API? А как получать запросы от ТСР стэека которые надо в USB передать? Обработка колбэков или можно как-то событие зарегистрировать или как это в линуксе называется? А ведь еще надо как то сказать что Сокету что они именно через ваш драйвер наружу должны стучаться, то есть как-то сделать этот EthX через который полезут данные...

Я так понимаю RNDIS примерно этим и занимается?
Go to the top of the page
 
+Quote Post
krux
сообщение Oct 15 2014, 19:57
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



я к сожалению не знаю что за RNDIS - это по моему что-то виндовое.

да, через NETLINK можно EthX зарегистрировать.

http://free-electrons.com/doc/training/lin...rnel-slides.pdf


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd July 2025 - 23:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016