ID do artigo: 000079417 Tipo de conteúdo: Solução de problemas Última revisão: 17/12/2013

Por que o erro "relocação truncada para caber: R_NIOS2_CALL26" acontece quando o código Nios II é colocado em locais separados de memória?

Ambiente

    Processador Intel® Nios® II
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

Esse erro acontece quando as funções estão localizadas em um local de memória com mais de 256 MB além da memória principal porque o compilador Nios II usa a instrução de chamada que tem limitação de limite de 256 MB.

 

Resolução

Há duas soluções alternativas para este problema:

1) No ACDS versão 13.1, a opção -relax-all é implementada para usar a instrução de chamada em vez de instruções de chamada. Em Ferramentas de compilação de software para Eclipse, adicione a opção -Wa,-relax-all nas propriedades do aplicativo ou BSP como sinalizadores do usuário.

Esta solução alternativa pode afetar o desempenho do software, pois a instrução do chamador usa mais instruções de montagem em comparação com as instruções de chamada.

2 ) A instrução de chamada não computa os 4 bits MSB do endereço, daí a limitação de limite de 256 MB. Localize as memórias para que os 4 bits MSB dos endereços básicos de memória sejam os mesmos, para garantir que as funções estejam dentro do limite de 256 MB.

Eg. SDRAM: 0x10000000, memória onchip: 0x12000000

ou SDRAM: 0x08000000, memória onchip: 0x02000000

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.