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?
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.