Hallo Leute, nachdem ich mein ip an den plb-bus angebunden habe, möchte ich diesen mit microblaze ansprechen. Ich bin noch ein Anfänger und weiß nicht, welche Funktion ich zum schreiben/lesen benötige. Sind neben den oben genannten Funktionen noch weitere zu implementieren? Vielen Dank.
Hi, normalerweise wird der Speicher das PLB-Slaves in den Adressraum des MB gemappt. Du kannst also direkt über einen Pointer darauf zugreifen. In Deinen Sourcen müsste irgendwo ein vom SDK automatisch generiertes File liegen, in dem ein #define für die Basisadresse steht.
Vielen Dank pks :) Ich habe vergessen zu erwähnen, dass ich keine software register eingebaut habe. Inwiefern hat dies Einfluss auf das lesen/schreiben. ... Welche weiteren Funktionen sind noch erforderlich?
Tim S. schrieb: > Ich habe vergessen zu erwähnen, dass ich keine software register > eingebaut habe. Was meinst Du damit?
Es gibt unter "Import Peripheral" die Option Register mit einzubauen. In dem Fall habe ich diese nicht eingebaut.
Sorry, das sagt mir nichts...habe auch auf diesem Weg noch kein Peripheral eingebunden. Ich habe in einem Project z.B. eine PLB/Wishbone bridge von Open Cores verwendet. Diese liegt dann im pcores Verzeichnis und hat den Namen "plbv46_2_wb". Wenn ich das Design ins SDK exportiere und ein BSP generiere, entsteht da unter anderem eine Datei "xparameters.h". Hier steht die Adresse, unter der ich das Modul ansprechen kann:
1 | /* Definitions for peripheral PLBV46_2_WB_0 */
|
2 | #define XPAR_PLBV46_2_WB_0_MEM0_BASEADDR 0xA0A00000
|
3 | #define XPAR_PLBV46_2_WB_0_MEM0_HIGHADDR 0xA0AFFFFF
|
Das ist ja witzig :) Bei meinem eingebundenen Core handelt es sich um den "plbv46_2_wb". Wie sieht bei dir die main()-Funktion aus. Vielleicht so: int main(){ Xil_Out32((BaseAddress_vonBridge), (Xuint32)(0x00000001)); ... }
So klein ist die Welt...:-) Nein, so sieht meine main() nicht aus ;-) Die Zugriffe solltest Du, wie gesagt, einfach so machen können:
1 | #include <xparameters.h> |
2 | |
3 | ...
|
4 | |
5 | uint32_t pWB = (uint32*) XPAR_PLBV46_2_WB_0_MEM0_BASEADDR; |
6 | |
7 | *pWB = 0x1; |
Das sollte den gleichen Effekt haben wie Dein Zugriff oben.
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.