Nuovo codice inizializzazione variabili C18

11 Anni 7 Mesi fa #1 da Pablito
Nuovo codice inizializzazione variabili C18 è stato creato da Pablito
Ciao Ragazzi,

sto realizzando un nuovo codice di startup in C18 al fine di rendere
un pò più professionale e leggibile il codice di inizializzazione delle variabili.
Mi trovo però davanti ad un piccolo quesito. Nella riscrittura mi sono accorto
che la variabile che solitamente viene usata e cioè la _cinit se cambiata di
nome non viene accettata dal compilatore. Vi scrivo la def della variabile che
poi in realtà è una struttura messa in rom:

extern far rom struct
{
unsigned short num_init;
struct _init_entry
{
unsigned long from;
unsigned long to;
unsigned long size;
}
entries[];
} _cinit;

Mi viene da pensare che sia una variabile speciale che viene interpretata dal compilatore
in modo speciale, infatti non a casa viene allocata nella section .cinit, che proprio non a caso
contiene i dati di inizializzazione delle variabili.
Se vi dieta gia scontrati con questo piccolo inconveniente, vi chiedo supporto in merito.
Saluti, Pablito!

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pablito
  • New Member
  • New Member
Di più
11 Anni 7 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Nuovo codice inizializzazione variabili C18
Ciao,

in generale eviterei di cambiare il codice prima del main.
Se guardi le user guide viene consigliato solo di aggiungere del codice nelle funzioni dedicate che vengono chiamate prima del main, ma non di modificare il codice scritto prima del main.

la variabile citata e il problema riscontrato non lo conosco ma dal momento che e' extern vuol dire che ci sono altre parti del codice in viene usata.

Quale esigenza ti porta a tali modifiche?

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #3 da Pablito
Risposta da Pablito al topic Nuovo codice inizializzazione variabili C18
Ciao,

in realtà la mia volontà va proprio nella direzione della più profonda conoscenza
dello stesso compilatore. Quindi sto cercando suluzioni alternative, più flessibili
e modulari di quelle offerte dal compilatore. Ciò detto, ho trovato la soluzione
al mio problema, ed a breve, se vi fa paicere vorrei proporvi il mio lavoro, con
un linker script totalmente revisionato, e un Pilot_Project da testare al fine
di evidenziarne errori o malfunzionamenti (con ovviamente la parte di inizializzazione
delle variabili revisionata).

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pablito
  • New Member
  • New Member
Di più
11 Anni 7 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Nuovo codice inizializzazione variabili C18
Vuoi proprio andare controcorrente! :)

Certamente se riassumi ragioni, modifiche e risultati, tornera' utile ad altri.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #5 da Pablito
Risposta da Pablito al topic Nuovo codice inizializzazione variabili C18
Ciao,

in realtà non voglio andare controcorrente. Anzi, al contrario voglio comprendere al meglio
come funziona il compilatore ed il linker. Se conosci il linguaggio con ogni sua sfaccettatura,
sei certamente in grado di comprenderne il funzionamento in ogni condizione.
La prima cosa che ho notato aprendo il file c018.c s, si comprende ben poco e chiunque voglia
integrare qualcosa tra quelle righe, certamente si scontrerà con un cosice ostico e poco
integrabile. Questa è la giustificazione a quanto sto cercando di fare.

Saluti e a presto. Sto finendo di debuggare il nuove codice e se tutto funziona lo condivido
con voi tutti.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pablito
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login