BASCOM AVR: chi era costui?

Ho da poco scaricato la versione demo di questo ambiente di sviluppo e cercando di far funzionare (per ora inutilmente) un semplicissimo progetto, ho scoperto una cosa interessante.

Entrando nella funzione di programmazione (dopo aver scelto il chip e scelto il programmatore ARDUINO STK500V2) è possibile scaricare il contenuto del programma esistente nella memoria Flash di Arduino, visualizzarlo e salvarlo su file nel formato preferito (bin o hex).

Vista la semplicità dell'operazione rispetto all'uso di altri strumenti, ho ritenuto utile segnalarlo.

Ettore Massimo Albani

Non so quale utilità possa dare la visualizzazione del file "bin" (domanda...); per quanto riguarda l'hex, una semplice riga di comando con AVRDUDE lo tira fuori rapidamente. Esistono anche altri programmi molto simpatici, probabilmente molto meno potenti di questo (che però non conosco), come AVRDUDE GUI e SINA PROG, dagli un'occhiata.

Dimenticavo di dire che non solo è possibile scaricare, ma anche modificare il contenuto della memoria Flash, quello della EEPROM e quello dei fuse ed anche fare l'upload del contenuto modificato.

Comunque ora vado a vedere quei programmi che mi hai indicato.

Sto cercando di trovare un programma che mi dia la possibilità di caricare sia la memoria Flash che quella EEPROM fornendo i relativi file HEX.

L'idea è quella di passarli all'utilizzatore che non possiede l'IDE per programmare il proprio Arduino.

Naturalmente lo stesso programma dovrebbe potermi consentire di generare il file HEX compilato con il mio IDE e quello relativo alla memoria EEPROM.

Esiste qualcosa del genere?

Max, mi dai poco credito.

AVRDUDE
A program for download/uploading AVR microcontroller flash and eeprom.

AVRDUDE è il compilatore su cui si basa l'IDE. I due programmi che ti ho elencato si basano, come l'IDE, su AVRDUDE, però ora non ricordo se hanno la funzione di compilazione, e non capisco nemmeno a cosa ti serva. Se gli fornisci il sorgente tanto vale fargli usare l'IDE, se non glielo fornisci puoi dargli solo il file compilato.
Perché non vuoi fargli usare l'IDE, hai necessità di "nascondere" Arduino o ci sono altri problemi?
Qual è il supporto finale: Arduino o uno stand-alone? Nel secndo caso sappi che ti serve comunque un minimo di programmatore.

Non può essere che non lo sai. Lo sai perchè hai lavorato sul programmatore parallelo, magari non sai nel dettaglio cosa fà ma di sicuro sai che il compilatore è avr-gcc e tutta la toolchain che abbiamo aggiornato in passato a causa del limite di memoria sopra i 64k. Comunque secondo me ti sei solo confuso. Tanto per dire qualcosa su avrdude:

Avrdude lo possiamo considerare un programma composto da una interfaccia utente a riga di comando.
In base agli argomenti forniti si attivano alcune parti di codice di avrdude così si ha la possibilità di selezionare il programmatore hardware che abbiamo intenzione di usare, quindi possiamo dire che avrdude si comporta come una interfaccia di comunicazione verso una moltitudine di programmatori hardware e i loro protocolli.

Ad esempio avrdude conosce che il programmatore avrisp mkii possiede solo l'interfaccia usb quindi attiva il codice per cercare il programmatore su un porta usb del pc cosa che non farebbe se collegassimo il vecchio avrisp che ha interfaccia seriale.

Ogni programmatore hardware che possiede un protocollo richiede ad avrdude il minimo sforzo per svolgere le funzioni previste perchè in realtà è il programmatore hardware che dialoga in modo ICSP con il microcontroller da programmare. Diverso è il discorso di programmatori su porta parallela sprovvisti di protocollo, allora avrdude gestisce la PP in modo che si comporti come una connessione ISP.

In linea di massima quello che fa bascom lo fa anche avrdude, solo che bascom ha una interfaccia GUI più intuitiva da usare.

Ciao.

cyberhs:
Naturalmente lo stesso programma dovrebbe potermi consentire di generare il file HEX compilato con il mio IDE e quello relativo alla memoria EEPROM.

Se vuoi rimanere in tema Arduino allora usa AVR studio e la sua toolchain C, puoi fare di tutto di più, è originale Atmel ed è totalmente free.

@cyberhs,
L'ambiente di sviluppo Bascom-AVR è un ambiente ricchissimo di librerie, è sul mercato da oltre 15 anni ed in continuo sviluppo,
è possibile programmare in uno pseudo Basic compilato molto potente che molti sostengono essere più ottimizzato di avr-gcc in termini di compressione del codice e quindi di esecuzione del firmware.
E' ricchissimo di tools integrati per la gestione di periferiche di tutti i tipi dai display grafici a quelli a colore e molto altro.
E' possibile inoltre creare custom instruction in assembly e chiedere di crearne di nuove personalizzate direttamente alla azienda.
Chiaramente visto che si tratta di un prodotto professionale ha un piccolo svantaggio che costa un tantino se si vuole la versione prof che supporta anche un file system DOS e gli Xmega.

Ma devo dire che è un ambiente a mio avviso molto potente specie se si vogliono sviluppare firmware professionali per gli avr Xmega in abbinamento di avrstudio con il quale è possibile effettuare il debug dei sorgenti scritti in bascom.

ciao

@ Mauro: sì, si è trattato di un refuso, mi ero appena svegliato, comunque grazie per la segnalazione :slight_smile: ; ciò che intendevo era il fatto che permetteva di caricare i file in memoria flash e eeprom e l'ho chiarito dopo (ma anche nell'intervento precedente), tant'è che gli ho detto che se parte dai file sorgenti deve usare l'IDE; infatti quando ho parlato dei due programmi ad interfaccia grafica ho detto "non so se compilano" riferendomi proprio al fatto che non sapevo, avendoli usati un istante ciascuno, se si appoggiassero ad avr-gcc.

AVR Studio è free ed è potentissimo, ma ad una prima occhiata, mi è sembrato molto meno amichevole degli altri citati.

BASCOM AVR: chi era costui? ... perchè era?

Avrstudio è l'ambiente originale di Atmel con il quale è possibile programmare in assembly o utilizzando il compilatore avr-gcc.

Mentre Bascom-avr è un ambiente di sviluppo indipendente completo di IDE, di compilatore, programmatore, simulatore etc) che va benissimo per sviluppare firmware su arduino...(su tutti i micro avr Atmega e Atxmega) anzi di sicuro ne vengono incrementate le performance.
Supporta 24 programmatori diversi tra cui il famosissimo "Sample Electronics Parallel Programmer" con il quale è semplisissomo creare cloni di arduino o stand alone. (SEPP non necessita di hardware supplementare o programmatori esterni o bootloader ...)
Di certo non potevano mancare tra questi le due opzioni per arduino e la modalità stk500v2.

Sento la necessità di dare qualche spiegazione e, comunque, grazie a tutti per i loro interventi.

Per Michele:
figurati se ti sottovaluto: da sempre sei il mio mentore!
so che cos'è AVRDUDE, ma l'interfaccia carattere la può usare un programmatore, non certo un utilizzatore finale; certo potrei creare un file batch che piloti avrdude, ma vorrei evitarlo se possibile: con tutte le opzioni che possiede è facile confondersi (sono un quasi-novellino, non dimenticarlo); il file BIN è solo un file più compatto rispetto all'HEX: il primo è una sequenza di byte, mentre il secondo è la sua rappresentazione ASCII; devo fornire all'utilizzatore finale solo l'immagine della Flash e della EEPROM ed un programma che, attraverso la USB di Arduino MEGA, li carichi in Arduino (il motivo lo lascio immaginare...); ovviamente i file Flash ed EEPROM li genero con il mio IDE.

Per cyclone:
"chi era costui" è solo un riferimento alla famosa frase di Don Abbondio ("I promessi sposi" - Manzoni); condivido la tua valutazione su BASCOM, anche se ancora devo studiarlo, ma non quella di accoppiarlo ad AVR STUDIO (leggi risposta ad Astrobeed);

Per Astrobeed:
ho scaricato l'ultima versione AVR STUDIO ma è elefantiaca, sullo stile degli utimi ambienti di sviluppo MICROSOFT basati su .NET: che bei tempi erano quelli del VB (con tutte le sue limitazioni)! Anche se potentissima, difficilmente la userò;

cyberhs:
Per Astrobeed:
ho scaricato l'ultima versione AVR STUDIO ma è elefantiaca, sullo stile degli utimi ambienti di sviluppo MICROSOFT basati su .NET: che bei tempi erano quelli del VB (con tutte le sue limitazioni)! Anche se potentissima, difficilmente la userò;

Mi scordato di dirti di usare AVR studio 4, se ti interessano solo gli AVR 8 bit, e non l'ultima relase.
AVR studio 4 sono solo 124 mega, non usa Visual Studio come GUI, e circa 90 Mega per la toolchain C se ti interessa anche il compilatore.

astrobeed:

cyberhs:
Per Astrobeed:
ho scaricato l'ultima versione AVR STUDIO ma è elefantiaca, sullo stile degli utimi ambienti di sviluppo MICROSOFT basati su .NET: che bei tempi erano quelli del VB (con tutte le sue limitazioni)! Anche se potentissima, difficilmente la userò;

Mi scordato di dirti di usare AVR studio 4, se ti interessano solo gli AVR 8 bit, e non l'ultima relase.
AVR studio 4 sono solo 124 mega, non usa Visual Studio come GUI, e circa 90 Mega per la toolchain C se ti interessa anche il compilatore.

astrobeed:

cyberhs:
Per Astrobeed:
ho scaricato l'ultima versione AVR STUDIO ma è elefantiaca, sullo stile degli utimi ambienti di sviluppo MICROSOFT basati su .NET: che bei tempi erano quelli del VB (con tutte le sue limitazioni)! Anche se potentissima, difficilmente la userò;

Mi scordato di dirti di usare AVR studio 4, se ti interessano solo gli AVR 8 bit, e non l'ultima relase.
AVR studio 4 sono solo 124 mega, non usa Visual Studio come GUI, e circa 90 Mega per la toolchain C se ti interessa anche il compilatore.

era quello che intendevo dire io..... (non il suggerimento, ma il fatto che la 6 è davvero esagerata)

@ Massimo: voglio dirti che le interfacce grafiche le dovrai comunque corredare di un minimo di istruzioni (percorsi, ecc), col rischio che qualche opzioni salti sempre. Creare un batch definitivo da mettere sul desktop (o dove vuoi) è la soluzione migliore, quanto a scrivere la riga, basta chiedere,, se no a che servono gli amici? :wink:

Ok Michele, grazie per l'offerta, l'accetto molto volentieri.

Ho bisogno di 4 batch (due sul mio PC e due su quello del cliente finale): i primo due trasferiscono il contenuto della Flash e dell'EEPROM dal mio MEGA a due file distinti HEX, mentre gli altri due trasferiscono i file HEX sulla memoria del MEGA del cliente.

Domande:
1 - sul PC del cliente deve essere installato l'IDE? (immagino di sì, per via del AVRDUDE)
2 - se i due MEGA sono diversi (release R3 ed R2) non cambia nulla?

Mi intrometto per fare la mia solita polemica: peccato che sia Bascom che AvrStudio esistano solo per sistemi Windows. E Linux? E Mac?
Al solito, i produttori di software se ne strafregano. In questo Microchip è molto più avanti, fornendo il suo ambiente anche per altri sistemi oltre che Windows.
Atmel ti odio per questo.... =(

leo72:
E Linux? E Mac?

Sei ancora in tempo per abbandonare il lato oscuro della forza e tornare a Windows-
Il maestro jedi Guglielmo Cancelli ti sta aspettando a braccia aperte :grin:

astro, sono dovuto ricorrere a Google per scoprire che Guglielmo Cancelli è la traduzione di William Gates! :stuck_out_tongue_closed_eyes:
A parte tutto, prima di abbandonare Linux per Windows per via di Atmel, abbandono questa per i PIC, lo sai...

Sei ancora in tempo per abbandonare il lato oscuro della forza e tornare a Windows-
Il maestro jedi Guglielmo Cancelli ti sta aspettando a braccia aperte smiley-mr-green

hihihihi :smiley:

leo72:
astro, sono dovuto ricorrere a Google per scoprire che Guglielmo Cancelli è la traduzione di William Gates! :stuck_out_tongue_closed_eyes:
A parte tutto, prima di abbandonare Linux per Windows per via di Atmel, abbandono questa per i PIC, lo sai...

Però leo tu hai raggione ma ci sono alternative valide da provare, solo che a te scoccia dedicargli tempo. Ad es. io con QtCreator ho risolto per ciò che riguarda la toolchain però rimane il problema delle librerie arduino ma per questo devi tirare la giacchetta è Massimo Banzi e non ad Atmel.

Però il sistema delle librerie in codice sorgente da compilare durante la compilazione dello sketch è cosa valida è buona perchè permetta la personalizzazione delle librerie con le #define mentre codice già compilato e impacchettato in archivio di libreria .a non permette personalizzazioni, se non quelle dinamiche che avvengono a runtime.

Non so se è il caso di continuare qui, se la cosa si allunga forse è meglio aprire un topic specifico per riaggiornaci sull'argomento IDE.
Ad es. c'è in sviluppo Anjuta per AVR.

Ciao.

legacy:

MauroTec:
Però il sistema delle librerie in codice sorgente da compilare durante la compilazione dello sketch è cosa valida è buona perchè permetta la personalizzazione delle librerie con le #define

Questa cosa e' molto molto male ai miei occhi.

Come ogni cosa, ha i suoi vantaggi e svantaggi.

Però tieni conto che di ogni libreria di codice sorgente viene creato un archivio .a da linkare allo sketch, quindi anche qui il liker fa il suo lavoro prendendo ciò che serve e scartando il resto.

Al momento non mi vengono in mente grossi svantaggi che non sono disposto ad accettare, se mi dai anche qualche motivazione sul perchè la vedi male magari mi trovi d'accordo.

Ciao.

A me la cosa interessa. Uso l'IDE di Arduino per comodità ma non penso avrei problemi ad utilizzare una nuova IDE, se questa mi offrisse le funzioni che mi offre quella di Arduino.

Nello specifico, secondo me un'IDE "valida" dovrebbe:

  1. permettere di scrivere del codice per ogni chip di Atmel (o per lo meno per quelli supportati dai vari core tipo il core Tiny, il core 1284, ecc...)
  2. essere compatibile con gli sketch per Arduino (perché se creo un sorgente che l'IDE di Arduino non può aprire allora lascio stare a priori, non potendo forzare gli utenti a passare al nuovo ambiente di sviluppo)
  3. poter programmare i chip senza ricorrere al terminale

Tempo fa ho provato ad impostare Eclipse col plugin di Arduino ma bisogna smadonnare non poco ed alla fine ho lasciato perdere perché se devo lasciare l'IDE di Arduino per un carrozzone qual è Eclipse, resto col primo.

Se hai trovato una strada alternativa e facile da percorrere, apri un thread