ID do artigo: 000081636 Tipo de conteúdo: Solução de problemas Última revisão: 11/09/2012

Por que meu script de linker não inclui minha subrotina na seção memória de destino quando eu declaro (void) __attribute__ ((seção (".rwdata")) no código?

Ambiente

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

    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:

    1. Defina uma seção personalizada para esta rotina específica, por exemplo: void my_subroutine(void) __attribute__ ((seção (".usersection"));
    2. Abra o arquivo generated.x que está localizado na pasta _syslib/depuração/system_description e procure a __ram_rwdata_end
    3. 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));

    1. 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);

    Produtos relacionados

    Este artigo aplica-se a 1 produtos

    Dispositivos programáveis Intel®

    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 prevalecerá e será a determinante. Exibir a versão em inglês desta página.