LINUX.ORG.RU

Как создать файл устройства в /dev

 , , ,


0

2

Всем привет!

Я пытаюсь запустить второй UART на плате Banana-Pi M5. Первый UART (ttyAML0) используется для подключения к терминалу. А второй UART выведен на гребенку. Плата работает под управлением Armbian.

Вот есть такая статья с описанием точно такой же проблемы: Сюда!

Я сделал все как написано:

1. Скопировал meson-uartA.dts в папку /root/meson-uartA.dts

2. Вызвал: sudo armbian-add-overlay /root/meson-uartA.dts

3. Отредактировал: sudo nano /boot/armbianEnv.txt, добавив

user_overlays=meson-uartA

4. Сам файл meson-uartA.dts взял из статьи:

/dts-v1/;
/plugin/;

/ {
    compatible = "amlogic,meson-gxbb";

    fragment@0 {
        target-path = "/soc/bus@ff600000/bus@34400/pinctrl@40"; /* для данного устройства */

        __overlay__ {
            uart_a_tx_pin: uart-a-tx { /* добавляем настройки пинов */
                mux {
                    groups = "uart_a_tx"; /* для группы пинов "uart_a_tx"
                    function = "uart_a";  /* это как было в оригинальной группе */
                    input-disable;        /* для TX выключаем input - обязательно! */
                    output-enable;        /* для TX включаем output - обязательно! */
                    drive-strength-microamp = <4000>; /* это наверно необязательно */
                };
            };
        };
    };

    fragment@1 {
        target-path = "/soc/bus@ffd00000/serial@24000";  /* <=== меняем адрес (см. выше) */

        __overlay__ {
            status = "okay";                             /* включаем UART */
            pinctrl-0 = <&uart_a_pins &uart_a_tx_pin>;   /* добавляем uart_a_tx_pin из блока выше */
            pinctrl-names = "default";                   /* это возможно необязательно */
        };
    };
};

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

sudo dmesg | grep _uart

    [    0.778000] ff803000.serial: ttyAML0 at MMIO 0xff803000 (irq = 14, base_baud = 1500000) is a meson_uart
    [    0.780072] ffd24000.serial: ttyAML6 at MMIO 0xffd24000 (irq = 15, base_baud = 1500000) is a meson_uart

Казалось, успех близок, но если вызвать sudo ls -l /sys/class/tty* , получим только упоминание об ttyAML0. Про ttyAML6 ничего нет.

lrwxrwxrwx 1 root root 0 янв  1  1970 ttyAML0 -> ../../devices/platform/soc/ff800000.bus/ff803000.serial/tty/ttyAML0

И, закономерно, при попытки открыть /dev/ttyAML6 minicom пишет что нет такого файла.

Я совсем не разбираюсь в этой теме. Подскажите пожалуйста, что нужно сделать еще чтобы появился файл /dev/ttyAML6?

И почему появился ttyAML6, а не ttyAML1? Может я что-то напортачил с оверлеями?


На сколько я знаю - файл устройства в /dev создаётся автоматически udev-ом при подключении устройства по событию или при обнаружении во время загрузки системы. Но перед всем этим устройство дожно сначала появиться в /sys/devices/.../... Вручную можно создать командой mknod в аргуметах произвольное имя тип с, старший и младший номера. Сами номера можно взять из файла /sys/путь_к_директории/устройства/uevent

А на счёт остального - хз. Попробуйте у автора поста по вашей ссылке спросить, или на форуме Армбиана поищите.

anonymous
()

Вы весь dmesg прочитайте. Про uart там больше и не должно быть, там, вроде как, должна быть строка:

serial serial0: tty port ttyAML6 registered
А может будут какие ругательства.

mky ★★★★★
()