Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dimensione firmware compilato per 8 bit oppure per 16 bit

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Dimensione firmware compilato per 8 bit oppure per 16 bit

Messaggioda Foto Utentelelerelele » 11 dic 2015, 16:17

ho realizzato una stazione barometrica, con lettura temperatura, umidità, pressione e via che c'ero calcolo anche l'atimetro, il tutto visualizzato da display grafico, controllo con PIC18F24K50, controllore a 8bit, questo ha 16K di memoria programma, è l'ho riempita tutta, non riesco ad infilarci altro ed avrei la necessità di implementare qualche altra routine, il programma è in C con MplabX.

Mi chiedevo se passando ad un controllore a 16bit, (mi pare che abbiano un moltiplicatore hardware), quindi mi aspetterei di avere una quantità di programma compilato minore, almeno per quanto riguarda la notevole quantità di calcoli svolti a 16 bit e qualcuno a virgola mobile, é così'?

posso quindi prendere un 16bit, per esempio da 16K ed aspettarmi che non si riempia, oppure devo comunque avere una memoria interna superiore?

Data la mia poca esperienza in merito chiedo a chi li usa tutti i giorni, sicuramente ha un''esperienza maggiore della mia.


Saluti a tutti.
Avatar utente
Foto Utentelelerelele
2.191 3 7 8
Expert EY
Expert EY
 
Messaggi: 2495
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[2] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteCandy » 11 dic 2015, 16:32

Non sapendo nulla sul codice è impossibile dire. Però 16k sono già una bella quantità di codice. Sicuro che sia ben ottimizzato e non opulento di inutilità? Alle volte un programma funzionante non è sinonimo di scritto bene.
Lo dico per avere fatto programmi anche complessi con pochi k di codice...

Ti serve per forza il real? 16 o 32 bit in virgola fissa non risolve?
Avatar utente
Foto UtenteCandy
32,4k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10132
Iscritto il: 14 giu 2010, 22:54

1
voti

[3] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteIlGuru » 11 dic 2015, 16:33

Puoi compilare quel programma in un progetto per un PIC a 16 bit e vedere quante righe di file .hex vengono fuori.
Il codice C è già tutto ottimizzato e spacca i bit in 4?
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.129 1 10 13
Master
Master
 
Messaggi: 1372
Iscritto il: 31 lug 2015, 23:32

0
voti

[4] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 11 dic 2015, 17:51

Candy ha scritto:Sicuro che sia ben ottimizzato e non opulento di inutilità? Alle volte un programma funzionante non è sinonimo di scritto bene.

Bella domanda....a livello di routine non ho generato doppioni, se è questo che intendi, ogni sub o funzione ha un suo compito ben definito, ed è richiamata all'occorrenza. L'ottimizzazione del codice la fa mplabx, altro non saprei dire.

Candy ha scritto:Ti serve per forza il real? 16 o 32 bit in virgola fissa non risolve?

Ho cercato invano una marea di notizie in merito, riuscirei a fare tutto con interi o con segno a 32 bit, a parte un calcolo dell'altimentro altitudine=44300*[1-({\frac{p}{p0}})^{\frac{1}{5.255}}], l'elevazione a potenza non sono riuscito a farla senza calcoli a virgola mobile!

IlGuru ha scritto:Il codice C è già tutto ottimizzato e spacca i bit in 4?

Non te lo so dire, mplab compila in codice ottimizzato.

comunque grazie ad entrambi per le risposte.
Avatar utente
Foto Utentelelerelele
2.191 3 7 8
Expert EY
Expert EY
 
Messaggi: 2495
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

3
voti

[5] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteCandy » 11 dic 2015, 18:02

Per l'elevazione a potenza, e tutto il restante calcolo, non riesci a sostituirlo con una tabella di costanti precalcolate e poi interpolare linearmente?
Avatar utente
Foto UtenteCandy
32,4k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10132
Iscritto il: 14 giu 2010, 22:54

3
voti

[6] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteIlGuru » 11 dic 2015, 18:03

Cioè voglio dire, tante volte per comodità si usano array di 8 caratteri per salvarci degli zeri e degli uni, quando lavorando con i bit di un char si risparmierebbe spazio, ed istruzioni utilizzando operatori bitwise..
Oppure si fanno divisioni in virgola mobile quando basterebbero una serie di differenze ecc...
Con i micro controllori si imparano certi sgami che programmando sul PC non verrebbero mai in mente.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.129 1 10 13
Master
Master
 
Messaggi: 1372
Iscritto il: 31 lug 2015, 23:32

0
voti

[7] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 11 dic 2015, 18:25

Candy ha scritto:Per l'elevazione a potenza, e tutto il restante calcolo, non riesci a sostituirlo con una tabella di costanti precalcolate e poi interpolare linearmente?

Probabilmente si, certamente posso farlo, a scapito della precisione......


IlGuru ha scritto:Cioè voglio dire, tante volte per comodità si usano array di 8 caratteri per salvarci degli zeri e degli uni, quando lavorando con i bit di un char si risparmierebbe spazio, ed istruzioni utilizzando operatori bitwise..

purtroppo devo lavorare con 12 variabili da 16 bit, con e senza segno, che contengono valori costanti letti dal sensore, e poi effettuare tutti gli altri calcoli, non ho quasi per niente varibili ad un bit, ed in caso uso la definizione BOOL di mplab.


ringrazio nuovamente per le info, vedrò come risolvere il problema.

Saluti.
Avatar utente
Foto Utentelelerelele
2.191 3 7 8
Expert EY
Expert EY
 
Messaggi: 2495
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[8] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteTardoFreak » 12 dic 2015, 2:05

Le operazioni matematiche (in generale) sono più ottimizzate su un PIC24 che su un PIC18.
Inoltre i PIC18 non hanno un vero pe proprio stack mentre i PIC24 si.
Questo vuol dire che, in linea teorica, lo stesso programma su un PIC24 occupa meno codice.
Però dipende anche molto dal compilatore.
Bisognerebbe provare.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[9] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 12 dic 2015, 13:41

Tardofreak ha scritto:Le operazioni matematiche (in generale) sono più ottimizzate su un PIC24 che su un PIC18.
Inoltre i PIC18 non hanno un vero pe proprio stack mentre i PIC24 si.
Questo vuol dire che, in linea teorica, lo stesso programma su un PIC24 occupa meno codice.

Ti ringrazio per la risposta, in effetti era quello che supponevo, avendo il programma molte operazioni, potrebbe essere utile usare un PIC24 o superiore, da quanto capisco non è possibile quantizzare il risparmio di codice/spazio usando controllori 16 bit rispetto agli 8bit.

Alla peggio riprogetterò il tutto su PIC superiore.

saluti.
Avatar utente
Foto Utentelelerelele
2.191 3 7 8
Expert EY
Expert EY
 
Messaggi: 2495
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[10] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteTardoFreak » 12 dic 2015, 14:42

Di solito, invece di riprogettare tutto, si passa ad un micro identico con taglio di FLASH superiore.
Se non vado errato il PIC18F25K50 è identico al PIC18F24K50 ma con il doppio di FLASH.
Sarebbe la soluzione migliore e più conveniente.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti