Arduino con assemblaggio?

Per la mia avventura nel microprocessing, ho deciso di utilizzare Atmel AVR a causa delle vaste risorse disponibili. Anche Arduino sembra avere molto, per non parlare dei loro starter kit sembrano più ” al mio livello. ”

Il problema è che voglio prima impararlo in assembly, quindi andare in C / C ++ o qualsiasi altra cosa utilizzi Arduino, ma ho sentito che Arduino non accetta lassembly AVR. È vero? Cè un modo per aggirare questo?

Modifica: vorrei andare con lATMEL STK500, ma per un primo timer sembra MOLTO complicato. Cè qualche motivo per cui non posso semplicemente prendere un AVR a 8 bit e metterlo su una breadboard e sperimentare in questo modo? (Immagino che dovrei capire come interfacciarli come tali.)

Modifica2: questo è quello che stavo pensando

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

Commenti

  • Come va? Allora quale soluzione hai considerato? Ho comprato Arduino Uo e sto cercando un modo per sviluppare anche in assembler
  • Suggerirei di usare il controller 89c51 (8051) per il linguaggio assembly

Risposta

Le schede Arduino possono essere programmate in assembly. Tutto ciò di cui hai bisogno è un cavo ICSP (In Circuit Serial Programmer) e la toolchain AVR (gratuita da ATMEL) per scrivere sulla scheda. Quindi ottieni 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 togliere il chip dalla scheda e incollarlo sulla tua breadboard (purché abbia una potenza regolata correttamente e tu tenga conto dellorologio).

EDIT: Apparentemente non hai bisogno di un ICSP per caricare i programmi assembly. Vedi il commento sotto per i dettagli.

Commenti

  • Ya I ‘ desidero probabilmente restare con Non metterlo sulla mia breadboard adesso lol Non sono così bravo con circuiti.
  • @Sauron – hah – in entrambi i casi va bene. Qualunque cosa ti appassioni! La cosa buona è che i singoli chip sono piuttosto economici (un paio di dollari o giù di lì).
  • Questa risposta è sostanzialmente fuorviante: NON È NECESSARIO ALCUN ISP . Il bootloader utilizzato da Arduino è antecedente al progetto Arduino e non ha idea se il file che viene caricato abbia avuto origine da un compilatore o da un assemblatore. Per favore don ‘ t perpetuare lidea sbagliata che il bootloader in un Arduino ha qualcosa a che fare con il metodo di scrittura di programmi per indirizzare lhardware; è semplicemente un comodo meccanismo per ottenere codice di qualsiasi origine nel chip.
  • @ChrisStratton – grazie per il tuo feedback. Ho ‘ ho aggiornato la mia risposta per includere il tuo feedback.

Risposta

LIDE di Arduino può essere “corretto” per accogliere il codice Assembly. Ecco il wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods

Commenti

  • lURL sembra non funzionante

Risposta

Per quanto ne so, dovrebbe non essere niente di specifico sul bootloader di Arduino che potrebbe impedirti di usare lassembly invece di C. LIDE di Arduino potrebbe rendere difficile caricare i tuoi file .hex ma sembra il bootloader di Arduino è compatibile con STK500 , quindi dovresti essere in grado di usarlo con avrdude.

Commenti

  • Sì, in realtà, lo stesso IDE di Arduino utilizza avrdude per eseguire il caricamento.

Risposta

Per niente difficile.

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

Devi guardare Penso ser.c sulla mia pagina per scegliere quale carta. alcuni utilizzano diverse velocità della porta seriale per impostazione predefinita e diversi schemi di ripristino 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.

Risposta

larduino può essere programmato con lassemblaggio usando GCC-AVR Inline Assembler controlla questo link per GCC-AVR Inline Assembler Cookbook

http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf

Answer

Le schede Arduino (Uno e Duemilanove in ogni caso) hanno un connettore di programmazione AVR standard che è supportato dai programmatori e debugger Atmel tramite AVR Studio. Studio supporta assembler e C. Un programmatore adatto è AVRISP MkII e AVR Dragon offre sia la programmazione che il debug. Avrei preso questultimo, è più costoso a $ 50, ma la funzione di debugging è inestimabile. Puoi anche utilizzare questi strumenti con un chip AVR standard (non Arduino) collegato a una breadboard o a un PCB.

Commenti

  • Sebbene ‘ sia vero che hanno unintestazione ICSP, cè ‘ non è necessario utilizzarlo. Il bootloader funziona ugualmente bene con qualsiasi mezzo di paternità del programma, e infatti anche lIDE di Arduino si basa sul programma di utilità della riga di comando preesistente avrdude per far funzionare il bootloader.

Risposta

Arduino è composto da due parti: lhardware e lIDE. LIDE principalmente (se non completamente) ti limita a C e C ++ (con un po di zucchero sintattico che gli sviluppatori hanno aggiunto per renderlo un po più simile a Processing / Java). Cè una possibilità che lIDE riconosca i file .s o .S nella stessa directory di uno sketch standard (.pde), ma non ci appenderei il cappello.

Non cè niente speciale per lhardware. È “una scheda simpatica e amichevole con molte caratteristiche interessanti che i neofiti di µC apprezzeranno, ma se vuoi programmare lAVR tramite lheader dellISP, puoi farlo anche tu. Avrai bisogno di qualcosa come Atmel AVRISP mkII o qualsiasi altro programmatore che funzioni con il connettore 2×3 righe sulla scheda Arduino. Cerca quelli compatibili con il programma avrdude che utilizzerai per caricare le tue applicazioni. Stai lontano dallUSBtinyISP di Adafruit; ho avuto una fortuna orribile e ho finito per acquistare quello Atmel che ho collegato per meno di $ 40 da Mouser.

Commenti

  • Strano, ‘ ho avuto solo buone esperienze con Atmel IDE e usbtiny, inoltre buspirate raddoppierà come isp per molte piattaforme diverse, piccolo grande strumento
  • Non ‘ non è necessario un adattatore ICSP, il bootloader funziona bene con qualsiasi mezzo di paternità del programma

risposta

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

Ok, in tutta onestà, questo non è lo stesso che programmarlo in puro assembly da zero.

Ma puoi inline assembly in C. Ciò significa che puoi caricare codice sul tuo Arduino che ha un inline assembly, che verrà quindi eseguito. Considera la libreria TVOut , che consente ad Arduino di trasmettere NTSC / PAL a un televisore.

Quella libreria è molto sensibile al tempo (poiché viene trasmessa a una TV, ogni linea di scansione deve essere scritta a destra tempo.) Quindi utilizza lassembly in linea per accelerare il processo. Guardando la riga 89 di questo file dalla libreria, lautore sta usando alcuni dei macro assembly che ha scritto.

Ora. Sospetto che non le abbia scritte utilizzando lIDE di Arduino predefinito. Ma questa libreria chiama il suo inline codice asm, che chiunque può importare, compilare ed eseguire tramite la propria interfaccia.

Buona fortuna!

Comm ents

  • In realtà, puoi anche creare file sorgenti di assembly, devi solo saltare lIDE di Arduino e interagire con gli strumenti di back-end come avr-gcc (o qualunque cosa tu utilizzare come assembler) e avrdude direttamente.

Answer

Uso Linux come piattaforma host, ma penso che questi strumenti siano disponibili anche per le varietà Windows.

Uso ” avra ” per lassembly in codice esadecimale convertitore (compilatore)

Quindi programma il chip utilizzando un programmatore USBTiny e lo strumento di programmazione ” avrdude “.

Credo che entrambi questi strumenti siano open source.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *