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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> О драйверах для юникс на пальцах, На примере сетевого драйвера
Golikov A.
сообщение Oct 16 2014, 05:01
Сообщение #16


Гуру
******

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



изначально да виндовое, но есть мнение что некоторые линуксы-юниксы его имеют в комплекте, потому что он через USB и больше стандарт USB задает. Как я понял...

спасибо за ссылочку
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 16 2014, 07:20
Сообщение #17


Ally
******

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



Цитата(Golikov A. @ Oct 16 2014, 08:01) *
изначально да виндовое, но есть мнение что некоторые линуксы-юниксы его имеют в комплекте, потому что он через USB и больше стандарт USB задает. Как я понял...

спасибо за ссылочку


Бардак там полный.
Например плата BeagleBone очень хорошо работает с сетью через USB, но для этого использует не RNDIS, а некий пакет драйверов Windows Driver Package - Linux Developer Community Net
Но подите найтиде исходники этих драйверов.

Какой смысл придерживаться структуры драйверов в этой архаичной системе?
Борьба за стандарт драйверов в линуксе вижу идет нешуточная и вовсю используются закрытые исходники.

И как вы думаете продвинуться в изучении этих технологий?
Все что остается в открытом линуксе это играться с UART-ми, I2C, SPI и прочей мелочью.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 16 2014, 09:31
Сообщение #18


Гуру
******

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



И что делать? Брать готовые сборки от производителя плат?
Я чет думал что по уму надо было бы сделать свои драйверы под нужные задачи. Но как понимаю это неподъемная задача в разумные сроки.

То есть если решили на платке поднять линукс. То берем платку для этого сделанную, берем линукс который рекомендует тот кто ее сделал, и максимум что делаем дописываем шевеление ногами? Грустно все как-то.

Помниться вы в одной теме писали что не факт что в таком линуксе (от производителя) будет вся периферия, в частности тогда речь шла об RTC. И что в этом случае делать? В какой то момент все равно надо будет писать свой драйвер. Или протянуть периферию в свое приложение легче, чем загнать данные в стандартный стэк?

Или это все к тому что надо вместо линукса ставить другие оси для процов и не придумывать?
Go to the top of the page
 
+Quote Post
krux
сообщение Oct 16 2014, 09:44
Сообщение #19


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

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



Цитата(AlexandrY @ Oct 16 2014, 11:20) *
Бардак там полный.
...................................
Все что остается в открытом линуксе это играться с UART-ми, I2C, SPI и прочей мелочью.

расскажите это интелу.

PCIe сетёвка х540
даташит: http://www.intel.com/content/dam/www/publi...0-datasheet.pdf
там алгоритм работы расписан весь.
и драйвер в mainline - ixgbe_x540.c
и где там что закрыто/засекречено?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
samike
сообщение Oct 16 2014, 11:01
Сообщение #20


Участник
*

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



Цитата(Golikov A. @ Oct 16 2014, 13:31) *
Грустно все как-то.


Не грустите.
Уважаемый AlexandrY зачастую весьма категоричен в своих суждениях sm.gif
Покупаете платочку, ставите на нее линукс и делаете все, что хотите (или почти все).
Безусловно, есть какие-то закрытые вещи. Но я, за свои 4 года подобной работы, успешно решал поставленные задачи, не сталкиваясь или обходя закрытые места.

Сообщение отредактировал samike - Oct 16 2014, 11:03
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 16 2014, 12:39
Сообщение #21


Гуру
******

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



а закрытую часть то откуда брать? На просторах интернета? А они кривыми не бывают? А если кривые то не переделать?
Go to the top of the page
 
+Quote Post
samike
сообщение Oct 16 2014, 12:49
Сообщение #22


Участник
*

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



Вы как-то беспокоитесь до появления предмета беспокойства sm.gif
Или что-то скрываете sm.gif
Появится задача, начнете ее решать, там видно будет. А здесь вам подскажут и по железу под вашу задачу, и по софту.
Не переживайте.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 16 2014, 13:16
Сообщение #23


Гуру
******

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



Я пытаюсь собрать полную картину. Это так называемые вероятные ответы на вероятные вопросыsm.gif. Пытаюсь собрать весь рабочий процесс с ответвлениями.
Надо подчитать много чего, когда плата придет уже беспокоится будет поздно...
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 16 2014, 15:14
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Полная картина тут заключается в том, что, в подавляющем большинстве, некие похожие драйверы имеются где-либо на просторах сети, и имеют примерно единообразное форматирование кода и принцип комментирования. В результате, найдя пару-тройку исходников "вроде как около по теме", и посидев с ними часов так 48...96, вполне можно родить свой драйвер, выполняющий нужные по ТЗ функции (конечно, время может и сильно увеличиться от объема реальных работ).

И забудьте о "стандартизации" в линуксе. Стандартизация - это путь к неадекватному пожиранию ресурса и к лишним, никому не нужным, кроме "стандартизаторов" расходам. К притмеру, именно поэтому Windows XP до сих пор живее всех живых, несмотря на то, что труп уже, а windows-8/9/10/e.t.c. удел поставщиков новых систем, где выбора нет, и зомбированных микрософтом пользователей. Линукс тем и хорош, что необходимый минимум функциональности делается достаточно просто и относительно быстро - главное, потратить несколько ночей на то, чтобы вникнуть, что там в ядре к чему. Дальше все вопросы сами отпадут.

И начинать надо не с NDIS/USB, а с чего попроще - с дрыганья ногой (ну или считывания какого нибудь регистра) через I2C например. Ну а там, потом, чем дальше в лес, тем толще партизаны...

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

UPD:
Ну, и, это... Если Вы дока в написании драйверов под windows - то забудьте, все, что знаете... Никаких IRP там нет, и ничего похожего тоже... Есть просто вызов функций, прямой. И Вы можете вызвать любую функцию ядра линукса, или другого драйвера, от которого зависите. То есть, все просто, понятно и прозрачно - все ядро - это, как бы, единая программа, внутри которой можно вызвать любую функцию (экспортированную, естественно) любого модуля. То есть вся организация всех очередей запросов - чисто на Вашей совести.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 16 2014, 16:14
Сообщение #25


Гуру
******

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



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


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Golikov A. @ Oct 16 2014, 20:14) *
Ближе к делу появятся, наверное, конкретные вопросы, пока читаем докиsm.gif

В данном, конкретном случае, доки (ну кроме базовых спецификаций), скорее запутают мозг, чем помогут. Так как, как правило, эти самые "доки", касающиеся работы того или иного драйвера линукс, гораздо сложнее в понимании, чем, собственно, исходники этого драйвера sm.gif sm.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 16 2014, 18:52
Сообщение #27


Гуру
******

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



да я пока про ядро и архитектуру читаю применительно не к х86, как этот всеми любимый микробут работает и так далее...

интересно мне, если обращение к ядру через прямые функции, то должны быть заголовочные файлы, и какие-то аля либы... И как обратные вызовы идут от ядра в драйвер, надо где-то калбеки регистрировать видать... Это я еще опускаю вопросы виртуализации памяти... ладно может дальше будет ясно, когда про связку ядра и приложений буду читать...
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 17 2014, 07:28
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Драйверы в линукс являются частью ядра, и имеют все права наравне со всем остальным ядром - таким образом любая часть ядра может использовать любую функцию любой другой части ядра - оно все единое целое. Callback-и регистрируются обычным прямым вызовом функций, регистрирующих Callback - как пример, request_irq (регистрирует Callback обработчика прерывания), макросы INIT_WORK, INIT_DELAYED_WORK, ну и т.п.

Заголовочные файлы, естественно, все есть, include/linux/...... в ядре, но для сборки дров они и отдельно существуют.

Либы... Либов, как таковых нет. Драйвер можно собрать и статически в ядро вместе с ядром (обычно выгодно для embedded систем) - тогда оно линкуется в процессе сборки ядра сразу со всем ядром, и как модуль, который динамически линкуется в ядро во время загрузки - тогда используется информация о символах ядра, полученная при сборке ядра. Поэтому под каждое ядро каждой конфигурации и версии требуется сборка драйверов из исходников. И, опять же, поэтому, все драйвера поставляются всегда в виде исходных текстов (некоторые архивированные в некий бандл вместе со скриптом сборки, как например, NVIDIA, но по любому - исходники)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 17 2014, 09:00
Сообщение #29


Гуру
******

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



то есть добавление драйвера - это всегда модификация ядра? Интересно, то есть к готовому ядру ничего добавить нельзя, надо его пересобирать?

Интересно как работает NDK для андроида, которая позволяет дописывать низкоуровневые части работы с железом проца и вроде не ломает ядро, может там правда уже в ядре ответная часть прописана как то....
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 17 2014, 09:16
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Не, я же писал - есть ДВА способа. Первый - собрать статически вместе с ядром, он предпочтителен для ембеддед решений (быстрее загрузка, меньше файлов). Второй - собрать в виде внешнего модуля ядра, потом modprobe его прилинкует уже динамически. Но принципиальной разницы при написании драйвера никакой - это просто два варианта его сборки.

Но, собирая в виде внешнего модуля, потребуется его компиляция для разных ядер каждый раз своя. Не пересборка всего ядра (как при сборке статически), но пересборка модуля драйвера.

UPD:

Если Вы делаете USB-девайс, то, возможно, Вам не надо вообще в ядро лезть, работайте в юзер моде через libusb/libusbx, по крайней мере мне этого хватало пока для USB-устройств.
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 Текстовая версия Сейчас: 16th June 2025 - 02:42
Рейтинг@Mail.ru


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