Arduino Con Assemblea?


12

Dal momento che per la mia avventura nel microprocessore ho deciso di andare con Atmel AVR a causa delle vaste risorse disponibili. E sembra che Arduino abbia anche molto, per non parlare del fatto che i loro kit di base sembrano più "al mio livello"

Il problema è che voglio prima impararlo in Assembly, quindi andare in C / C ++ o con Arduino, ma ive sentito che Arduino non accetta l'assemblaggio AVR? È vero? è in qualche modo aggirarlo?

Grazie

modifica: andrei con ATMEL STK500 ma ... per un primo timer sembra MOLTO complicato? C'è qualche motivo per cui non posso semplicemente ottenere un AVR a 8 bit e metterlo su una breadboard e sperimentare in quel modo? (Immagino che dovrei capire come interfacciarli come tali ....)

edit2: Questo è quello che stavo pensando

http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193


Come va? Quindi quale soluzione hai preso in considerazione? Ho comprato Arduino Uo e ho cercato un modo per svilupparmi anche in assemblatore
sll

Risposte:


5

Le schede Arduino possono essere programmate in assemblaggio. Tutto ciò di cui hai bisogno è un cavo ICSP (In Circuit Serial Programmer) e la toolchain AVR (esente da ATMEL) per scrivere sulla lavagna. Avrai quindi il vantaggio del debug a bordo.

Come hai suggerito, puoi semplicemente schiaffeggiare un chip ATMEL su una breadboard e andare in città.

Il kit a cui hai fatto riferimento sembra un ottimo punto di partenza. Puoi prendere il chip direttamente dalla scheda e incollarlo sulla tua breadboard (purché abbia il potere correttamente regolato e conti l'orologio).


Ya, mi piacerebbe prontamente continuare a non metterlo sulla mia breadboard in questo momento lol Non sono così grande con i circuiti.

@Sauron - hah - in entrambi i casi è buono. Qualunque cosa ti catturi! La cosa buona è che i singoli chip sono piuttosto economici (un paio di dollari circa).
RQDQ,


2

Per quanto ne so non ci dovrebbe essere niente di specifico circa il bootloader Arduino che potrebbe impedirvi di utilizzare il montaggio al posto di C. L'IDE Arduino può rendere difficile per caricare Possiedi un file .hex ma sembra che il bootloader Arduino è STK500 compatibile così dovresti essere in grado di usarlo con avrdude.


Sì, in realtà, l'IDE di Arduino stesso utilizza avrdude per eseguire il caricamento.
Chris Stratton,

1

Le schede Arduino (Uno e Duemilanove in ogni caso) hanno un connettore di programmazione AVR standard che è supportato da programmatori e debugger Atmel tramite AVR Studio. Studio supporta assemblatore e C. Un programmatore adatto è AVRISP MkII e AVR Dragon offre sia programmazione che debug. Otterrei quest'ultimo, è più costoso a $ 50, ma la funzione di debug è preziosa. Puoi anche usare quegli strumenti con un chip AVR standard (non Arduino) inserito in una breadboard o in un PCB.


1

L'Arduino è composto da due pezzi: l'hardware e l'IDE. L'IDE principalmente (se non completamente) ti limita a C e C ++ (con un po 'di zucchero sintattico che gli sviluppatori hanno inserito per renderlo un po' più simile a Processing / Java). È possibile che l'IDE riconosca i file .s o .S nella stessa directory di uno schizzo standard (.pde), ma su questo non appenderei il cappello.

Non c'è niente di speciale sull'hardware. È una scheda simpatica e amichevole con molte funzioni interessanti che i neofiti µC apprezzeranno, ma se vuoi semplicemente programmare l'AVR tramite l'intestazione ISP, puoi farlo anche tu. Avrai bisogno di qualcosa come l' Atmel AVRISP mkII o qualsiasi altro programmatore che funzioni con il connettore di riga 2x3 sulla scheda Arduino. Cerca quelli compatibili con il programma avrdude che utilizzerai per caricare le tue applicazioni. Stai lontano da USBtinyISP di Adafruit; Ho avuto un'orribile fortuna con questo e ho finito per acquistare l'Atmel che ho collegato per meno di $ 40 da Mouser.


1
Strano, non ho avuto altro che buone esperienze con Atmel IDE e usbtiny, anche buspirate raddoppierà come isp per molte piattaforme diverse, piccolo grande strumento
crasico

1

Per niente difficile.

http://www.dwelch.com/arduino/

Devi guardare penso che ser.c sulla mia pagina per scegliere quale carta. alcuni utilizzano velocità della porta seriale diverse per impostazione predefinita e schemi di ripristino diversi per accedere alla modalità di programmazione. Se guardi il firmware di Arduino, scopri che quasi nessuno dei comandi di programmazione avr è realmente supportato. Non ne ho davvero bisogno comunque.


1

L'Aruduino può assolutamente essere programmato in assemblaggio. E non hai nemmeno bisogno di un cavo ICSP per farlo!

Va bene, in tutta onestà, questo non è lo stesso che programmarlo in puro assemblaggio da zero.

Ma puoi incorporare l'assemblaggio in C. Ciò significa che puoi caricare il codice sul tuo Arduino che ha l'assemblaggio inline, che verrà quindi eseguito. Considera la libreria TVOut , che consente ad Arduino di trasmettere NTSC / PAL su una TV.

Quella libreria è molto sensibile al tempo (dal momento che viene trasmessa a una TV, ogni scanline deve essere scritta al momento giusto.) Quindi utilizza l'assemblaggio in linea per accelerare il processo. Guardando la riga 89 di questo file dalla libreria, l'autore sta usando alcune delle macro di assembly che ha scritto.

Adesso. Ho il sospetto che non li abbia scritti usando l'IDE Arduino predefinito. Ma questa libreria fa appello al suo codice asm inline, che chiunque può importare, compilare ed eseguire tramite la propria interfaccia.

Buona fortuna!


2
In realtà, puoi anche fare file sorgente di assembly, devi solo saltare l'IDE di Arduino e interagire con gli strumenti di back-end come avr-gcc (o qualunque cosa tu usi come assemblatore) e avrdude direttamente.
Chris Stratton,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.