Forum: Mikrocontroller und Digitale Elektronik mit qemu Arm (Mini2440) emulieren


von Dizzy (Gast)


Lesenswert?

Hallo,

versuche grade unter XP mit qemu eine Emulation vom Mini2440 mit arm 
Prozessor hin zu bekommen.
Gibst da irgentwo ne detalierte anleitung wie man das hin bekommt ? Habe 
eine für X86 gefunden
(http://qemu-forum.ipi.fi/viewtopic.phpf=22&t=5308&p=15600#p15600) und 
versucht die für einen arm anzuwenden klappt aber nicht.

Gruß Dizzy

von Uhu U. (uhu)


Lesenswert?

Das ist wohl auch kein Wunder: qemu ist eine virtuelle Maschine, kein 
Prozessorsimulator und kann deswegen nur Code für den Host-Prozessor 
ausführen.

von Dizzy (Gast)


Lesenswert?

Habe grade das hier gefunden http://repo.or.cz/w/linux-2.6/mini2440.git.
Habe mich vileicht grader falsch ausgedrückt auf jeden fall will ich ein 
Betriebssystem in diese umgebung emulieren.

von O. H. (ohagendorf)


Lesenswert?

QEMU ist beides, sowohl Prozessorsimulator als auch Virtualisierer, 
siehe http://wiki.qemu.org/Main_Page

Genau dort steht auch gleich im zweiten Satz, dass ein ARM Prozessor auf 
einem PC mit QEMU simuliert werden kann. Es sollte also rein prinzipiell 
funktionieren.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

http://trac.mixam.info/mini2440/wiki/Qemu

Es gibt, glaube ich, noch eine Seite zum Mini2440+Qemu, schau mal in den 
Links hier: http://code.google.com/p/friendlyarm/wiki/Links

von Dizzy (Gast)


Lesenswert?

Ja genau so etwas habe ich gesucht! Danke !

von Dizzy (Gast)


Lesenswert?

komme nicht weiter und dass schon viel zu Lange.

wenn ich vorgehe wie hier beschrieben:
http://trac.mixam.info/mini2440/wiki/Qemu

und diese mini2440_start.sh ausführe kommt:

$ ./mini2440_start.sh
Starting in .
./mini2440_start.sh : creating NAND empty image : ./mini2440_nand.bin
C:\create\1.0\mingw\bin\dd.exe: /dev/zero: No such file or directory
./../arm-softmmu/qemu-system-arm -M mini2440 -drive 
file=./mini2440_snapshots.im
g,snapshot=on -serial stdio -kernel /tftpboot/uImage -mtdblock 
./mini2440_nand.b
in -show-cursor -usb -usbdevice keyboard -usbdevice mouse -net 
nic,vlan=0 -net t
ap,vlan=0,ifname=tap0 -monitor telnet::5555,server,nowait
tap: Could not open 'tap0'
Could not initialize device 'tap'

was bedeutet dass? was kann ich tuen ?

von Dizzy (Gast)


Lesenswert?

Ist es denn soo kompliziert dieses qemu zum laufen zu bringen? Hat das 
schon mal jemand gemacht mit nem arm oder besser noch mit mini2440?
Was ist mit dieser GUI für windows krigt man das Damit auch hin? _Hab 
die Runtergeladen und ausprobiert weis da aber nicht was ich als "Kernal 
image" und was als "Ram Disk" wählen soll.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Da du anscheinend nichtmal in der Lage bist absolut aussagekräftige 
(Fehler-)Meldungen zu verstehen, ist es für dich anscheinend in der Tat 
zu kompliziert.

Da du das aber wohl nicht wahrhaben willst, empfehle ich dir mal deine 
System Devices zu checken (/dev/zero) und das TAP-Device einzurichten.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>versuche grade unter XP mit qemu
Vergiss das mal lieber, die ARM Emulation mit Qemu auf Windows ist nie 
aktuell und murks, nix läuft wies soll, dauernd abstürze.

von Dizzy (Gast)


Lesenswert?

Mach ich nur ungern.
Hast du es denn überhaut zu laufen bekommen ?
Naja dann istallier ich jetz ma linux.
hmm kann man eigenlich ne Virtuelleumgebung in einer virtuellen umgebung 
erzeugen (-:?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Hast du es denn überhaut zu laufen bekommen ?
Nach Tagen rumgebastel und Code flicken, eine etwas ältere ARM Version. 
Das Qemu-Mini2440 hab ich gar nie versucht.

>hmm kann man eigenlich ne Virtuelleumgebung in einer virtuellen umgebung
>erzeugen (-:?
Wieso nich?

von Dizzy (Gast)


Lesenswert?

Ich habe mir jetzt unbutu installiert und hir noch mal versucht.
Habe zur übung das das ganze mit reactOS durchgezogen war Problemlos.

Jetz henge ich beim aufruf von qemu.ich finde nicht raus wie das für den 
arm geht.

von Dizzy (Gast)


Lesenswert?

Wie benutzt man zImage.integrator oder uImage.integrator die sind soweit 
ich das verstanden habe für den veränderten bootablauf beim arm.

wenn ich dass  wie beschrieben versuche:
 qemu-system-arm -kernel zImage.integrator -initrd arm_root.img

kommt:zImage.integrator: No such file or directory
qemu: could not load kernel 'zImage.integrator'

habe ich da irgentein Package nicht istalliert ?

von Dizzy (Gast)


Lesenswert?

vergesst mal den letzten Eintrag. Da war ich etwas Übermüdet.

Aber ich habe immer noch das selbe Problem dass ich die Virtuelle 
Netzwerkkarte nicht ans laufen bekomme.

wenn ich die Minni2440_start.sh:

#!/bin/bash

base=$(dirname $0)

echo Starting in $base

name_nand="$base/mini2440_nand.bin"
name_snapshots="$base/mini2440_snapshots.img"

if [ ! -f "$name_nand" ]; then
  echo $0 : creating NAND empty image : "$name_nand"
  dd if=/dev/zero of="$name_nand" bs=528 count=131072
fi
if [ ! -f "$name_snapshots" ]; then
  echo $0 : creating empty snapshot image : "$name_snapshots"
  qemu-img create "$name_snapshots" 100MB
fi


führt das zu folgender Ausgabe

cmd="$base/../arm-softmmu/qemu-system-arm \
  -M mini2440 $* \
  -drive file=$name_snapshots,snapshot=on \
  -serial stdio \
  -kernel /tftpboot/uImage \
  -mtdblock "$name_nand" \
  -show-cursor \
  -usb -usbdevice keyboard -usbdevice mouse \
  -net nic,vlan=0 \
  -net tap,vlan=0,ifname=tap0 \
  -monitor telnet::5555,server,nowait"

# cmd="gdbserver :3333 $cmd"
#  -monitor unix:.mini2440_monitor,server,nowait"

echo $cmd
$cmd

ausführe Passiert dass :

./../arm-softmmu/qemu-system-arm -M mini2440 -drive 
file=./mini2440_snapshots.img,snapshot=on -serial stdio -kernel 
/tftpboot/uImage -mtdblock ./mini2440_nand.bin -show-cursor -usb 
-usbdevice keyboard -usbdevice mouse -net nic,vlan=0 -net 
tap,vlan=0,ifname=tap0 -monitor telnet::5555,server,nowait
can't add tap0 to bridge eth1: Operation not supported
/etc/qemu-ifup: could not launch network script
Could not initialize device 'tap'

ich habe gelesen das dass an der quem-ifup liegen kann/soll, weis aber 
leider nicht was ich da ändern soll damit es klappt.

von Robert W. (rweber)


Lesenswert?

Servus,

so wie es aussieht, kann er den tap Treiber nicht auf das eth1 
"drüberlegen". Du bist root? Hast du denn auch ein eth1? Was zeigt

# ifconfig eth1

Gruss,
Robert

von Dizzy (Gast)


Lesenswert?

Ja, ich habe nur einen eth1. eth0 ist meine Onbordkarte die habe ich 
aber wegen nem treiberproblem deaktiviert.
Arbeite unter ubuntu hab alles mit sudo ausgeführt.

ifconfig eth1
eth1      Link encap:Ethernet  Hardware Adresse 00:50:bf:d8:af:23
          inet Adresse:192.168.2.6  Bcast:192.168.2.255 
Maske:255.255.255.0
          inet6-Adresse: fe80::250:bfff:fed8:af23/64 
Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:18501 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17362 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:18328844 (18.3 MB)  TX bytes:3304638 (3.3 MB)
          Interrupt:19 Basisadresse:0xa400

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

"Operation not supported" sieht mir nach fehlendet Unterstützung im 
Kernel aus. Schau mal, was modprobe -l | grep -i tap bringt. Bei Bedarf 
die module mit modprobe <modul> laden. Natürlich als root.

Ansonsten schmeiss die Netzwerkkarte testweise mal aus dem Script raus.

von Dizzy (Gast)


Lesenswert?

mini2440:$: modprobe -l | grep -i tap
kernel/drivers/net/wireless/hostap/hostap.ko
kernel/drivers/net/wireless/hostap/hostap_cs.ko
kernel/drivers/net/wireless/hostap/hostap_plx.ko
kernel/drivers/net/wireless/hostap/hostap_pci.ko


Ohne nic

cmd="$base/../arm-softmmu/qemu-system-arm \
  -M mini2440 $* \
  -drive file=$name_snapshots,snapshot=on \
  -serial stdio \
  -kernel /tftpboot/uImage \
  -mtdblock "$name_nand" \
  -show-cursor \
  -usb -usbdevice keyboard -usbdevice mouse \
  -net nic none \
  -monitor telnet::5555,server,nowait"

kommt dass:

vice mouse -net nic none -monitor telnet::5555,server,nowait
Warning: vlan 0 is not connected to host network
S3C: CLK=240 HCLK=240 PCLK=240 UCLK=57
QEMU: ee24c08_init
DM9000: INIT QEMU MAC : 52:54:00:12:34:56
QEMU mini2440_reset: loaded default u-boot from NAND
QEMU mini2440_reset: loaded override u-boot (size 0)
QEMU mini2440_reset: loaded /tftpboot/uImage (size 0)
S3C: CLK=240 HCLK=240 PCLK=240 UCLK=57
QEMU mini2440_reset: loaded default u-boot from NAND
QEMU mini2440_reset: loaded override u-boot (size 0)
QEMU mini2440_reset: loaded /tftpboot/uImage (size 0)
qemu: fatal: Trying to execute code outside RAM or ROM at 0x34000000

R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=34000000
PSR=400001d3 -Z-- A svc32
./mini2440_start.sh: Zeile 35:  3598 Aborted                 $cmd

kommt  dass .


oder muss ich noch mehr kicken?

ich denke mal dass dann die grösse im ram nciht mehr stimmt und ich die 
in uboot neu festlegen müsste?!

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Oooooh wie oft ich den Fehler beim OS-Coding hatte :D Da werden 
Erinnerungen an hunderte Fehler, hauptsächlich im Zusammenhang mit 
Pointer(Arrays) wach und lebendig :D

Das dürfte eigentlich nicht passieren. Das ist höchstwahrscheinlcih ein 
kaputtes Image.

Ist das Kernel Image eines für Uboot, ein uImage, bzImage, zImage, ... 
... ?

von Dizzy (Gast)


Lesenswert?

Habe die ganze "toolchain" mit einer leicht modifizierten
mini2440-bootstrap-v2.sh 
(http://code.google.com/p/mini2440/downloads/detail?name=mini2440-bootstrap-v2.sh) 
erstellt hab das ganze aber voher auch schon anders versucht und den 
Fehler hatte ich immer wenn ich die Nic weg gelassen haben.

von Thomas R. (tinman) Benutzerseite


Lesenswert?

ist das richtig ?

> QEMU mini2440_reset: loaded override u-boot (size 0)
> QEMU mini2440_reset: loaded /tftpboot/uImage (size 0)

size 0 klingt wie nix geladen, kein wunder das dann

> qemu: fatal: Trying to execute code outside RAM or ROM at 0x34000000

kommt.

Steht doch hier http://trac.mixam.info/mini2440/wiki/Qemu

If you have something like :
 qemu: fatal: Trying to execute code outside RAM or ROM at 0x00001000
verify that u-boot.bin if well loaded

von Dizzy (Gast)


Lesenswert?

ja aber warum wird die uboot.bin denn nicht ordentlich geladen 
vorahanden ist ja ?

Sorry bin ein bisschen Planlos

von Dizzy (Gast)


Lesenswert?

muss man irgendwo den Pfad für die qemu.bin ändern wenn ich die nählich 
umbenenne ändert sich gar nichts.

von Dizzy (Gast)


Lesenswert?

Drück

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Dizzy schrieb:
> ja aber warum wird die uboot.bin denn nicht ordentlich geladen
> vorahanden ist ja ?
>
> Sorry bin ein bisschen Planlos

In order to load the u-boot.bin correctly it must be placed in the 
script directory

:lesen muss du schon selber, steht doch alles beschrieben. Wenn die 
pfade und file name nicht stimmen und die u-boot.bin nicht vorhanden ist 
im script dir dann wird qemu nix laden können .. steht aber alles da

http://trac.mixam.info/mini2440/wiki/Qemu

von Dizzy (Gast)


Lesenswert?

Gelesen habe ich es, registriert aber nicht.

Gut, habe die qemu.bin ins selbe Verzeichnis wie das Skript verschoben.
leider klappts immer noch nicht.

ohne (Nic) passiert folgendes:

Starting in .
./../arm-softmmu/qemu-system-arm -M mini2440 -drive 
file=./mini2440_snapshots.img,snapshot=on -serial stdio -kernel 
/tftpboot/uImage -mtdblock ./mini2440_nand.bin -show-cursor -usb 
-usbdevice keyboard -usbdevice mouse -net none -monitor 
telnet::5555,server,nowait
S3C: CLK=240 HCLK=240 PCLK=240 UCLK=57
QEMU: ee24c08_init
DM9000: INIT QEMU MAC : 00:00:00:00:00:00
./mini2440_start.sh: Zeile 35:  2997 Segmentation fault      $cmd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.