2010-06-13 7 views
5

Chcę nauczyć się programowania w asemblerach dla PowerPC i ARM, ale nie jestem w stanie kupić prawdziwego sprzętu do tego celu. Zastanawiam się nad wykorzystaniem QEMU do tego. Jednak nie jestem pewien, czy wystarczająco dobrze emuluje obie architektury, że skompiluję i uruchomię moje programy w natywnym asemblerze na tym komputerze?Czy QEMU jest dobre do programowania programowania w asemblerach dla ARM i PowerPC?

+0

Ponieważ celem Qemu jest bycie emulatorem procesora, prawdopodobnie emuluje on te architektury "dostatecznie dobrze", jeśli docs mówią, że wspierają je – ShinTakezou

+1

ARM uC są tak tanie, że równie dobrze można kupić sprzęt (i JTAG "dongle") . Możesz dostać zarówno za mniej niż 100 USD (w tym koszty wysyłki) z serwisu eBay. Trzeba kochać Chińczyków za tanią elektronikę :) – leppie

+0

Głosowanie w celu zamknięcia jako oparte na opiniach. –

Odpowiedz

7

QEMU działa dobrze dla programu testów korekta (tzn czy kod będzie poprawnie działać na rzeczywistej ARM lub PowerPC), ale to nie jest dobre dla programu testów sprawność: emulacja nie jest cykl dokładne i prędkość mierzone z QEMU nie można wiarygodnie (lub nawet niewiarygodnie) skorelować z prędkością na prawdziwym sprzęcie.

Ponadto, QEMU nie przechwytuje niewydzielonych dostępów do pamięci, co nie jest problemem dla emulacji PowerPC (PowerPC toleruje nieprzydzielone dostępy), ale może być dla ARM (niezaalibrowany dostęp, np. Odczyt 32-bitowego słowa w pamięci RAM z adres, który nie jest wielokrotnością liczby 4, będzie działał poprawnie z QEMU, ale wyzwoli wyjątek na prawdziwym procesorze ARM).

Poza tymi punktami, QEMU nadaje się do tworzenia zespołów na ARM lub MIPS (nie wypróbowałem PowerPC, ponieważ znalazłem w tym serwisie stary iBook na eBayu, ale wykonałem montaż ARM i MIPS z QEMU, a następnie uruchomiłem wynikowy kod na prawdziwym sprzęcie i to działało). Możesz emulować cały system i uruchamiać w nim Debiana (w takim przypadku kompilator, linker, edytor tekstu ... również będzie działał w emulacji), lub użyć "emulacji trybu użytkownika", w której uruchamiany jest plik wykonywalny ARM/MIPS bezpośrednio, z opakowaniem, które konwertuje wywołania systemowe na te dla hosta (zakłada to, że hostem jest komputer z systemem Linux). Ta ostatnia jest wygodniejsza (masz dostęp do normalnego katalogu domowego, narzędzia programistyczne są natywne ...), ale wymaga to zainstalowania narzędzi programistycznych. Zobacz buildroot do tego (i link z -static, to pozwoli uniknąć wielu bólów głowy).

+2

"np. Czytanie 32-bitowego słowa w pamięci RAM z adresu, który nie jest wielokrotnością 4, będzie działało poprawnie z QEMU, ale spowoduje wyzwolenie wyjątku na prawdziwym procesorze ARM)." W rzeczywistości, w niektórych wersjach zestawów instrukcji ARM użycie niezaalecowanych adresów powoduje obrót zawartością, chociaż w ARMv6 i późniejszych obsługiwany jest zwykły, niezaalokowany dostęp (jest to konfigurowalne). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472c/BABFDBCJ.html – rakslice

1

Odkąd znalazłem znaki, że Debian dla PowerPC i dla ARM może działać na QEMU, przypuszczam, że to nie będzie problem.

Powiązane problemy