[so2] [SO2][Tema 2 - Driver UART] Pipe între COM1 și COM2 (lipsă!?)

Adrian Stanciu adrian.stanciu.pub at gmail.com
Tue Apr 4 21:36:22 EEST 2017


2017-04-04 19:08 GMT+03:00 Iulian Matesica via so2 <so2 at cursuri.cs.pub.ro>:
> Salut,

Salut,

> Am o problemă cu cele două porturi, COM1 și COM2 - nu reușesc să obțin
> pe COM2 ce trimit de pe COM1 și invers (checker-ul rămâne blocat
> într-un receive).

Ar trebui să meargă transfer de la COM1 la COM2 dar invers nu pentru
că pipe-ul este unidirecțional.

> Device-ul este configurat corespunzător deoarece dacă activez bit-ul
> de LOOP din Modem Control Register, ce trimit pe COM1 primesc imediat
> tot pe COM1 (la fel și pentru COM2). Acest lucru îmi confirmă că
> operațiile de read/write + întreruperi funcționează.
>
> Am verificat în Makefile-ul pentru QEMU și este prezentă linia următoare:
> serial pipe:pipe1 -serial pipe:pipe2
>
> Am dezactivat modul de loopback și am încercat să scriu de pe mașina
> fizică în fișierul pipe1.in:
> echo -n "abcd" > pipe1.in
>
> În mașina virtuală primesc întrerupere de receive după care citesc
> datele - totul ok.
>
> Am procedat și invers: am scris de pe mașina virtuală în COM1 și am
> primit date în pipe1.out ('echo -n "abcd" > /dev/com1', respectiv 'cat
> pipe1.out').
>
> La fel funcționează și pentru COM2.
> Ar părea ca cele două porturi nu sunt conectate. Cum pot rezolva?
>

Am testat ultima variantă a codului tău de pe GitLab (6f1b133c este
ultimul commit) cu LOG_LEVEL setat la KERN_DEBUG. Observ că se
blochează intermitent la testul 8 (read/write, high speed). Dacă nu
ajungi la acest comportament, asigură-te că ai configurația corectă a
mașinii virtuale [1].

[1] https://github.com/tavip/qemu-so2


Adrian


More information about the so2 mailing list