Estou ficando sem código e sem espaço de memória de dados no ATMega328P.
O tamanho do código é grande porque usei várias bibliotecas, mas uso apenas algumas funções dessas bibliotecas.
Aparentemente, o IDE padrão está fazendo apenas um trabalho parcial na remoção de código morto (remover código e dados não referenciados).
Alguns experimentos mostram:
-
Um programa normal que usa várias bibliotecas Arduino tem 22 quilo bytes de tamanho de código.
-
Renomeie a configuração para o_setup. Renomear loop para o_loop
Adicionar
void setup () {};
void loop () {};
O tamanho do código é de 8 kilo bytes, enquanto o programa está 'vazio' efetivamente.
-
Iniciar um novo programa.
Adicionar
void setup () {};
void loop () {};
O tamanho do código é de 0,5 kilo bytes
Aparentemente, o IDE (vinculador chamado por IDE) está fazendo um trabalho de remoção de código morto 'parcial', como reduzindo o código de 22kB para 8kB (caso 1 e 2), em vez de 0,5kB (caso 3).
Como posso habilitar a função de remoção máxima de código morto (recuperar o espaço de código ocupado por funções de biblioteca não utilizadas)?