Forum: Mikrocontroller und Digitale Elektronik AP7000, NGW100, P2 Segment


von mgiaco (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich schreibe auf einen AVR32 einen kleinen Kernel. Jetzt bin ich an 
einen Punkt angelangt an dem ich die MMU initialisieren möchte.

Im Manual zu MMU steht folgendes:

Both the P1 and P2 segments are default segment translated to the 
physical address range 0x00000000 to 0x1FFFFFFF. The mapping between 
virtual addresses and physical addresses is therefore implemented by 
clearing of MSBs in the virtual address. The difference between P1 and 
P2 is that P1 is cached, while P2 is uncached. Because P1 and P2 are 
segment translated and not page translated, code for initialization of 
MMUs and exception vectors are located in these segments. P1, being 
cacheable, offers higher performance than P2.

Because P1 and P2 are segment translated and not page translated, code 
for initialization of MMUs and exception vectors are located in these 
segments.

==> Also möchte ich den ganzen Kernel in dieses Segment verschieben. Wie 
kann ich das machen ?

In Anhang ist mein Linker-Skript. Ich habe das Orginal von Atmel 
verwendet und ich versuche dieses anzupassen.

Das SDRAM muss ich auch verschieben, weil ich möchte ein malloc machen 
ohne das ich eine Page anlegen muss. Ich habe es auf 0xB0000000 gelegt. 
Segmentation ist by default aktiviert. Das SDRAM -> mit malloc 
funktioniert bereits über 0xB.... Adressen die ja auf 0x1... Adressen 
gemappt werden. Das geht ju hu!

Aber -> Wenn ich den Kernel Code linke, dann möchte ich das dieser auf 
0x0... Adressen gelinkt ist aber über 0xA... Adressen angesprochen wird 
also über P2 Segment.

Deshalb habe ich versucht im Linker skript die VMA und LMA anzupassen. 
Leider ohne erfolg. Das Programm läuft zwar, aber malloc funktioniert 
nicht mehr.

Jemand eine Idee wie das geht ?

Danke mgiaco

von mgiaco (Gast)


Lesenswert?

niemand eine Idee?

Geht das überhaupt mit VMA und LMA ?

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.