BFM PCIe Rootpoint modellieren

Gast #2397249
Lesenswert?
• ▲
▼
Hallo,

ich bin auf der Suche nach einen Bus Functional Model das einen PCIe 
Rootpoint nachstellt. Ziel ist es das ich ein paar Schreib und 
Lesezugriffe auf den Endpoint durchzuführen.

Daher meine Frage kennt jemand ein frei verfügbare BFM und alternativ 
wie aufwendig wäre die Entwicklung eines solchen Modells und wo müsste 
ich am besten anfangen. Altera bietet zwar eine Testbench an, die dort 
verfügbareb Befehle stellen allerdings große Einschränkungen dar.


Vielen Dank für die Antwort!


mfg
andreas
Gast #2397321
Lesenswert?
• ▲
▼
Hallo,

na mein Problem ist z.B. gerade das die BAR-Adressen automatisch 
konfiguriert werden und ich möchte diese Adressen manuell vergeben. Da 
die Konfigurationsroutine von Altera, dies über einen "Shared Memory" 
macht such ich mich gerade durch die vhdl sourcen um dies manuell zu 
editieren.

Falls jemand eine Idee hat wie man das machen könnte bitte einmal posten


mfg
Gast #2559781
Lesenswert?
• ▲
▼
>na mein Problem ist z.B. gerade das die BAR-Adressen automatisch
>konfiguriert werden

Hast du mittlerweile herausfinden können, wo ma die BAR-Adressen 
einstellen kann? Habe gerade das gleiche Problem.

Volker
Gast #2563151
Lesenswert?
• ▲
▼
Hallo,

@Volker:
Ich glaube jetzt eine Lösung gefunden zu haben. Und zwar sind die 
Adressen zweimal hinterlegt - einmal im Endpoint und einmal im Rootpoint 
(genauer im Shared Mem). Beide müssen geändert werden. Am besten du 
schaust dir mal den "Configuration space" von dem PCIe-EP an. 
Desweiteern musst du die Routine "ebfm_cfgwr_imm_wait" von Altera 
nutzen. Damit schreibst du die neuen Basis adressen in die Regsiter 10h 
bis 24h. Zur erinerung sind BAR-Adressen vom PCIe. Danach nicht 
vergessen die Änderungen im Shared Mem durchzuführen, sonst klappt keine 
Adressierung über BAR und Offset mehr. Dazu die variable 
"protect_bfm_shmem := 0;". Löst den Schreibschutz für die entsprechenden 
Abschnitte im Shared Mem und dann mit der Procedure "shmem_write" an die 
Scpeicherstellen 10h bis 24h die BAR Adressen ebenfalls aktualisieren. 
Danach den shared Mem wieder Schreibschützen mit "protect_bfm_shmem := 
1;".
Falls noch Unklarheiten bleiben kann ich mal noch einen VHDL-Schnippsel 
hochladen.

viele Grüße
andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren