Página 1 de 1
KEIL Program Size

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

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

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

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

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

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

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

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