Artikel-ID: 000081636 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 11.09.2012

Warum schließt mein Linker-Skript meinen Subteil nicht in den Zielspeicherbereich ein, wenn ich (void) __attribute__ ((Abschnitt (".rwdata")) ) im Code habe?

Umgebung

  • Intel® Nios® II Prozessor
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Der Linker in der Nios® II IDE legt nicht automatisch einen Subspeicher in einen Speicher, der nicht als .text gekennzeichnet ist.

    Gehen Sie folgendermaßen vor, um den Subspat in einen anderen Speicherabschnitt als .text (in diesem Beispiel .rwdata) aufzunehmen:

    1. Definieren Sie einen benutzerdefinierten Abschnitt für diese spezifische Routine, z. B.: void my_subroutine(void) __attribute__ ((Abschnitt (".usersection"));
    2. Öffnen Sie die datei generated.x, die sich in Ihrem Ordner _syslib/Debugging/system_description befindet, und suchen Sie nach dem __ram_rwdata_end
    3. Fügen Sie der generierten.x-Datei die folgenden Zeilen hinzu:


    .usersection: AT (LOADADDR (.rwdata) SIZEOF (.rwdata) )

    {
    GEBEN (_alt_partition_usersection_start = ABSOLUT(.));
    *(.usersection .usersection.*)
    . = ALIGN(4);
    GEBEN (_alt_partition_usersection_end = ABSOLUT(.));

    } >onchip_ram

    PROVIDE (__flash_alt_partition_usersection_start = LOADADDR (.usersection));

    1. Ändern Sie alt_load.c, um den Kopiervorgang für den benutzerdefinierten Abschnitt durchzuführen. Weitere Informationen finden Sie unten:

    externe void __flash_alt_partition_usersection_start;
    extern void _alt_partition_usersection_end;
    externe void _alt_partition_usersection_start;

    /*

    * Kopieren Sie den Abschnitt .usersection.

    */
          
    alt_load_section (&__flash_alt_partition_usersection_start,
    &_alt_partition_usersection_start,
    &_alt_partition_usersection_end);

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.