PIC (per esperti): eseguire codice da memoria esterna

Ciao!

Mi domandavo se fosse possibile far eseguire ad un PIC del codice contenuto, ad esempio, in una eprom esterna. Ovviamente all'interno del pic sarà necessario scrivere delle funzioni per l'ccesso alla eprom, ma non è questo il punto. Quello che non mi è chiaro è come far eseguire al micro l'istruzione letta dalle eprom e come tradurre il codice scritto in C in "linguaggio macchina", pronto per essere memorizzato sulla eprom. L'unica soluzione che mi viene a mente è leggere il codice-istruzione dalla eprom e con un case a 35 scelte (35 sono le istruzioni di un 16f877a) decidere di conseguenza quanti parametri leggere, per poi far eseguire il tutto al micro... Avete qalche link/consiglio da darmi?

Grazie a chi vorrà aiutarmi

Reply to
ice
Loading thread data ...

"ice" ha scritto

La cpu interna non puo' caricare direttamente i codici da un'area di memoria diversa da quella prevista. Quello che proponi e' la realizzazione di un interprete/esecutore software, in questo caso nella eprom potrebbero esserci codici qualsiasi (anche istruzioni inventate da te) che vengono lette ed "eseguite" dalla tua macchina virtuale... come idea non e' molto diverso dal Java, i cui bytecodes non vengono eseguiti dalla cpu, ma dall'apposito programma, la virtual machine appunto.

Claudio F

Reply to
Claudio F

contenuto,

è

il

memorizzato

dalla

Alcuni 16F e molti 18F hanno la funzione di self-programming, ovvero possono scriversi in memoria il codice programma in fase di runtime. Non so dirti molto di piu' perche' personalmente non ho mai usato questa tecnica. Se utilizzi picbasic pro esiste gia' l'istruzione writecode. Cerca sui datasheet dei pic che usi sono sicuro che troverai qualcosa.

Ciao ciao Lorenzo

Reply to
Loryball

Questo è un particolare che non conoscevo... appena ho un attimo provo ad approfondire l'argomento Grazie!

Reply to
ice

esserci

dal

Quindi dovrei scrivermi anche apposito compilatore?

Reply to
ice

"ice" ha scritto

Piu' che dovresti direi potresti, nel senso che potresti inventarti istruzioni tue codificate/codificabili come ti pare e fare in modo che il programma interprete sul pic le esegua.

Se queste istruzioni invece fossero coincidenti con la codifica dell'assembler del pic (che e' la prima cosa che avevi chiesto) allora non servirebbe nessun compilatore aggiuntivo, ma in ogni caso sul pic andrebbe caricato un... emulatore di pic ;)

Claudio F

Reply to
Claudio F

"Loryball" ha scritto

Tuttavia questa e' un'operazione lenta e il numero di riscritture e' comunque limitato, e' ok come sistema di programmazione, ma non lo e' altrettanto come sistema di boot ad ogni accensione. Per fare questo un micro deve poter fare il fetch delle istruzioni direttamente da un'area di memoria esterna, magari una ram che viene di volta in volta caricata con il codice necessario (come accade per tutti i programmi dei nostri pc)... i pic non hanno questa possibilita', tipica dei microprocessori puri, o di altri microcontrollori con caratterisiche da microprocessore (mi pare che gli atmel lo permettano, gli 8051 anche).

Claudio F

Reply to
Claudio F

Il Fri, 07 May 2004 12:03:31 GMT, "ice" ha scritto:

devo ancora studiarmi bene la cosa, ma alcuni pic della serie 18 (ad esempio il più grande 18f8720) possono indirizzare della memoria esterna a

16 bit.

MazE

-- per rispondere raddoppiate z & t - double z & t to reply

formatting link

Reply to
MazE

Possono anche funzionare in modalità microprocessore puro...

Reply to
Loryball

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.