Я запускаю образ Linux (ядро 3.2.8) для beagleboard-xm на эмуляторе QEMU 1.4.0. Распространение Ubuntu для 13.04 , Мое изображение создается с помощью Buildroot beagle_defconfig. Я добавил несколько pkgs, чтобы немного отлаживать.У портов ttyO нет хорошего адреса порта на QEMU 1.4.0, запущенное изображение для beagleboard-xm
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 предлагает средства для перенаправления трафика на какое-либо устройство на стороне хоста. Моя проблема выглядит следующим образом:
В ботинке гостевой ядра Im в состоянии видеть, что мой 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 я получаю следующее сообщение:
[[email protected] 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 с setserial
, но я всегда получаю то же сообщение:
[[email protected] ~]# setserial /dev/ttyO0 uart 8250
setserial: can't set serial info: Invalid argument
[[email protected] ~]# 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
, я могу запросить консоль в миникомплексе, открыв pty, созданную на стороне хоста. Все еще ничего не происходит на других pty, созданных на стороне хоста, чтобы общаться через другие порты.
На принимающей стороне я открываю /dev/pts/3
и /dev/pts/4
с Minicom или делать cat
на них
На стороне гостя:
Whent Я не делаю echo "test" > /dev/ttyO0
или 1 или 3 ничего. но когда я делаю это на ttyO2, «test» запрашивает консольный терминал (что нормально).
Теперь при использовании любого из TTYs:
echo "test" > /dev/ttyS0
я
-bash: echo: write error: Input/output error
Я сделал некоторые исследования об этой ошибке, и что я обнаружил, что это может быть много вещей. Но одна вещь, которую я заметил, заключалась в том, что никакое устройство рядом с серийным не было назначено ttyS. и смотрит на/Proc/TTY/водитель/серийный мы видим это:
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 это:
/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, а также о настройках ядра и конфигурациях изображений ,