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:
- Definieren Sie einen benutzerdefinierten Abschnitt für diese spezifische Routine, z. B.: void my_subroutine(void) __attribute__ ((Abschnitt (".usersection"));
- Öffnen Sie die datei generated.x, die sich in Ihrem Ordner _syslib/Debugging/system_description befindet, und suchen Sie nach dem __ram_rwdata_end
- 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));
- Ä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);