Linker dalam IDE Nios® II tidak akan secara otomatis menempatkan subroutine dalam memori yang tidak ditetapkan sebagai .text.
Untuk menyertakan subroutine di bagian memori tertentu selain .text (dalam contoh ini, .rwdata), lakukan hal berikut:
- Tentukan bagian kustom untuk rutinitas spesifik ini, misalnya: my_subroutine void(void) __attribute__ ((bagian (".usersection")));
- Buka file generated.x yang terletak di folder _syslib/Debug/system_description Anda dan cari __ram_rwdata_end
- Tambahkan baris berikut ke berkas generated.x:
.usersection : AT ( LOADADDR (.rwdata) SIZEOF (.rwdata) ){
SEDIAKAN (_alt_partition_usersection_start = ABSOLUTE(.);;
*(.usersection .usersection.*)
. = ALIGN(4);
SEDIAKAN (_alt_partition_usersection_end = ABSOLUTE(.);} >onchip_ram
PROVIDE (__flash_alt_partition_usersection_start = LOADADDR(.usersection));
- Modifikasi alt_load.c untuk melakukan operasi salinan bagian kustom. Lihat di bawah ini untuk referensi:
__flash_alt_partition_usersection_start void extern;
_alt_partition_usersection_end void extern;
_alt_partition_usersection_start void extern;/*
* Salin bagian .usersection.
*/
alt_load_section (&__flash_alt_partition_usersection_start,
&_alt_partition_usersection_start,
&_alt_partition_usersection_end);