2013-06-08 4 views
5

Я запускаю образ 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, а также о настройках ядра и конфигурациях изображений ,

ответ

2

Я нашел, что моя проблема, 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 последовательных lebels были прикреплены к chardev.

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

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

Спасибо большое всем, кто посмотрел на этот вопрос и по-особенному jofel.

 Смежные вопросы

  • Нет связанных вопросов^_^