Eseguire programma interpretato su Arduino

Ciao! Credete sia potenzialmente possibile riuscire con un 2560 partendo dallo sketch in sd compilare e flahare un altro arduino? Ho visto che partendo dall'hex e' gia possibile farlo da sd via seriale, ma ovviamente manca tutta la parte di compilazione. :)

Se Ti scrivi il Compilatore é possibile. Prendi un Raspberry che costa come un Arduino 2560. Ciao Uwe

Non ho mai scritto un compilatore purtroppo, pero' trovo assurdo che questa cosa non sia mai stata provata da nessuno, aprirebbe un sacco di possibilita' e renderebbe l'arduino in se uno strumento molto piu' indipendente. Per esempio gli appassionati potrebbero costruirsi uno strumento atto a programmare e flashare gli arduini, fatto di arduini :) hehehe; per essere piu' chiari potenzialmente eliminerebbe la necessita' di possedere un computer vero e proprio per usare e programmare l'arduino.

@gio, Arduino monta una MCU pensata per fare da controllore di circuiti elettronici, non è un piccolo computer con sistema operativo, tipo raspberry. Inoltre è una MCU a 8bit con 2K di SRAM e 32K di Flash.

gioscarab: Non ho mai scritto un compilatore purtroppo, pero' trovo assurdo che questa cosa non sia mai stata provata da nessuno,.

Voglio sperare che stai scherzando, non puoi far girare il compilatore per AVR su Arduino, nessun modello, hai una vaga idea di quanto è grosso il codice di avr-gcc e di quanta ram richiede per girare ?

Capisco l' interesse academico della cosa. Ma un PC te lo buttano dietro oggigiorno. Se vuoi fare un sistema per programmare un ATmega oltre al compilatore Ti serve un sistema operativo, tastiera, video, memoria di massa per poter scrivere lo sketch. Ciao Uwe

hahah :), sottolineo che stavo vagamente pensando al mega 2560, solo perche' sarebbe bello riuscire a gestire tutto il processo di programmazione e testing al di fuori di un prodotto commerciale basato sulla concurrency, quindi linux, android, win o osx, al puro scopo di ricerca.

Sinceramente non ho avuto modo di scavare per determinare l'effettiva footprint dell'intero codice che serve per far girare il compilatore.

Pero' ho visto questo:

Ho personalmente provato arduino tv out ed e' piuttosto veloce nel refresh ed e' veramente bellissimo attraverso a un vecchio monitor CRT ai fosfori verdi :) e collegare la tastiera e' stato ancora piu' semplice!

La libreria TVOUT ocupa il controller per quasi tutto il tempo visto che il segnale Video deve uscire di continuo. Non ha senso usarla per cose che richiedono comunque a un altra parte del Sketch del tempo di elaborazione.

Ciao Uwe

Ciao Uwe assolutamente, pero' io stavo pensando di avere: - un arduino scheda video connesso in seriale alla massima velocita' supportata o se non abbastanza usando un protocollo parallelo a piu' pin per la parte rca o tv - un arduino scheda input mouse e tastiera che si occupa solo di quello idem come sopra - Un mega connesso agli altri per leggere la sd e far girare l'effettivo programma.

TVOUT sa mostrare pochi caratteri. Uno sketch non é leggibiel/capibile. Ciao Uwe

Ma ancora non ti entra in testa che è impossibile compilare uno sketch Arduino usando Arduino stesso ? Invece di fantasticare vai a dare un'occhiata a quanto pesa, solo memorizzazione sul disco, rigido avr-gcc e poi dimmi dove lo metti su Arduino, ma sopratutto dove prendi i vari mega di ram necessari. Per poter compilare uno sketch per Arduino come minimo ti serve un sistema Linux embedded, p.e. una Raspberry anche nella versione più piccola può farlo.

Sarebbe invece un esercizio interessante

Non con tvout o tastiera
Ma da seriale verso terminale, per cominciare
Solo scrivere lo editor di linea è un impresa
Ma se lo facevano con lo z80 e lo spectrum
Io comincerei da qui
Memoria di massa una sd
Editor di linea
E per cominciare invece di un secondo arduino con tv out un emulatore di terminale seriale
Al tv out ci penserei da ultimo
Prima editor di linea
Poi linker, che vedo più semplice del compilatore
Poi compilatore
Poi programmatore
Da ultimo tv out

Se ti va di cominciare, io ti seguo

Naturalmente la dimensione dei programmi coinvolti sarebbe eccessiva per la memoria di arduino

Sarebbe quindi necessario scrivere un interprete per arduino e tenere il software su memoria di massa

Negli anni 70 mi sembra che National semicomductor avesse addirittura un interprete basic su rom

Ripeto, se ti va di cominciare, io ti seguo

Ciao Sono ovviamente d'accordo con gli spunti dati da astro gcc non ci sta.

Non sono d'accordo con Uwe sulla risoluzione di tv out che e' settabile e bisogna sperimentare con i suoi limiti ed eventualmente la creazione di nuovi font.

Mi fa piacere docsavage che apprezzi ragionarci sopra :)

Guardando su youtube ho trovato: https://www.youtube.com/watch?v=XszcTqUQVZM Sembra proprio essere se non ho capito male un 1280 che si smazza la tastiera, la tv e un interpreter basic :)

Sono d'accordo che un interpreter sia probabilmente l'unica soluzione effettivamente e potenzialmente attuabile considerando anche la mia esperienza (che in compilatori e' piuttosto ridotta hehe)

EDIT: probabilmente anche senza memoria di massa, aggiungendo un layer che si occupa di ridurre l'overhead del linguaggio di programmazione utilizzato!

Senza memoria di massa nianche cominciare....

La ragione è evidente, a pensarci

Il programma compilato deve poter essere grande come l'intera memoria di arduino

E non ci può stare assieme al compilatore

Per non parlare di linker e compagnia bella

docsavage:
Ma se lo facevano con lo z80 e lo spectrum

C’è un “piccolo” dettaglio che ti stai scordando. :slight_smile:
Lo spectrum, e similari, avevano un interprete Basic su ROM, non un compilatore C residente, un interprete è molto più semplice di un compilatore, inoltre non memorizza il sorgente in ASCII, ma in token che corrispondono alle singole istruzioni Basic, in questo modo il sorgente occupa molto meno spazio.
Su alcuni dei primi pc basati su Z80, o 6502, era possibile usare un compilatore C, ma parliamo di macchine con minimo 32k di ram e vera memoria di massa, come i flopppy disk da 8", macchine dotate di apposita interfaccia video hardware indipendente dal micro, insomma un vero pc con architettura Von Neuman e non certo delle mcu con architettura Harvard.
Su i primissimi pc IBM, basati su 8086, dotati di memori di massa su cassetta si lavorava solo con l’interprete basic su ROM, su quelle macchine non era possibile usare un compilatore C perché non disponevano delle necessarie risorse.

C sullo spectrum mai avuto

Ma compilatore Pascal sì

Mai detto che sia facile

Ho detto che sarebbe un'impresa anche solo lo editor di linea

Non ho nemmeno accennato ad editor a tutto schermo

Inoltre il compilatore stesso sarebbe da scrivere in linguaggio interpretato....

Un casino, certamente

E aggiungo

Un ibm 5150 pc aveva 16 k di ram di serie, niente floppy e processore 8088, non 8086

Poteva montare cpm86, pcdos oppure una combinazione di compilatore Pascal e sistema operativo dedicato

Usando una mega i margini ci sarebbero…

È l’utilità che non vedo

docsavage: C sullo spectrum mai avuto Ma compilatore Pascal sì

Il Pascal, quello che girava sullo Spectrum, altre macchine similari, o sotto DOS/Apple II, era un metalinguaggio che girava tramite p-code machine, solo molto dopo è diventato un vero compilatore, per questo motivo era possibile implementarlo anche su macchine "semplici" come lo Spectrum. Sul QL Sinclair era possibile usare il compilatore C. In tutti i casi sulle mcu 8 bit è impossibile fare girare un compilatore, la limitazione è imposta dal hardware stesso, forse, dico forse, qualcosa si riesce a fare con le mcu 32/64 bit di fascia altissima, intendo compilare per gli 8 bit, non certo per loro. Se poi mettiamo nell'equazione il fatto che con meno di 100E è possibile acquistare un Tablet 10" perfettamente in grado di editare e compilare per Arduino, c'è l'apposita app, con tanto di caricamento dello sketch tramite bootloader, che senso ha tutto questo discorso ? Posso capire l'esigenza di volere un programmare Arduino stand alone che può prendere gli hex da una SD, più che fattibile con Arduino, ma voler compilare lo sketch, su Arduino, oltre ad essere inutile è pura fantascienza. :)

docsavage: Usando una mega i margini ci sarebbero...

Ma ti ci metti pure tu a vaneggiare ? Mi sa che è colpa di "lucifero". :) Prima di tutto la Mega ha solo 8k di ram e poi è una mcu con architettura Harvard, gli 8080/8086 erano microprocessori con architettura Von Neuman, solo questo particolare dovrebbe farti riflettere molto. :)