QEMU a grafický výstup na ARM

katry

QEMU a grafický výstup na ARM
« kdy: 30. 08. 2011, 22:21:42 »
Dobrý den,

chtěl jsem si zkusit napsat jednoduchej "Helloword OS" pro ARM všechno proběhlo v pořádku zkompiloval sem kód a vygeneroval soubor kernel.bin. Spustil sem ho v qemu-system-arm, ale qemu-system-arm negeneruje žádný výstup, tedy pokud je zapnuté v grafickém režimu, když jsem ho spustil s parametrem -nographic výstup se objeví, v mém kódu (nebo spíš v tom co google vyplivnul a já to upravil :)) tedy chyba není. Mimochodem qemu emulátor x86 procesorů s výstupem problém nemá, pouze qemu-system-arm.

Pro jistotu píšu i jaké přikazy jsem použil:

qemu-system-arm -cpu cortex-a9 -kernel kernel.bin //vytvoří nové okno ale v něm se neukáže žádný výstup
qemu-system-arm -cpu cortex-a9 -kernel kernel.bin -nographic //spustí se pouze v terminálu ale výstup se zobrazí
« Poslední změna: 31. 08. 2011, 11:55:34 od Petr Krčmář »


Pajk

Re: qemu-system-arm výstup
« Odpověď #1 kdy: 31. 08. 2011, 08:37:30 »
Nejsem si jistý, ale nepředpokládá grafický režim Qemu (s jakýmkoliv emulovaným procesorem) také grafický výstup ? Tj. že spuštěný OS nějak základně inicializuje ten grafický adapter virtuálního počítače a pomocí jeho služeb vytiskne/nakreslí text ... No graphic start podle mne tiskne na stdio první sériový port virtuálního hw, takže pokud váš kód tiskne pouze na konzoli nějaké developer desky, bude to nejspíš ten seriák ...

katry

Re: qemu-system-arm výstup
« Odpověď #2 kdy: 31. 08. 2011, 09:25:32 »
to nevím tohle jsem nějak do hloubky nezkoumal, ovšem jestliže je to nezávislé na procesoru, proč funguje grafický výstup u qemu emulátoru x86 bez problémů a u ARM emulátoru jen v textovém režimu (spouštěno se stejnými parametry).

Pajk

Re: QEMU a grafický výstup na ARM
« Odpověď #3 kdy: 01. 09. 2011, 09:08:38 »
No ono bude opravdu hlavní to, na jaké zařízení tiskne ten Váš Helloworld OS, případně s jakým výstupním zařízením byl konfigurován/kompilován, pokud jste ho zkoušel i na té 386 platformě. Opravdu bych hledal tam, protože pokud jste OS napsal, tak víte, kam tiskne. A pokud jste použil něco hotového, budete tomu holt muset takto do hloubky porozumět, tj. najít, na jaký hw (serial port, vga video, ...) to posílá svůj výstup. Viz Qemu dokumentace k parametru -nographic, která podle mne potvrzuje můj názor z prvního příspěvku, tj. že grafický režim znamená virtuální grafický adapter a textový režim znamená sériovou konzoli přesměrovanou na terminál, ve kterém bylo qemu spuštěno. A to, že něco běželo v obou režimech, znamená asi jen to, že to kromě vga konzole mělo nahozenou i ttyS0 konzoli, to nějaká qemu linux demo image nejspíš nahozené mít bude ...:

`-nographic'
Normally, QEMU uses SDL to display the VGA output. With this option, you can totally disable graphical output so that QEMU is a simple command line application. The emulated serial port is redirected on the console. Therefore, you can still use QEMU to debug a Linux kernel with a serial console.