|
О драйверах для юникс на пальцах, На примере сетевого драйвера |
|
|
|
Oct 14 2014, 19:36
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет! Для того чтобы править миром не хватает малой части  Может кто на пальцах, схематично объяснить как устроены драйверы под юниксом? Вот допустим у меня есть какой-нибудь ARM, на нем операционная система юникс. У ARM есть USB, и у меня есть Ethernet <-> USB типа LAN9730. Что надо сделать чтобы можно было создать ТСР сокет который сможет подружиться с миром вокруг через этот езернет? Я так понимаю что где-то в юниксе должен крутиться ТСР стэк и мне надо как-то умудриться входные данные с этого LAN подать в него, а выходные в LAN. А также настроить этот LAN на работу. Или допустим я хочу пошевелить ногами или послать данные через UART. Как это делается? Не обращаться же напрямую в регистры проца из юникса, да это и не возможно как я понимаю. Нужна общая схема, самый самый далек взгляд на систему, максимально популярно. Заранее спасибо!
|
|
|
|
|
 |
Ответов
|
Oct 15 2014, 13:32
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Т.е. написав драйвер для UART-а вы все равно мало что будете понимать в драйверах для Ethernet-а. Потому что это не драйверы, а целые стековые архитектуры с совершенно неповторимыми API между слоями стеков. Понятно, спасибо за разъяснения, я глупо надеялся что есть какая-то логика... А как вы с этим живете? Не лезете на уровень драйверов или уже поднатарели и спокойно в этом ковыряетесь? Цитата Ок, я понял. Если "это скорее самообразование", то сслылочки должны немного расширить познания. Да я читаю, скорее всего это как раз то что мне нужно, правда думал что объемчик будет поменьше  Цитата Правда про андроид там ни слова, но, ИМХО, андроид нужен только в девайсах с графикой и тачскрином. андроид - это надстройка, ява машина над юниксом, хороша тем что под нее меньше людей боятся писать, так что иногда и без экрана он имеет смысл, но все же редко... Цитата Написание драйвера для LCD дисплея под embedded linux Разработка драйвера ведомого SPI устройства для embedded Linux ага спасибо, добавлю в список на прочтение  ... книжками затарился на год вперед чувствую...
|
|
|
|
|
Oct 26 2014, 18:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(Golikov A. @ Oct 15 2014, 17:32)  Понятно, спасибо за разъяснения, я глупо надеялся что есть какая-то логика... А как вы с этим живете? Не лезете на уровень драйверов или уже поднатарели и спокойно в этом ковыряетесь? Я, имея солидный опыт в электронике и программировании микропроцессоров, "лез" на уровень драйверов Линукса несколько лет. Не скажу, что все время этим занимался, но изучал в свободное время. Там надо понимать что такое ядро. Уметь его компилировать, знать как его конфигурировать. Знать как устроена структура исходников ядра. Где расположены файлы платы и мого многое другое, что явно не относится к написанию драйвера. Если на пальцах, то ответ получится точный, но бессмысленный. Драйвер в Линух (Юних) это код, который бежит в пространстве ядра и имеет интерфейс доступа файла. Написав соответствующим образом функции read/write, вы, читая этот файл или записывая в него будете обмениваться данными с вашим устройством. Вот эти книжки (их можно скачать из сети) помогут вам разобраться в дополнительных знаниях вокруг драйверов Линукса. http://www.amazon.ca/Embedded-Linux-Primer...d/dp/0131679848http://www.kroah.com/lkn/А на этом сайте можно найти много интересной информации. http://free-electrons.com/Цитата(SM @ Oct 17 2014, 19:18)  Через I2C можно тоже работать из юзер моды. Через SPI, вроде, тоже. I2S (не ошиблись??) это уже прерогатива аудио-подсистемы. Написать драйвер SPI или I2C-устройства - это элементарщина (см. для примера драйвера в input разных клавиатурных микрух.) Но, повторюсь, через эти интерфейсы можно работать и из юзер-моды через драйвера SPI или I2C мастеров. Уточнение. В Линукс системе как правило уже есть драйвры SPI и I2C, которыми можно воспользоваться без написания специального драйвера, но также можно и написать драйвер для доступа к определенному устройству на указанных шинах. В документации ядра есть пример доступа к таким устройствам без написания драйвера: https://www.kernel.org/doc/Documentation/i2c/dev-interfaceДокументация на I2C https://www.kernel.org/doc/Documentation/i2c/Документация на SPI https://www.kernel.org/doc/Documentation/spi/Документация на все ядро https://www.kernel.org/doc/DocumentationЦитата(gerber @ Oct 17 2014, 21:38)  Вот когда после загрузки вашего драйвера в систему что-то пойдёт не так - вот тогда и будет место подвигу. А оно обязательно будет! rolleyes.gif 100%
Сообщение отредактировал Tarbal - Oct 26 2014, 18:07
|
|
|
|
Сообщений в этой теме
Golikov A. О драйверах для юникс на пальцах Oct 14 2014, 19:36 Lagman http://dchekmarev.ru/blog/article/1252939707 Oct 15 2014, 09:37 Dubov Цитата(Lagman @ Oct 15 2014, 13:37) http:... Oct 15 2014, 10:08  AlexandrY Цитата(Dubov @ Oct 15 2014, 13:08) Касате... Oct 15 2014, 10:44 Golikov A. что-то я не настолько просветлен... можно чуть бол... Oct 15 2014, 10:00 Golikov A. Незнание другого человека вызывает приступы сарказ... Oct 15 2014, 11:29 samike Цитата(Golikov A. @ Oct 15 2014, 15:29) Т... Oct 15 2014, 12:06 AlexandrY Цитата(Golikov A. @ Oct 15 2014, 14:29) Т... Oct 15 2014, 12:59 Golikov A. 1 - да наверное. Я их путаю, наверное линукс
2 - с... Oct 15 2014, 12:45 samike Ок, я понял.
Если "это скорее самообразование... Oct 15 2014, 12:57 Harvester Цитата(Golikov A. @ Oct 15 2014, 16:45) Ж... Oct 15 2014, 13:30 krux если совсем на пальцах, то USB kernel API с одной ... Oct 15 2014, 17:23 Golikov A. понятно дело что как работает железка - это извест... Oct 15 2014, 19:23 krux я к сожалению не знаю что за RNDIS - это по моему ... Oct 15 2014, 19:57 Golikov A. изначально да виндовое, но есть мнение что некотор... Oct 16 2014, 05:01 AlexandrY Цитата(Golikov A. @ Oct 16 2014, 08:01) и... Oct 16 2014, 07:20  krux Цитата(AlexandrY @ Oct 16 2014, 11:20) Ба... Oct 16 2014, 09:44 Golikov A. И что делать? Брать готовые сборки от производител... Oct 16 2014, 09:31 samike Цитата(Golikov A. @ Oct 16 2014, 13:31) Г... Oct 16 2014, 11:01 Golikov A. а закрытую часть то откуда брать? На просторах инт... Oct 16 2014, 12:39 samike Вы как-то беспокоитесь до появления предмета беспо... Oct 16 2014, 12:49 Golikov A. Я пытаюсь собрать полную картину. Это так называем... Oct 16 2014, 13:16 SM Полная картина тут заключается в том, что, в подав... Oct 16 2014, 15:14 Golikov A. ага спасибо, вот читаю, вникаю. Ближе к делу появя... Oct 16 2014, 16:14 SM Цитата(Golikov A. @ Oct 16 2014, 20:14) Б... Oct 16 2014, 17:23 Golikov A. да я пока про ядро и архитектуру читаю применитель... Oct 16 2014, 18:52 SM Драйверы в линукс являются частью ядра, и имеют вс... Oct 17 2014, 07:28 Golikov A. то есть добавление драйвера - это всегда модификац... Oct 17 2014, 09:00 SM Не, я же писал - есть ДВА способа. Первый - собрат... Oct 17 2014, 09:16 Golikov A. у меня 2 варианта
либо через usb в ethernet, и на... Oct 17 2014, 10:45 mdmitry Цитата(Golikov A. @ Oct 17 2014, 14:45) у... Oct 17 2014, 10:50 SM Цитата(Golikov A. @ Oct 17 2014, 14:45) л... Oct 17 2014, 15:18 Golikov A. спасибо Oct 17 2014, 10:59 Golikov A. I2S там какой-то аудио выход что ли...
А SPI чуть ... Oct 17 2014, 17:12 gerber Цитата(Golikov A. @ Oct 17 2014, 21:12) т... Oct 17 2014, 17:38 SM Цитата(Golikov A. @ Oct 17 2014, 21:12) А... Oct 17 2014, 18:53 Golikov A. понятно, спасибо на добром слове Oct 17 2014, 19:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|