O linkador no Nios® II IDE não colocará automaticamente uma subrotina em uma memória que não seja designada como .text.
Para incluir a subrotina em uma seção de memória específica que não seja .text (neste exemplo, .rwdata), faça o seguinte:
- Defina uma seção personalizada para esta rotina específica, por exemplo: void my_subroutine(void) __attribute__ ((seção (".usersection"));
- Abra o arquivo generated.x que está localizado na pasta _syslib/depuração/system_description e procure a __ram_rwdata_end
- Adicione as seguintes linhas ao arquivo generated.x:
.usersection: AT (LOADADDR (.rwdata) SIZEOF (.rwdata) ){
FORNECER (_alt_partition_usersection_start = ABSOLUTO(.));
*(.usersection.usersection.*)
. = ALINHAR(4);
FORNECER (_alt_partition_usersection_end = ABSOLUTO(.));} >onchip_ram
PROVIDE (__flash_alt_partition_usersection_start = LOADADDR(.usersection));
- Modifique alt_load.c para executar a operação de cópia da seção personalizada. Veja abaixo a referência:
vazio de __flash_alt_partition_usersection_start;
vazio de externação _alt_partition_usersection_end;
vazio de externação _alt_partition_usersection_start;/*
* Copie a seção .usersection.
*/
alt_load_section (&__flash_alt_partition_usersection_start,
&_alt_partition_usersection_start,
&_alt_partition_usersection_end);