- Messaggi: 18
- Ringraziamenti ricevuti 0
Compilazione in assembler.
1 Anno 11 Mesi fa #1
da mauri
Compilazione in assembler. è stato creato da mauri
Buongiorno a tutti del forum.
E' da tanto tempo, che ho scritto un programmino in assembler per una scheda elettronica auto costruita. Ora mi vedo costretto a rivedere il programma scritto con il vecchio compilatore MPASMWIN.
Stò usando l'ambiente MPLAB X IDE 5.45 con il compilatore XC8 2.32 settato con il programma "pic-as".
Ho modificato il programma in assembler per adattarlo alle specifiche del nuovo compilatore. Ora non mi dà nessun errore di compilazione, ma mi memorizza il codice, nella memoria EEPROM invece che nella memoria flash.
Sicuramente c'è qualche stringa da aggiungere al programma, che io ignoro, in modo che faccia fare al compilatore il suo dovere.
Vi ringrazio anticipatamente.
Maurizio.
E' da tanto tempo, che ho scritto un programmino in assembler per una scheda elettronica auto costruita. Ora mi vedo costretto a rivedere il programma scritto con il vecchio compilatore MPASMWIN.
Stò usando l'ambiente MPLAB X IDE 5.45 con il compilatore XC8 2.32 settato con il programma "pic-as".
Ho modificato il programma in assembler per adattarlo alle specifiche del nuovo compilatore. Ora non mi dà nessun errore di compilazione, ma mi memorizza il codice, nella memoria EEPROM invece che nella memoria flash.
Sicuramente c'è qualche stringa da aggiungere al programma, che io ignoro, in modo che faccia fare al compilatore il suo dovere.
Vi ringrazio anticipatamente.
Maurizio.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- mauri
- Autore della discussione
- New Member
Riduci
Di più
1 Anno 10 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Compilazione in assembler.
Sotto l'ambiente di sviluppo MPLAB X non ho più lavorato in assembly (escluso debug di codice C).
In ogni modo il programma viene posizionato tramite la direttiva ORG 0xXXXX dove XXXX è l'indirizzo dove posizionare il programma.
Tra le impostazioni del progetto è anche possibile impostare degli offset o esclusioni per la memoria programma.
Gli offset sono aggiunti a eventuali indirizzi impostati tramite ORG 0xXXXX nel programma.
Potresti controllare anche tali impostazioni.
Saluti,
Mauro
In ogni modo il programma viene posizionato tramite la direttiva ORG 0xXXXX dove XXXX è l'indirizzo dove posizionare il programma.
Tra le impostazioni del progetto è anche possibile impostare degli offset o esclusioni per la memoria programma.
Gli offset sono aggiunti a eventuali indirizzi impostati tramite ORG 0xXXXX nel programma.
Potresti controllare anche tali impostazioni.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
1 Anno 10 Mesi fa - 1 Anno 10 Mesi fa #3
da mauri
Risposta da mauri al topic Compilazione in assembler.
Ti ringrazio Mauro,Guardando sulla rete ho trovato una direttiva per far caricare il programma nella "Memoria Programma":
PSECT code
Ora il problema è indirizzarlo all'inizio dell'area di memoria e non alla fine come accade adesso, nonostante aver messo le direttive
ORG 0x0000
Nel programma ho inserito le routine da eseguire in interrupt; ma non essendo indirizzate nella zona giusta non hanno effetto.Per ogni evenienza allego il progetto in questione.
Maurizio.
PSECT code
Ora il problema è indirizzarlo all'inizio dell'area di memoria e non alla fine come accade adesso, nonostante aver messo le direttive
ORG 0x0000
Nel programma ho inserito le routine da eseguire in interrupt; ma non essendo indirizzate nella zona giusta non hanno effetto.Per ogni evenienza allego il progetto in questione.
Maurizio.
Allegati:
Ultima Modifica 1 Anno 10 Mesi fa da mauri.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- mauri
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 18
- Ringraziamenti ricevuti 0
1 Anno 6 Mesi fa - 1 Anno 6 Mesi fa #4
da mauri
Risposta da mauri al topic Compilazione in assembler.
Ho avuto un'pò di problemi organizzativi ed ho lasciato perdere questo il progetto.
Allego il programma modificato con i vettori di indirizzamento che sono visibili nel programma dopo la direttiva "PSECT code", che ho evidenziato nel sorgente. Una volta messo queste parti di codice, occorre inserire nella direttiva "Project properties" alla voce "pic_as Linker" nella griglia "Custom Linker Options" la seguente stringa "-Pres_vect=0h;-Pint_vect=4h".
In poche parole bisogna riportare il nome dato alle etichette nel programma precedute da "-P" ed assegnarle ad un indirizzo in esadecimale.
Spero con questo di essere stato utile ad altre persone, che come me, sono costretti a rivedere ed eventualmente modificare un progetto fatto con il vecchio compilatore .
Un saluto a tutti
Maurizio
Allego il programma modificato con i vettori di indirizzamento che sono visibili nel programma dopo la direttiva "PSECT code", che ho evidenziato nel sorgente. Una volta messo queste parti di codice, occorre inserire nella direttiva "Project properties" alla voce "pic_as Linker" nella griglia "Custom Linker Options" la seguente stringa "-Pres_vect=0h;-Pint_vect=4h".
In poche parole bisogna riportare il nome dato alle etichette nel programma precedute da "-P" ed assegnarle ad un indirizzo in esadecimale.
Spero con questo di essere stato utile ad altre persone, che come me, sono costretti a rivedere ed eventualmente modificare un progetto fatto con il vecchio compilatore .
Un saluto a tutti
Maurizio
Ultima Modifica 1 Anno 6 Mesi fa da mauri.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- mauri
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 18
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.