Página 1 de 1

diretiva org no MikroC

MensagemEnviado: 22 Set 2011 22:30
por marcelo campos
Amigos

alguém saberia me dizer como posso fazer o MikroC compilar e endereçar acima de um determinado endereço, como por exemplo 0x200 ?
estou tentantdo mas ele, inclusive no help, quer que pra cada função eu defina um endereço! aí fica difícil...

obrigado e abraço,

Marcelo

MensagemEnviado: 23 Set 2011 23:50
por tcpipchip

MensagemEnviado: 24 Set 2011 09:09
por marcelo campos
tcpipchip escreveu:http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/pic/help/linker_directives.htm


Valeu TCP mas, aí cai no mesmo ponto que eu falei: ele quer que especifique por função

Código: Selecionar todos
void func(int par) org 0x200 {
// Function will start at address 0x200
  asm nop;
}

Directive org
Directive org specifies a starting address of a routine in ROM. Directive org is appended to the function definition. Directives applied to non-defining declarations will be ignored, with an appropriate warning issued by the linker.


o que é inviável quando quero na verdade é que ele coloque tudo acima de um certo endereço.

MensagemEnviado: 24 Set 2011 09:31
por andre_luis
Marcelo,


Esse tipo de diretiva, pelo que entendo, deveria estar na configuração do linker, que é quem aloca as regiões de endereçamento de memória estática e dinâmica do microcontrolador. Tive de fazer isso no IAR para uma determinada família de microcontroladores da Texas, mas a arquitetura do core era diferente, Von Newman.

Esse tipo de controle, não vejo muita vantagem de ser implementado num core de arquitetura Harward, onde não existe a possibilidade de a memória de programa e de dados estarem compartilhadas na mesma faixa de endereçamento.

Além do mais, na linguagem C, o gerenciamento do uso da memória, já é feito implicitamente pelo compilador.

Posso não estar respondendo á sua pergunta, mas espero que isso ajude a analisar a real necessidade dessa manipulação.

+++

MensagemEnviado: 24 Set 2011 09:59
por marcelo campos
Olá Andre

Sim ajuda bastante, e também concordo que esta configuração deve(ria) ficar no linker, no C18 é assim e estou bem acostumado à usá-la nele mas no MikroC a coisa engasgou.

Na verdade é que o programa deve ficar acima de determinado endereço pois abaixo fica o bootloader.

E no C18 é super simples de fazer, programas compilados nele ficam compatíveis plenamente convivendo pacificamente com o bootloader que está alocado na região baixa da memória de programa

valeu

Marcelo

MensagemEnviado: 24 Set 2011 10:41
por andre_luis
Marcelo,


Realmente, faz sentido.
Bom, quando mexi com o dsPIC, e no caso, quem carregava o programa principal era o bootloader, e assim não tinha de me preocupar com essa carga inicial.

Em todo o caso, em voce precisando eliminar essa etapa, gravando junto o bootloader com o programa, pode tentar essas possibilidades :

1 ) Verificar se a diretiva Inline foi prometido pelo suporte da MikroC já está implementado :
http://www.mikroe.com/forum/viewtopic.p ... 45#p123145

2 ) Utilizar a diretiva Pragma Orgcall, conforme postado abaixo :
http://www.asm51.eng.br/phpBB/viewtopic.php?t=7975

3 ) Usar a diretiva Pragma funcorg , conforme sugerido aqui :
http://www.mikroe.com/forum/viewtopic.p ... 721#p69721


+++