2017-04-11 2 views
0
  1. rom1 et rom2 ont des adresses différentes et ne sont pas continues!
  2. certains objets doivent être placés dans rom2.
  3. chaque fois rom1 est liée, les objets dans rom2 doivent être l'adresse fixe (rom2). En d'autres termes, rom1 doit connaître l'adresse des symboles rom2 lors de la liaison.

Puis-je lier un elfe (rom2) dans rom1?GCC reliant plusieurs banques de mémoire

+0

puis-je lier un elf (rom2) dans rom1? – linucos

+0

ou est-ce que je peux séparer les fonctions liées à rom2 de rom1 elf, en supposant que les fonctions liées à rom2 sont en mode spécial? – linucos

Répondre

0

Si je comprends bien:

  1. votre système dispose de 2 mémoires rom1 et rom2
  2. certains objets doivent être situés dans rom1, d'autres dans rom2

Votre script lien doit ressembler à ce qui suit:

MEMORY 
{ 
    rom1 : org=0x10000 len=1024 
    rom2 : org=0x40000 len=1024 
} 

SECTIONS 
{ 
    .text1 0x10000 : {foo.o(.text) } > rom1 
    .text2 0x40000 : {bar.o(.text) } > rom2 
} 

Dans la partie SECTIONS, l'éditeur de liens rassemble les sections .text de foo.o et place cette section .text dans la section de sortie .text1 commençant à l'adresse 0x10000 dans rom1.

De même, il collecte la section .text de bar.o et la place dans rom2.