Arduino UNO ATMega328P in assembly
Salve a tutti,
è il mio primo post in questo forum, mi presento mi chiamo Biagio Ianero e ho 17 anni.
Scrivo questo post per tutti gli utenti MAcintosh che hanno acquistato arduino, ma vogliono programmarlo senza usare le librerie super-semplificate già fornite dai produttori e senza acquistare programmatori hardware esterni.
Essendo su mac non ho potuto nemmeno usufruire dell'IDE di sviluppo AVR Studio, e ho dovuto girare un po' qua e là per mettere insieme vari programmi a linea di comando per programmare il nostro ATMega in assembly o C.
I programmi a linea di comando necessari sono: avr-as (assembler), avr-gcc (compilatore C), avr-ld (linker), avr-objcopy (da .elf a .hex, formato compatibile con tutti i programmatori) e avrdude (per trasferire l'hex sul chip).
Fortunatamente troviamo tutto "impacchettato" qui:
http://www.obdev.at/products/crosspack/index-de.html
Dopo aver scritto il vostro programma in assembly o C, potete seguire i seguenti passi per portarlo sull'ATMega senza passare dall'IDE Arduino:
1) Compilazione (esempio in assebly, per il C basta cambiare avr-as con avr-gcc)
$ avr-as -mmcu=atmega328p -o helloworld.o helloworld.S
2) Linking
$ avr-ld -o helloworld.elf helloworld.o
3) Da elf a hex Intel (formato compatibile con tutti i programmatori)
$ avr-objcopy --output-target=ihex helloworld.elf helloworld.hex
4) Programmazione con avrdude
$ avrdude -p atmega328p -P tty.usbserial-xxxxx -c arduino -b 115200 -F -U flash:w:helloworld.hex
Al posto di tty.usbserial-xxxxx bisogna inserire il nome del device di osx sul quale è collegato Arduino (menù "Serial Port" dell'IDE).
Spero di essere stato utile,
un saluto a tutti,
Biagio.
è il mio primo post in questo forum, mi presento mi chiamo Biagio Ianero e ho 17 anni.
Scrivo questo post per tutti gli utenti MAcintosh che hanno acquistato arduino, ma vogliono programmarlo senza usare le librerie super-semplificate già fornite dai produttori e senza acquistare programmatori hardware esterni.
Essendo su mac non ho potuto nemmeno usufruire dell'IDE di sviluppo AVR Studio, e ho dovuto girare un po' qua e là per mettere insieme vari programmi a linea di comando per programmare il nostro ATMega in assembly o C.
I programmi a linea di comando necessari sono: avr-as (assembler), avr-gcc (compilatore C), avr-ld (linker), avr-objcopy (da .elf a .hex, formato compatibile con tutti i programmatori) e avrdude (per trasferire l'hex sul chip).
Fortunatamente troviamo tutto "impacchettato" qui:
http://www.obdev.at/products/crosspack/index-de.html
Dopo aver scritto il vostro programma in assembly o C, potete seguire i seguenti passi per portarlo sull'ATMega senza passare dall'IDE Arduino:
1) Compilazione (esempio in assebly, per il C basta cambiare avr-as con avr-gcc)
$ avr-as -mmcu=atmega328p -o helloworld.o helloworld.S
2) Linking
$ avr-ld -o helloworld.elf helloworld.o
3) Da elf a hex Intel (formato compatibile con tutti i programmatori)
$ avr-objcopy --output-target=ihex helloworld.elf helloworld.hex
4) Programmazione con avrdude
$ avrdude -p atmega328p -P tty.usbserial-xxxxx -c arduino -b 115200 -F -U flash:w:helloworld.hex
Al posto di tty.usbserial-xxxxx bisogna inserire il nome del device di osx sul quale è collegato Arduino (menù "Serial Port" dell'IDE).
Spero di essere stato utile,
un saluto a tutti,
Biagio.