Автор Тема: "Элкус" PC104, настройка UART - решено  (Прочитано 454 раз)

Оффлайн skyazimuth

  • Начинающий
  • *
  • Сообщений: 6
    • Email
Помогите настроить UART на плате расширения на ISA.
Решено, под спойлером:
Спойлер
1 В файл /etc/default/grub (ссылка на конфиг grub) изменить строку, добавив 8250.nr_uarts=XX,
где XX - количество COM-портов в системе (можно с запасом)

lrwxrwxrwx 1 root root 18 сен  6 11:47 /etc/default/grub -> ../sysconfig/grub2

#GRUB_CMDLINE_LINUX_DEFAULT=' quiet resume=/dev/disk/by-uuid/484b1841-2a8d-42e6-9d27-dbc756a41890 panic=30 splash'
GRUB_CMDLINE_LINUX_DEFAULT=' 8250.nr_uarts=16 quiet resume=/dev/disk/by-uuid/484b1841-2a8d-42e6-9d27-dbc756a41890 panic=30 splash 3'

2 запустить по root'ом
# update-grub

3 Создать файл /etc/udev/rules.d/09-serial.rules
Правила при создании устройств при загрузке

-rw-r--r-- 1 root root 575 ноя 22 10:58 /etc/udev/rules.d/09-serial.rules

4 Содержимое файла /etc/udev/rules.d/09-serial.rules
Параметр "uart 16550A" не проверен точно, но без него тип не определился
Параметр "baud_base 115200" - обязательное заклинание, не понятно что, но без него не работает
"port XXX" - базовый адрес порта I/O, шестнадцатиричный с префиксом "0x"
"irq XX" - номер линии прерывания

# RS-PC104
KERNEL=="ttyS4", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0140 irq 7 baud_base 115200"
KERNEL=="ttyS5", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0148 irq 7 baud_base 115200"
KERNEL=="ttyS6", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0150 irq 7 baud_base 115200"
KERNEL=="ttyS7", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0158 irq 7 baud_base 115200"
KERNEL=="ttyS8", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0160 irq 7 baud_base 115200"
KERNEL=="ttyS9", RUN+="/bin/setserial /dev/%k uart 16550A port 0x0168 irq 7 baud_base 115200"

5 Перезагрузить компьютер

6 Проверить наличие файлов устройств
$ ls -l /dev/ttyS*

7 Проверить настройки COM портов
$ setserial -g /dev/ttyS*

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS10, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS11, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS12, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS13, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS14, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS15, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 10
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 11
/dev/ttyS4, UART: 16550A, Port: 0x0140, IRQ: 7
/dev/ttyS5, UART: 16550A, Port: 0x0148, IRQ: 7
/dev/ttyS6, UART: 16550A, Port: 0x0150, IRQ: 7
/dev/ttyS7, UART: 16550A, Port: 0x0158, IRQ: 7
/dev/ttyS8, UART: 16550A, Port: 0x0160, IRQ: 7
/dev/ttyS9, UART: 16550A, Port: 0x0168, IRQ: 7

Вычислитель формфактора PC-104, ICOP VDX3-6726 (Vortex86DX3)
Плата расширения "Элкус" RS-PC104 (6 UART'ов, GPIO на шине ISA без PnP), базовый io 0x140, irq 7, совместимость по крайней мере с 8250 (декларируется разработчиком 16С550С).

Дистрибутив Simply 10.1 (установлен на диск на другой машине, так как н целевой графика отваливается, только консоль).
umane -a
Linux host 5.10.198-std-def-alt1 #1 SMP Wed Oct 11 00:33:53 UTC 2023 i686 GNU/Linux

Видно только встроенные в вычислитель 4 UART, внешние 6 UART на шине OC не видит. Под DOS'ом проверена принципиальная работоспособность в этой конфигурации железа (порты и прерывания).

В ядре задан параметр 8250.nr_uarts=16

вывод setserial -g /dev/ttyS*
Спойлер
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS10, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS11, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS12, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS13, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS14, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS15, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 10
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 11
/dev/ttyS4, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS5, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS6, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS7, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS8, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS9, UART: unknown, Port: 0x0000, IRQ: 0

На команды вроде
setserial /dev/ttyS4 port 0x140 irq 7
выдает invalid argument

Вариант установки другой сборки Linux приемлем.
« Последнее редактирование: 26.11.2023 17:25:46 от sb »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: PC104, настройка UART
« Ответ #1 : 22.11.2023 06:03:47 »
Дистрибутив Simply 10.1 (установлен на диск на другой машине, так как н целевой графика отваливается, только консоль).

Поясните этот момент. Это как?

Оффлайн skyazimuth

  • Начинающий
  • *
  • Сообщений: 6
    • Email
Re: PC104, настройка UART
« Ответ #2 : 24.11.2023 14:43:26 »
Дистрибутив Simply 10.1 (установлен на диск на другой машине, так как н целевой графика отваливается, только консоль).

Поясните этот момент. Это как?

В общем-то проблему решил. В setserial нужен магический параметр "baud_base 115200", без него ничего не устанавливается и ругается непонятно на что. Нашел про это где-то в глубине интернетов в небольшой заметке.

Про установку.
Запустил установку на целевой машине, как только пытаются загрузиться Иксы - все падает. Переткнул винчестер на настольный компьютер, установил (отключив все родные диски). Переставил на целевую машину - тоже на Иксах падает (даже с тривиальным VESA). Поставил винчестер в настольный компьютер, gurb перенастроил в текстовой режим, в загрузке ядра поставил 3 runlevel. Переставил винчестер на целевую машину - заработало, грузится в текстовую консоль без запуска графического рабочего стола.

У поставщика вычислителя есть драйвер для Иксов, но так как вычислитель планируется использовать вообще без пользовательского интерфейса, то пока не стал тратить время на попытки настройки.