caricamento sketch da riga di comando

Ciao a tutti.
Mi piacerebbe abbandonare piano piano l’utilizzo dell’IDE per scrivere i programmi con lo standard C che avevo imparato prima di iniziare con Arduino, ma soprattutto per capire i vari passaggi che vengono effettuati per il caricamento dei programmi.

Utilizzo Ubuntu e basandomi sulle varie discussioni lette in giro per il web (alcune molto datate) ho scaricato:
gcc-avr, binutils-avr, gdb-avr, avr-libc e avrdude.

per il makefile ne ho trovato e adattato uno

FILENAME = hello_word
PORT = /dev/ttyUSB0
DEVICE = atmega328p
PROGRAMMER = arduino
BAUD = 38400
COMPILE = avr-gcc -Wall -Os -mmcu=$(DEVICE)

default: compile upload clean

compile:
	$(COMPILE) -c $(FILENAME).c -o $(FILENAME).o
	$(COMPILE) -o $(FILENAME).elf $(FILENAME).o
	avr-objcopy -j .text -j .data -O ihex $(FILENAME).elf $(FILENAME).hex
	avr-size --format=avr --mcu=$(DEVICE) $(FILENAME).elf

upload:
	avrdude -v -p $(DEVICE) -c $(PROGRAMMER) -P $(PORT) -b $(BAUD) -U flash:w:$(FILENAME).hex:i

clean:
	rm $(FILENAME).o
	rm $(FILENAME).elf
	rm $(FILENAME).hex

il baud rate l’ho settato a 38400 perché è il valore che leggo digitando

stty -a

DEVICE e PROGRAMMER non so bene come settarli.
L’unica scheda che posso usare al momento è una Nano che sull’IDE seleziono con il vecchio Bootloader mentre il makefile originale mi sembra sia stato fatto per una UNO.
Nell’IDE inoltre come programmatore ho selezionato AVRISP mkII.

Insomma, non so bene come muovermi. L’errore che incontro è l’errore “not in sync” che mi usciva quando sbagliavo di selezionare il processore o la scheda.

Qualcuno sa indirizzarmi?
E magari sapete indicarmi qualche guida per niubboni per l’utilizzo di avrdude o dei makefile?

Grazie

kele:
... Nell'IDE inoltre come programmatore ho selezionato AVRISP mkII

... cosa c'entra il "programmatore" se non lo usi?

O programmi via porta USB utilizzando il bootloader (che deve essere caricato sulla MCU) oppure programmi usando un "programmatore" via ICSP (il connettore a 6 pin) ... ::slight_smile:

Guglielmo

P.S.: Inoltre, la velocità è sicuramenete errata ... DEVI usare la velocità prevista dal bootloader e NON c'entra nulla la velocità a cui è attualmente impostata la porta.
Inomma, direi che prima di avventurarsi in queste idee, sarebbe bene STUDIARE anticipatamente come funziona il tutto e non andare a tentoni in questo modo ... rischiando solo di fare danni ... ::slight_smile:

Inomma, direi che prima di avventurarsi in queste idee, sarebbe bene STUDIARE anticipatamente come funziona il tutto

Concordo assolutamente.
Il fatto è che non sono riuscito a trovare parole chiave che mi portassero sulla strada giusta e preso dallo sconforto ho tentato di far funzionare la cosa nella speranza di capire successivamente il perché di determinate azioni.
Sicuramente non è la cosa migliore, ma affrontando l'argomento in solitaria era l'ultima spiaggia.
Spero di non aver dato una cattiva idea del mio comportamento anche se mi sembra sia proprio così ahah!
Chiedo scusa non era mia intenzione.
Comunque rimango interessato alla questione. Da solo non so più dove andare a parare e se qualcuno volesse indicarmi dove studiare per muovere i primi passi gliene sarei grato. (spero di non aver peggiorato la situazione!)

Intanto chiediti il perché fare una cose del genere ... che, a parte motivi puramente didattici di "capire come funziona", NON ha molto senso a livello amatoriale (e poco anche a livello professionale).

Salvo il credere che è fare il "figo" dicendo "io non uso un IDE ma compilo direttamente chiamando a mano i vari moduli", non c'è un motivo valido ... gli ambienti di sviluppo, incluso il semplice IDE di Arduino, fanno comunque un egregio lavoro che, raggiungere a mano, senza studiarsi bene tonnellate di manuali, è piuttosto difficile, fosse solo per l'infinità di parametri di ottimizzazione che possono essere usati in fase di compilazione e di link ... parametri che sono stati ampiamente studiati (e personalizzati in funzione della MCU) nei vari ambienti di sviluppo (Arduino IDE incluso che, ripeto, è il più semplice).

Comunque, premesso questo e segnalandoti che Arduino ha rilasciato anche un abiente per la compilazione a linea comando fatto piuttosto bene (invece che le bojate che si trovano in giro) e che trovi QUI, se vuoi cominciare, devi cominciare propri con lo studiare COME è fatto l'IDE di Arduino, tutti i files che usa (boards.txt, platform.txt, programmers.txt, i vari files nelle varie cartelle, ecc. ecc.), nonché i sorgenti liberamente esaminabili su Github.

E cosa lunga ... armati di santa pazienza e tanta volontà ... ::slight_smile:

Guglielmo

kele:
... Mi piacerebbe abbandonare piano piano l'utilizzo dell'IDE per scrivere i programmi con lo standard C che avevo imparato prima di iniziare con Arduino ...

Ah, per inciso, ... puoi tranquillamrnte usare l'IDE di Arduino e programmare in standard 'C' senza usare altro ... ti studi i datasheet delle MCU e di tutto ciò che ci colleghi, NON usi le funzioni che ti mette a disposizione Arduino con il suo framework "wiring", NON usi le librerie, ecc. ecc. ... e sei a posto :smiling_imp:

Guglielmo

L'obbiettivo sarebbe quello di poter considerare l'utilizzo di micro differenti. Al momento non so dirti quale altro micro aspiro ad usare perché come vedi non sono ancora a quel punto quindi non ho approfondito niente, ma anche lì c'è un mondo da esplorare. E per poter iniziare a pensare di muoversi anche al di fuori dell'ambiente Arduino bisogna essere un pochino più indipendenti e capire quello che sta sotto.
Inizierò guardando la CLI che mi hai indicato grazie. Le librerie con calma le sto scrivendo

kele:
L'obbiettivo sarebbe quello di poter considerare l'utilizzo di micro differenti.

Guarda, un micro senza un ambiente di sviiluppo, non è neanche da prendere in considerazione e ...
... tutti i maggiori produttori hanno il loro ambiente (oltre ad ambienti di terze parti, altamente efficienti ma ... spesso molto costosi ... es. vedi IAR, Keil, ecc.).

Atmel aveva Atmel Studio (ora Microchip Studio), Microchip ha MPLAB X, STM ha STM32CubeIDE, ecc. ecc. quindi ... dimentica la linea comando e studiati invece seriamente i datasheet e la programmazione che ... è molto, ma molto più utile :wink:

Guglielmo

Accetto i consigli. Grazie e buona serata

P.S.: Per curiosità ho cercato e cambiato il baud rate della nano e funziona ahahah!
Cercherò comunque di lasciare da parte il discorso compilazione manuale, ma grazie del consiglio e della chiacchierata!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.