Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Calcolo dimensione codice generato da SDCC

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Calcolo dimensione codice generato da SDCC

Messaggioda Foto Utenteposta10100 » 3 dic 2014, 19:48

Ciao a tutti,
sto sviluppando del codice per un PIC e come compilatore utilizzo SDCC.
Mi piacerebbe leggere, dopo ogni compilazione, la quantità di area dati utilizzata.
Il massimo sarebbe anche leggere la quantità massima di ram allocata.

Un tempo usavo la versione free di BoostC++ e forniva entrambe queste info.

Ho provato a cercare in rete ma non sono stato fortunato, qualcuno ha qualche idea?

Grazie!

O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[2] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto UtenteeAlucarD » 3 dic 2014, 20:01

hai provato ad aprire i file .mem e .map che ti crea :?:
Avatar utente
Foto UtenteeAlucarD
1.210 3 5
Expert
Expert
 
Messaggi: 560
Iscritto il: 4 lug 2014, 11:01

0
voti

[3] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto Utenteposta10100 » 3 dic 2014, 21:01

Si, dal .map o dal punto .hex in qualche modo le tiro fuori le info, ma vorrei evitare, se possibile, di post-processare i files...

O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[4] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto UtenteWALTERmwp » 3 dic 2014, 22:26

Ciao Foto Utenteposta10100, rimanendo su SDCC, anche se potresti aver già verificato, cercherei eventuali flag(s) per la linea di comando che magari abilitano la generazione e o conservano un output su file con le informazioni che cerchi.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

3
voti

[5] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto Utenteposta10100 » 4 dic 2014, 0:48

Ho cercato un po nei file sparsi per il disco... le info che cerco sono nel file .map, non proprio semplici da trovare ma ci sono.
Mi sono scritto un semplice script per estrarli, basta posizionarsi nella directory in cui c'è il file .map e lanciarlo, oppure lo si può lanciare da una qualsiasi posizione passando però il path come argomento.

Riporto lo script, nel caso fosse utile a qualcuno.

Codice: Seleziona tutto
#!/usr/bin/tcsh
set DIR=$1
set MAP_FILE=`find $DIR -name "*.map"`
set FLASH_USED_SIZE=`grep "program addresses used" $MAP_FILE | awk '{print $1}'`
set PIC_NAME_LOWER=`grep -m 1 "extern PIC" $MAP_FILE | awk '{print $5}' | sed 's/.asm//'`
set PIC_NAME=`echo $PIC_NAME_LOWER | tr "[:lower:]" "[:upper:]"`
set HTML_FILE="/usr/local/share/doc/gputils-1.4.0/html/$PIC_NAME-feat.html"
set ROM_SIZE_LINE_NUM=`grep -n "Size of ROM" $HTML_FILE | awk '{print $1}' | sed 's/://'`
set ROM_SIZE_LINE_NUM=`expr $ROM_SIZE_LINE_NUM + 1`
set ROM_SIZE=`head -n $ROM_SIZE_LINE_NUM $HTML_FILE | tail -n 1 | sed -e 's/.*>\(.*\) words<.*/\1/'`
set P_ROM=`echo "scale=2;$FLASH_USED_SIZE*100.0/$ROM_SIZE" | bc`
set RAM_SIZE_LINE_NUM=`grep -n "Symbols - Sorted by Address" $MAP_FILE | awk '{print $1}' | sed 's/://'`
set LAST_RAM_ELEMENT_HEX=`tail -n +$RAM_SIZE_LINE_NUM $MAP_FILE | grep data | grep -v program | grep -v $PIC_NAME_LOWER | tail -n 1 | awk '{print $2}' | sed 's/0x//'`
set LAST_RAM_ELEMENT_HEX=`echo $LAST_RAM_ELEMENT_HEX | tr "[:lower:]" "[:upper:]"`
set RAM_USED=`echo "ibase=16; $LAST_RAM_ELEMENT_HEX" | bc`
set RAM_SIZE_LINE_NUM=`grep -n "Size of all GPRs" $HTML_FILE | awk '{print $1}' | sed 's/://'`
set RAM_SIZE_LINE_NUM=`expr $RAM_SIZE_LINE_NUM + 1`
set RAM_SIZE=`head -n $RAM_SIZE_LINE_NUM $HTML_FILE | tail -n 1 | sed -e 's/.*>\(.*\) bytes<.*/\1/'`
set P_RAM=`echo "scale=2;$RAM_USED*100.0/$RAM_SIZE" | bc`
echo "PIC: $PIC_NAME"
echo "Used $FLASH_USED_SIZE flash words over $ROM_SIZE ($P_ROM%)"
echo "Used $RAM_USED ram bytes over $RAM_SIZE ($P_RAM%)


O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[6] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto UtenteeAlucarD » 4 dic 2014, 11:12

beh piu' che uno script pensavo, una volta individuati, a un app. in java o python(tk) con un timer che ogni tot. (1s...)

cerca il map
legge
in una mini gui sempre in primo piano stampa il valore (stile xeyes)
come fosse un plugin di un ide :mrgreen:

Immagine

o da terminale, clear, ls *map* ordinato per data, tail per estrarre il piu' recente, elabora, pausa, ripeti :mrgreen:
Avatar utente
Foto UtenteeAlucarD
1.210 3 5
Expert
Expert
 
Messaggi: 560
Iscritto il: 4 lug 2014, 11:01

0
voti

[7] Re: Calcolo dimensione codice generato da SDCC

Messaggioda Foto Utenteposta10100 » 4 dic 2014, 14:08

Il map lo riscrive ogni volta quindi ne hai sempre uno solo :)
A me serve solo per capire se ho ancora spazio (specie per i PIC con poca flash), quindi lanciarlo a mano non é un problema.
Peró se vuoi scriverlo lo provo volentieri :mrgreen:
O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti