Исправлено назначение устройств tty для SPI -Адаптеры UART в ОС Linux/Raspberry Pi

Вы можете заменить вместо chrв начале третьего поля пустой строкой:

awk '{ sub(/^chr/,"",$3); print $2,$3,$5,$6 }' file
0
16.11.2021, 06:57
1 ответ

Итак... Я сам нашел решение.

Жаль, что решение нельзя обобщить, так как оно заключается в том, чтобы "узнать, как работают udev и rules.d".

Суть заключалась в том, чтобы узнать все возможные подробности об устройствах, используя команду (, как это было предложено в статье, которую я упоминал в своем вопросе):

udevadm info -a -p  $(udevadm info -q path -n /dev/ttySC0)

затем определить, какие параметры можно использовать для однозначного поиска аппаратного описания этого устройства и создания правила для него в одном из файлов в /etc/udev/rules.d .

Я лично использовал это руководство, чтобы узнать все, что я знаю о udev и rules.d:

Написание правил udev

Подводя итог, вы должны использовать параметры, чтобы найти аппаратное обеспечение, а затем использовать либо ИМЯ, либо СИМВОЛИЧЕСКУЮ ССЫЛКУ, чтобы дать ему новое имя или просто псевдоним.

Наиболее часто используемые ключевые слова для поиска подходящего оборудования::

ACTION==""-"Это правило применяется, если это устройство подключено/отключено"

KERNEL=="<значение>"-"Найти устройство с <значением> в поле KERNEL"

SUBSYSTEM==""-"Найти устройство с в поле SUBSYSTEM"

DRIVER==""-"Найти устройство с в поле DRIVER"

ATTR{}==""-"Найти устройство с атрибутом и значением "

Вы также можете использовать множественное число для всех этих ключевых слов, кроме ДЕЙСТВИЯ (ЯДРА, ПОДСИСТЕМЫ, ДРАЙВЕРЫ, ATTRS ), если вы хотите проверить совпадение либо с устройством, либо со всеми его родительскими устройствами.

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

После правильного обнаружения вашего устройства,последним разделом вашего правила должно быть наименование/символическая ссылка:

NAME=""-"Присвоить найденному устройству это новое имя (, уничтожив предыдущее )"

SYMLINK+=""-"Дать найденному устройству альтернативное имя (с сохранением предыдущего)

В качестве примера я буду использовать правила, которые мне пришлось создать:

KERNELS=="spi0.0", SUBSYSTEM=="tty", ATTR{line}=="0", DRIVERS=="sc16is7xx", ACTION=="add", SYMLINK+="plSerial"
KERNELS=="spi0.0", SUBSYSTEM=="tty", ATTR{line}=="2", DRIVERS=="sc16is7xx", ACTION=="add", SYMLINK+="plSerial"
KERNELS=="spi1.0", SUBSYSTEM=="tty", ATTR{line}=="0", DRIVERS=="sc16is7xx", ACTION=="add", SYMLINK+="mdSerial"
KERNELS=="spi1.0", SUBSYSTEM=="tty", ATTR{line}=="2", DRIVERS=="sc16is7xx", ACTION=="add", SYMLINK+="mdSerial"

Человеческими словами говорят:

«Если tty-устройство использует порт spi0.0 и имеет имя 0 или 2 (, что означает, что это либо ttySC0, либо ttySC2 ), оно теперь также называется plSerial»

«Если tty-устройство использует порт spi1.0 и имеет имя 0 или 2 (, что означает, что это либо ttySC0, либо ttySC2 ), оно теперь также называется mdSerial»

Это означает, что spi0.0 всегда будет известен как plSerial, а spi1.0 всегда будет известен как mdSerial.

После написания правил используйте udevadm triggerили перезагрузите систему, и ваши правила будут применены. Новые устройства будут найдены в /dev/<ваше _имя устройства _> .

0
24.11.2021, 08:14

Теги

Похожие вопросы