diretiva org no MikroC

Enviado:
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

Enviado:
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.

Enviado:
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.
+++

Enviado:
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

Enviado:
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
+++