Forum: Mikrocontroller und Digitale Elektronik Linker Problem AVR32, AP7000, VMA LMA


von mgiaco (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang sind 2 Linker Files für den AVR32 – AP7000. Ich möchte die MMU 
verwenden deshalb versuche ich den Code in das P2 Segment zu 
verschieben. Das Funktionier auch schon nur eben noch nicht ganz. Ich 
habe noch folgendes Problem:

Im low.lds habe ich folgende MEMORY:
1
MEMORY
2
  {
3
    FLASH (rxai)     : ORIGIN = 0x00000000, LENGTH = 8M
4
    CPUSRAM (rwxa)   : ORIGIN = 0x24000000, LENGTH = 32K
5
    SDRAM   (rwxa)   : ORIGIN = 0x10000000, LENGTH = 32M  
6
  }
7
SECTIONS
8
{
9
  /* Read-only sections, merged into text segment: */
10
  PROVIDE (__executable_start = 0xa0000000); . = 0xa0000000;
11
  .interp         : { *(.interp) } >FLASH AT>FLASH
12
  .reset : {  *(.reset) } >FLASH AT>FLASH
13
    . = . & 0x9fffffff;
14
..
15
..
usw. siehe low.lds im Anhang. So funktioniert alles perfekt !

Im Linker File  high.lds habe ich folgendes gemacht:
1
MEMORY
2
  {
3
    FLASH (rxai)     : ORIGIN = 0x00000000, LENGTH = 8M
4
    HFLASH (rxai)    : ORIGIN = 0xA0000000, LENGTH = 8M
5
  
6
    CPUSRAM (rwxa)   : ORIGIN = 0x24000000, LENGTH = 32K
7
    SDRAM   (rwxa)   : ORIGIN = 0x10000000, LENGTH = 32M  
8
  }
9
SECTIONS
10
{
11
  /* Read-only sections, merged into text segment: */
12
  PROVIDE (__executable_start = 0xa0000000); . = 0xa0000000;
13
  .interp         : { *(.interp) } >HFLASH AT>FLASH
14
  .reset : {  *(.reset) } >HFLASH AT>FLASH
15
    . = . & 0x9fffffff;
16
  .hash           : { *(.hash) } >HFLASH AT>FLASH
17
  .dynsym         : { *(.dynsym) } >HFLASH AT>FLASH
18

19

usw. siehe Anhang high.lds


Ich habe also eine Memory HFLASH hinzugefügt. Beim AVR32 ist 
Segmentation default eingeschaltet das heisst alle 0xA… adressen werden 
auf 0x0… gemappt. usw.
Ich hab alle “ FLASH AT>FLASH “ auf  “ HFLASH AT>FLASH “ geändert.

>> ausschnitt aus objdump mit low.lds
1
Sections:
2
Idx Name          Size      VMA       LMA       File off  Algn
3
  0 .reset        00000008  00000000  00000000  00001000  2**2
4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
5
  1 .rela.got     00000000  00000008  00000008  00001008  2**2
6
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
7
  2 .text         00009234  00000008  00000008  00001008  2**2
8
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
9
  3 .rodata       00000084  0000923c  0000923c  0000a23c  2**2
10
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
11
  4 .gcc_except_table 00000e00  00009400  00009400  0000a400  2**9  
12
...
13
...

Ausschnitt aus objdump mit high.lds
1
Sections:
2
Idx Name          Size      VMA       LMA       File off  Algn
3
  0 .reset        00000008  a0000000  00000000  00001000  2**2
4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
5
  1 .rela.got     00000000  a0000008  00000008  00001008  2**2
6
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
7
  2 .text         00009234  a0000008  00000008  00001008  2**2
8
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
9
  3 .rodata       00000084  a000923c  0000923c  0000a23c  2**2
10
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
11
  4 .gcc_except_table 00000e00  a0009400  000092c0  0000a400  2**9
12
...
13
...


Bei Idx 4 sieht man das Problem gut, VMA und LMA sind versetzt, wieso ? 
Was mache ich da falsch kennt sich jemand damit aus?

Die Linker File sind ident bis auf VMA. So läuft es nicht was auch klar 
ist, weil die Adressen nicht stimmen.

mathias

von mgiaco (Gast)


Lesenswert?

Das Align bezieht sich nur auf den . oder. Könnte ein Problem sein oder 
wenn ich ein Align mache im Skript ?

Kann man das überhaupt so machen wie ich das mir vorstelle ?

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.