LINUX.ORG.RU

обратиться к com порту из модуля


0

1

сабж, собственно.
если коротко - есть железка, которая подключается по usb и в системе выглядит как соm порт. данные, которые по этому порту бегают - обрабатываются в другом модуле ядра.
можно сделать прокладку на userspace, которая занималась бы перегонкой данных, а можно достучаться до com порта напрямую из kernelspace. как это сделать - понятно. но везде почему-то это делать не советуют. почему - не говорят :). может кто-нибудь просветить на эту тему? не очень хочется прокладку городить...

★★

Хочется в принципе задать вопрос, зачем идёт работа с железкой из kernel space?

UVV ★★★★★ ()
Ответ на: комментарий от UVV

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

Vinill ★★ ()
Ответ на: комментарий от Vinill

Пусть меня поправят более знающие люди, но я всё ещё не вижу необходимости пихать это всё в kernel space.

UVV ★★★★★ ()

Попробуйте использовать системные вызовы splice или sendfile. Оверхед копирования пропадёт, остальное (попытки впихнуть прикладную задачу в ядро) - от лукавого.

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

Krieger_Od ★★ ()
Ответ на: комментарий от Vinill

идет взаимодействие двух железок

тогда вообще не понятно - зачем тут мощный процессор и Linux, для таких целей и существуют микроконтроллеры.

anonymous ()
Ответ на: комментарий от UVV

взаимодействуют две железки. одна подключается по usb, в системе видна как com, вторая - плата pci.
между ними идет двусторонний обмен. скорость потока ~ 2.2 МБ в секунду в каждую сторону (в обе ~4.4 МБ). интервал между порциями данных - 1 млс - интервал необходимо выдерживать как можно точнее. данные при передаче изменяются на уровне пары байт в заголовке.
есть сомнение, что при использовании программы переходника на userspace будет выдерживаться интервал передачи данных - машина и так довольно нагружена. при этом на userspace эти данные если кого и интересуют, то только при отладке, т. е. они там не нужны.
если нет никаких подводных камней - хотелось бы обойтись без userspace.

Vinill ★★ ()

Зачем ты хочешь ехать на квадратных колесах?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Vinill

Это не какие-то офигительные цифры. Мне непонятно зачем ты это всё затащил в kernel space. Ставишь RT-патч на ядро и пилишь своё приложение.

Я как-то над LTE работал, так там скорости были 150/75 Мб/с и так же 1 мс фрейм. В kernel space были только драйвера вендора и не более.

UVV ★★★★★ ()
Последнее исправление: UVV (всего исправлений: 1)
Ответ на: комментарий от UVV

ядро, как и дистрибутив уже 100 лет как выбраны и менять их иззя. можно только драйвера, которые пишутся нами.
ладно, попробую через userspace, а там как пойдет :)
и все-таки - чем для kernelspace это плохо-то?

Vinill ★★ ()
Последнее исправление: Vinill (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.