В портах ttyO нет хорошего адреса порта на QEMU 1.4.0, запущенном изображении для beagleboard-xm

Я запускаю изображение Linux (ядро 3.2.8) для beagleboard-xm на дистрибутиве UEM для Linux 2.0.0.0.0 для 13.04. Мое изображение создается с помощью Buildroot beagle_defconfig. Я добавил несколько pkgs, чтобы немного отлаживать.

QEMU вызов cmd:

`$ sudo qemu-system-arm -M beaglexm -m 1024 -sd ./test.img -clock unix -serial stdio -device usb-mouse -device usb-kbd -serial pty -serial pty` [sudo] password for emperador: char device redirected to /dev/pts/3 (label serial1) char device redirected to /dev/pts/4 (label serial2) 

То, что я хочу сделать, – это общение между гостем и хозяином через последовательный 4 разных ttyO, присутствующих на гостях. QEMU предлагает средства для перенаправления трафика на какое-либо устройство на стороне хоста. Моя проблема:

В гостевой загрузке ядра я могу видеть, что мой UART, где включен

 [ 2.682040] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 2.777947] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0 [ 2.794967] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1 [ 2.814942] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2 [ 2.966825] console [ttyO2] enabled [ 2.984777] omap_uart.3: ttyO3 at MMIO 0x49042000 (irq = 80) is a OMAP UART3 

Фактически, когда я смотрю в /proc/tty/driver и я делаю кошку на OMAP-SERIAL Im, могу посмотреть эту версию serinfo: 1.0:

 0: uart:OMAP UART0 mmio:0x4806A000 irq:72 tx:0 rx:0 CTS|DSR|CD 1: uart:OMAP UART1 mmio:0x4806C000 irq:73 tx:0 rx:0 CTS|DSR|CD 2: uart:OMAP UART2 mmio:0x49020000 irq:74 tx:268 rx:37 RTS|CTS|DTR|DSR|CD 3: uart:OMAP UART3 mmio:0x49042000 irq:80 tx:0 rx:0 CTS|DSR|CD 

Я знаю, что ttyO2 работает, потому что моя консоль перенаправлена ​​на него. Дело в том, что, делая серийный серийный номер в любом из ttyO, я получаю следующее сообщение:

  [root@enu driver]# setserial -a /dev/ttyO0 /dev/ttyO0, Line 0, UART: undefined, Port: 0x0000, IRQ: 72 Baud_base: 3000000, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal 

То же самое происходит с ttyO2. Я попытался установить некоторые настройки для любого из ttyO с помощью seterial, но всегда получаю одно и то же сообщение:

 [root@enu ~]# setserial /dev/ttyO0 uart 8250 setserial: can't set serial info: Invalid argument [root@enu ~]# setserial /dev/ttyO0 port 0x4806a000 setserial: can't set serial info: Invalid argument 

При взгляде на гостевые /proc/tty/drives это то, что мы видим

 /dev/tty /dev/tty 5 0 system:/dev/tty /dev/console /dev/console 5 1 system:console /dev/ptmx /dev/ptmx 5 2 system /dev/vc/0 /dev/vc/0 4 0 system:vtmaster sdio_uart /dev/ttySDIO 249 0-7 serial acm /dev/ttyACM 166 0-31 serial ttyprintk /dev/ttyprintk 5 3 console OMAP-SERIAL /dev/ttyO 253 0-3 serial serial /dev/ttyS 4 64-95 serial pty_slave /dev/pts 136 0-1048575 pty:slave pty_master /dev/ptm 128 0-1048575 pty:master unknown /dev/tty 4 1-63 console 

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

/sys/class/tty показывают, что драйверы tty были связаны с последовательным устройством.

я появился раньше, только omap uarts были инициализированы и привязаны к ttyO *. обратите внимание, что консоль была перенаправлена ​​ttyO2 с помощью конфигураций ядра. но поскольку я добавил -serial stdio , консоль была перенаправлена ​​на терминал, который вызвал QEMU.

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

На стороне хоста я открываю /dev/pts/3 и /dev/pts/4 с помощью minicom или делая cat на них

На стороне гостей:

Когда я делаю echo "test" > /dev/ttyO0 или 1 или 3 ничего. но когда я делаю это на ttyO2, «test» запрашивает консольный терминал (что нормально).

теперь при использовании любого из ttyS:

 echo "test" > /dev/ttyS0 

я получил

 -bash: echo: write error: Input/output error 

Я сделал некоторые исследования об этой ошибке, и я обнаружил, что это может быть много. Но одна вещь, которую я заметил, заключалась в том, что никакое устройство рядом с серийным не было назначено ttyS. и глядя на / proc / tty / driver / serial, мы видим следующее:

 serinfo:1.0 driver revision: 0: uart:unknown port:00000000 irq:0 1: uart:unknown port:00000000 irq:0 2: uart:unknown port:00000000 irq:0 3: uart:unknown port:00000000 irq:0 

также setserial -a /dev/ttyS0 confrim this:

 /dev/ttyS0, Line 0, UART: unknown, Port: 0x0000, IRQ: 0 Baud_base: 0, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal 

Мне удалось выполнить последовательную связь с портами muliples usig grml на архитектуре x86. Таким образом, кажется, что сторона хозяина в порядке.

Если кто-либо когда-либо делал что-то подобное этой работе на QAGU-M beaglexm или любой другой архитектуре ARM, я с удовольствием принимал бы какие-либо сведения о используемой VM, версии и дистрибутиве QEMU, а также о настройках ядра и конфигурациях изображений.

  • Мой процесс был убит, но я не могу понять сообщение ядра
  • Mount.nfs использует последовательный порт
  • Быстрый способ найти USB-идентификатор на основе USB-пути
  • ser2net + socat + gammu. завершение соцета
  • Почему root не может открыть псевдотерминал? (доступ запрещен)
  • Как контролировать последовательное соединение @ 250000 бод?
  • Как найти, какой последовательный порт используется?
  • Ведение журнала консоли с использованием команды сценария вывод нечитабельно
  • 2 Solutions collect form web for “В портах ttyO нет хорошего адреса порта на QEMU 1.4.0, запущенном изображении для beagleboard-xm”

    Проблема находится на стороне хоста:

    Вы должны использовать Pseudo-terminal ( -serial pty ) вместо подключения к «реальным» char-devices ( -chardev tty,... ).

    qemu отображает pty /dev/pts/xx который он фактически использует. Теперь вы можете использовать этот pty как обычный последовательный порт вашего хоста.

    Вы можете повторить эту опцию, чтобы получить больше ptys, подключенных к /dev/ttyS[0-*] на гостевом компьютере (если вы используете -serial stdio , это /dev/ttyS0 на гостевой системе, первый pty – это /dev/ttyS1 ).

    Я нашел, что моя проблема, QEMU не отображает серийный чардэв каких-либо дополнительных -серийных pty.

    После выполнения этой команды Invoke:

     sudo qemu-system-arm -M beaglexm -m 1024 -sd ./test.img -clonix -serial stdio -device usb-mouse -device usb-kbd -serial pty -serial pty -monitor pty char device redirected to /dev/pts/5 (label compat_monitor0) char device redirected to /dev/pts/7 (label serial1) char device redirected to /dev/pts/10 (label serial2) 

    Мы можем видеть, что 2 дополнительных сериала, созданных с ярлыками серий 1 и 2. Но если я посмотрю на информацию о дереве

      (qemu) info qtree dev: omap_uart, id "uart4" revision = 82 mmio_size = 4096 baudrate = 812500 chardev = uart4 irq 3 mmio 0000000049042000/0000000000001000 dev: omap_uart, id "uart3" revision = 82 mmio_size = 4096 baudrate = 812500 chardev = serial0 irq 3 mmio 0000000049020000/0000000000001000 dev: omap_uart, id "uart2" revision = 82 mmio_size = 4096 baudrate = 812500 chardev = uart2 irq 3 mmio 000000004806c000/0000000000001000 dev: omap_uart, id "uart1" revision = 82 mmio_size = 4096 baudrate = 812500 chardev = uart1 irq 3 mmio 000000004806a000/0000000000001000 

    Мы ясно видим, что только ярлык serial0 был прикреплен к uart (тот, который настроен как консоль). Другие метки (serial1 и serial2) не найдены.

    С рабочим изображением grml, что jofel было очень приятно сказать мне, мы видим следующее:

      dev: i440FX-pcihost, id "" irq 0 bus: pci.0 type PCI dev: PIIX3, id "" addr = 01.0 romfile = <null> rombar = 1 multifunction = on command_serr_enable = on class ISA bridge, addr 00:01.0, pci id 8086:7000 (sub 1af4:1100) bus: isa.0 type ISA dev: isa-serial, id "" index = 2 iobase = 0x3e8 irq = 4 chardev = serial2 wakeup = 0 isa irq 4 dev: isa-serial, id "" index = 1 iobase = 0x2f8 irq = 3 chardev = serial1 wakeup = 0 isa irq 3 dev: isa-serial, id "" index = 0 iobase = 0x3f8 irq = 4 chardev = serial0 wakeup = 0 isa irq 4 

    все 3 серийные лемки были прикреплены к чардеву.

    Теперь мне просто нужно задать новый вопрос о том, как заставить QEMU связывать эти таблицы с моими биглерами.

    Также я хотел бы добавить, что я думаю, что seterial не выводил никакой информации о ttyO, потому что он не поддерживает omap uarts. setserial ? показывает, какие устройства поддерживаются. В случае с ttyS я думаю, что это связано с тем, что драйверы tty установлены, но нет другого типа uart basede omap uarts, эмулируемого для bealgeboard в QEMU.

    Спасибо всем за то, что посмотрел на этот вопрос и на специальность jofel.

    Interesting Posts

    Переключение между окнами с номерами Super + / Win + 1, 2, 3 и т. Д.

    как показать только процессы * не * сопоставление фильтра?

    Система Solaris 10 – дисковое пространство продолжает расти даже после удаления каталога

    Каков эффект разделителя пути в начале переменной окружения?

    Пакетное шифрование с использованием открытого ключа GPG

    Что означает изменение файла / каталога?

    find и exec: почему эта команда не работает?

    Как сделать полный набор возможностей для определения «командных символов» на GNU?

    convert / dev / md0 в / dev / sda1

    Thunderbird: новое уведомление по электронной почте не работает должным образом

    Удалить торрент-файлы с определенного трекера

    В rsync можно добавить исключения из -delete с помощью внешнего файла?

    Команда df не показывает правильные значения

    трубы в командной строке linux

    Вопрос о взломанной машине и специальных символах в имени файла

    Linux и Unix - лучшая ОС в мире.