Página 1 de 1

KEIL Program Size

MensagemEnviado: 25 Jun 2012 23:59
por Maffeis
Boa noite

Como eu faço para saber o tamanho do meu código em porcentagem.

Gostaria de saber quanto ainda me sobra de memoria.

Estou fazendo um código mais eu não fiz quase nada ainda e no flash magic está dizendo que eu utilizei mais de 20% da memoria.

Alguem saberia me explicar essa msg.

Program Size: Code=7152 RO-data=256 RW-data=108 ZI-data=612

Obrigado.

MensagemEnviado: 26 Jun 2012 07:59
por fabim
Program Size: Code=7152 RO-data=256 RW-data=108 ZI-data=612
CODE = seu codigo de execução, ou software
RO= Read only data, ou suas constantes
RW = Rad and Write data, Ou RAM
ZI = Zero initialization data, ou a quantidade de ram que o startup zera, isto inclui heap size, etc...

Certo ? Tendeu ?

MensagemEnviado: 26 Jun 2012 20:38
por Maffeis
Valeu fabim

Vou precisar rever meu código (aprender a programar realmente)

Se continuar nesse ritmo eu não chego nem na metado do código.

Como eu faço para saber se o controlador vai suportar o tamanho do código.

Quando eu escolho um controlador com 8K de programa ou um de 32K por exemplo.

Eu vi um caso em que o cara precisou trocar o PIC18F252 por um PIC18F2525 (Acho que são esses os códigos) por causa do tamanho do código.

MensagemEnviado: 26 Jun 2012 21:01
por fabim
cara, me perdoe !!
Eu fiz uma promessa para um cabra aqui do fórum que eu não iria mais falar mal de uC de 8 bit, boca de porco !!
Mais me recuso, a continuar qualquer tipo de assunto onde o mesmo seja citado !!!

MensagemEnviado: 26 Jun 2012 21:05
por Rodrigo_P_A
Maffeis escreveu:Valeu fabim

Vou precisar rever meu código (aprender a programar realmente)

Se continuar nesse ritmo eu não chego nem na metado do código.

Como eu faço para saber se o controlador vai suportar o tamanho do código.

Quando eu escolho um controlador com 8K de programa ou um de 32K por exemplo.

Eu vi um caso em que o cara precisou trocar o PIC18F252 por um PIC18F2525 (Acho que são esses os códigos) por causa do tamanho do código.


não tem como, isso vc só vai aprender conforme for fazendo o programa do seu projeto.

Mas uma coisa q vc pode tentar fazer é implementar as rotinas que vc acha que vai usar mais e ver o tamanho do código chamando elas no main e desabilitando todas as otimizações de código, fora isso, só com o tempo e experiência mesmo pra começar a ter idéia de tamanho etc...

MensagemEnviado: 27 Jun 2012 20:20
por Maffeis
Não to usando PIC não

Estou usando um LPC1114 para um programador manual com display de 16x2 e teclado matricial e memoria e vou usar um LPC1768 no na placa principal (se eu aprender a mexer hahahah)

Estava por curiosidade olhando o assembly gerado junto com o engenheiro da empresa, ele conseguiu me explicar alguma coisa.

Oq seria essas otmizações de código Rodrigo?

MensagemEnviado: 28 Jun 2012 09:04
por Rodrigo_P_A
Maffeis escreveu:Não to usando PIC não

Estou usando um LPC1114 para um programador manual com display de 16x2 e teclado matricial e memoria e vou usar um LPC1768 no na placa principal (se eu aprender a mexer hahahah)

Estava por curiosidade olhando o assembly gerado junto com o engenheiro da empresa, ele conseguiu me explicar alguma coisa.

Oq seria essas otmizações de código Rodrigo?


Todos compiladores tem otimização de código cada um com algoritimos diferentes, falando a grosso modo eles analisam o código gerado e fazem alterações, removem variáveis não usadas em seu código, podem reaproveitar códigos que são muito usados, remover outros que não são usados.

eu não compararia o código gerado com as otimizações habilitadas, tem certas otimizações que dão problema no código, aí vc vai ter que começar a aprender a usar as diretivas do compilador para ativar ou desativar otimização em certas partes do código, eu já tive problemas com isso, com a otimização ativada meu código simplesmente não funcionava, depois eu aprendi a desativar em certas partes e aí consegui usar.

é isso, dá uma pesquisada no site da Keil sobre as otimizações.

MensagemEnviado: 28 Jun 2012 14:58
por RobL
Você verificou se seu código foi gerado com optimização no máximo, para economizar flash (pois há outras que reduzem o tempo de processamento) ?
Se sim e se estiver bem escrito não há mais o que fazer.

Se quiser reduzir, evite funções prontas, ou melhor , use as prontas que você saiba quanto lhe consome de flash. Algo como printf() e similares, jamais usar.

Meus códigos, desconfio sempre que posso melhorar. Quase sempre cabe uma mexida que economiza flash, mas nem sempre é acompanhado da mesma redução no tempo de processamento.

Em trabalhos pequenos com pouca flash, uso C como se estivesse com um organizador para Assembly.
Procuro usar somente operações com inteiros positivos, sem deitar e rolar com sinais e tipos longos, mesmo quando necessito parte fracionaria. Não é prático, mas gera o resultado esperado.
Usar poucas chamadas a funções. É muito vasto para colocar tudo.
Se estiver usando um RTOS, tem que ser muito pequeno, no máximo 1K.