Forum: FPGA, VHDL & Co. Xilinx : Base Address


von olpo (Gast)


Lesenswert?

Hallo Welt,

anscheinend habe ich das mit den Base-Adressen in HW bzw. auf meinem 
Xilinx Board nicht ganz verstanden.

Ich habe bei meinem EDK-Design die Adressen ein bißchen sortiert, doch 
jetzt funktioniert das Programm ( oder zumindest die UART-Ausgabe) nicht 
mehr.

Also, zB die Adresse von UART war vorher 0x83E20000 - 0x83E2FFFF. Die 
habe ich geändert zu 0x00040000 - 0x0004FFFF.
Dabei überschneiden sich die neuen Adresse nirgends.
Danach habe ich kompletten Export zu SDK mit Bitstream und ein neues 
Board Support Package und neues C-Programm gemacht.
Doch jetzt kann ich in meinem C-Programm xil_printf-Ausgabe sehen.
Warum nicht?
Was hat es mit den Adressen auf sich?

von Duke Scarring (Gast)


Lesenswert?

Wo liegt Dein Programmspeicher? Wie groß ist der?
Verwendest Du den MicroBlaze? Der startet zwingend von 0x00000000.

Das könnte mit dieser Einstellung konkurrieren:
olpo schrieb:
> 0x00040000 - 0x0004FFFF

Hast Du schon mal mit dem Debugger geguckt, wie weit Dein Programm 
läuft?

Und warum kommt man auf die Idee, den Adressraum zu sortieren?

Duke

von olpo (Gast)


Lesenswert?

Am Programmspeicher habe ich nichts geändert. Der geht immernoch von 
0x00000000 bis 0x0000FFFF (µBlaze).

Ich habe als ersten Befehl in der main() direkt xil_printf("wann ist 
endlich Wochenende"); Wenn ich mit dem Debugger da rein möchte, sagt er, 
daß er den Pfad und ähnliche Sauereien nicht kennt.
Wie gesagt, mit unveränderten Adressen funktioniert das Programm.
Die system.xml, die das SDK bereitstellt, zeigt auch die neuen Adressen.

Also wie jetzt? Theoretisch müsste es klappen, aber irgend ein Detail 
ist schiefgegangen? Oder darf man nicht einfach mit den Adressen 
rumspielen?

von Duke Scarring (Gast)


Lesenswert?

olpo schrieb:
> Also wie jetzt? Theoretisch müsste es klappen, aber irgend ein Detail
> ist schiefgegangen?
Ja.

> Oder darf man nicht einfach mit den Adressen
> rumspielen?
Nein.

Bei mir hat das schon mindestens einmal funktioniert.
Bist Du Dir sicher, das Du das Bitfile neu generiert hast?
Bzw. das das neu generierte Bitfile auch im FPGA gelandet ist?
Dort muß ja schließlich ein neuer Adressdekoder rein.

Außerdem kannst Du mal durch die generierten Headerfiles gucken. Dort 
mußte auch eins dabei sein, welches die Adressen enthält.


olpo schrieb:
> Wenn ich mit dem Debugger da rein möchte, sagt er,
> daß er den Pfad und ähnliche Sauereien nicht kennt.
Leerzeichen im Pfad? Versuch erstmal das Problem zu fixen. Mit dem 
Debugger/xmd kannst Du vielen Problemen auf den Grund gehen.

Duke

von rev (Gast)


Lesenswert?

Also ich würde die Peripherie  definitiv an andere Adressen legen. Du 
bist viel zu nahe am  Microblaze-Addressraum, Es kann sein das der 
Microblaze trotzdem noch höhere Addressbits mitdekodiert, dann klappt 
das so nicht. Nimm 0x7xxxxxxx oder 0x8xxxxxxx oder wenigstens 0x1xxxxxxx 
für die Peripherie...

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.