Otimização da memoria no hitech

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Otimização da memoria no hitech

Mensagempor lafourcade » 13 Dez 2007 08:49

Amigos
Estou com o seguinte problema: Estou programando em c usando o hi-tech, utilizando 97% da memoria do meu microcontrolador e preciso fazer algumas atualizações. Eu percebi que conforme eu mudo as rotinas do meu codigo de lugar, trocando de lugar umas com as outras, dá diferença. sobra mais ou termina de vez. Pelo que eu entendi o hitech não vai dividir uma rotina meio grande em duas paginas, então da "estouro" quando ela começa em um end da flash no final da pagina. Eu tento trocar algumas de lugar mas as veses eu pego uma que eu escrevi no final do firmware e boto bem pra frente e não muda nada. Eu vou olhar no main.list e as grandes ainda estão no mesmo end delas. ou mudo uma rotina umas 5 linhas pra baixo e ja diz que estourou a memoria. Alguém sabe me dizer oque determina onde o Hi-tech vai alocar as rotinas na memória? Se eu consigo determinar qual o end de inicio de cada rotina eu consigo organizar melhor o meu codigo de modo a caber tudo.

Obrigado
lafourcade
Byte
 
Mensagens: 123
Registrado em: 20 Out 2006 06:40

Mensagempor ze » 13 Dez 2007 09:36

olá. que bom que não estou sozinho com estas inquietações. tive um probl. semelhante e usei a diretiva #pragma psect text=leepr. (o nome depois de text não é importante). Aparentemente isto obriga o compilador a colocar o código logo abaixo num início de página. Gentileza alguem confirmar ou não. Gostaria tbém de orientações sobre #pragma. (pregui de ler manual).
Otra cosa: por acaso está com TODOS os flags de otimzação ligados? (-o -zg9 = compilador antigo, o novo é um pouco+complicado. o mplab faz isso por caixa de verificação!)
A propósito, era o PIC18F252.

Abraço
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor lafourcade » 13 Dez 2007 10:22

Oi Amigo
Obrigado pela ajuda!
Poderia me explicar melhor como eu coloco essa diretiva no meu programa?

logo abaixo dos includes?
outra coisa: o meu compilador é a versão 9.5 e o mplab é a versão 8. Como eu uso as flags? Desculpe pela minha ignorancia, mas eu to começando agora com o hi-tech.
lafourcade
Byte
 
Mensagens: 123
Registrado em: 20 Out 2006 06:40

Mensagempor ze » 13 Dez 2007 10:53

Bem vindo ao melhor compilador do mundo!! Do universo!!
bem, no meu prog coloquei esta diretiva logo antes de uma função que suspeitei que ia ficar grande (leepr).
Assim:
#pragma psect text=leepr
void leeprom(void)
{
...
}
No mplab, vá em Project, Build Options..., Project, PICC Assembler, PICC Compiler de acione os "Enable Otimization" de todos os campos que aparecerem (1ou2).
Pode fazer o mesmo em Project, Build Options -> seu_arquivo.c
Obs: HITECH V.8.05 mas no 9.5 não deve ter mudado muito.

Para compilar via prompt (saudosismo) , veja meu c.bat:
picc18 -18f252 -o -zg9 %1.c. É só fazer c seu_arquivo (sem ext. .c)

Para a versão 9.x os comandos são 1 pouquinho só maiores. Se usa mplab, não vale a pena postar. (a não ser que insista MUITO, MUITO, MUITO)

Aprendamos juntos!!!
abraço
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor lafourcade » 13 Dez 2007 11:19

Cara
Muito Obrigado

Precisando...

abraço
lafourcade
Byte
 
Mensagens: 123
Registrado em: 20 Out 2006 06:40

Mensagempor LeandroPIC » 13 Dez 2007 11:28

Não mude suas rotinas de lugar.......!!!!!!!!!!

Fassa prototipos de todas as funções ai vc encolhe onde quer colocar as rotinas......

no arquivo.lst vc ve onde ela foi colocada ai é só mudar o prototipo.....

Resumindo..........

Otimização = prototipos das funções + arquivo.lst
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor ze » 13 Dez 2007 12:15

Lê (intimidade boiolística), gostei da idéia. Mai num tendi bem.
Pode tentar explicar melhor pra um burro véio? com ex.?
Obrigado!! (não, não! não é obrigado, é um agradecimento!)
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x