Programmare Arduino è relativamente semplice in C/C++ e attraverso MicroPython. Ma è con l’inline Assembly che si raggiunge il top delle prestazioni.
Il link
- Titolo: Arduino inline Assembly
- Autore: James M. Eli
- Editore: Leanpub
- Prezzo: Minimo 8.92 euro (solo versione Kindle)
Perché imparare la programmazione in linguaggio assembly inline? Molti esperti proclamano ad alta voce che gli attuali compilatori ottimizzanti sono in grado di produrre codice che è altrettanto buono, se non migliore del linguaggio assembly codificato a mano. Tuttavia, si noti che una grande percentuale della libreria AVR Libc è assemblaggio codificato a mano. E questo pone immediatamente l’ascoltatore sulla difensiva. Qualsiasi sviluppo serio sulla piattaforma Arduino o su un controllore 8 bit basato su ATMEL AVR richiede un esame del codice assembly sottostante prodotto dal compilatore. Questo codice dovrebbe essere controllato per correttezza, bug e inefficienze. Se non altro, l’apprendimento del linguaggio assembly AVR offrirà la conoscenza per determinare cosa stia realmente succedendo nei meandri del programma. Ci sono momenti in cui è necessario usare l’assembly e, molti casi in cui non lo è. Ecco alcuni vantaggi nell’utilizzo dell’assemblaggio in linea:
- Facile accesso a registri, I / O e funzioni dipendenti dalla macchina.
- Controllo del comportamento del codice nelle sezioni critiche pre prevenire i conflitti tra dispositivi software o hardware.
- Sostituzione delle convenzioni standard del compilatore, che potrebbero consentire ottimizzazione (nell’allocazione della memoria, convenzioni di chiamata, ecc.).
- Creazione di interfacce tra frammenti di codice utilizzando convenzioni non standard (cioè produzione diun’interfaccia separata di basso livello).
- Facile accesso a modalità di programmazione non tipiche del processore.
- Produzione di codice ragionevolmente veloce per loop stretti, ecc.
- Produzione di codice ottimizzato a mano perfettamente sintonizzato per un hardware particolare.
- Controllo completo del codice.
Tuttavia, l’assembly è un linguaggio di livello molto basso (il più basso sopra la codifica manuale le istruzioni binarie). Questo significa,
- È lungo e noioso da scrivere inizialmente.
- È soggetto a bug e può essere molto difficile da trovare.
- Il codice assembly può essere abbastanza difficile da comprendere, modificare e mantenere.
- Il codice assembly non è portabile su altre architetture.
- Induce il programmatore a dedicare più tempo ad alcuni dettagli.
- Piccole modifiche al design possono invalidare completamente il codice assembly esistente.
- È molto difficile utilizzare strutture di dati complesse in assembly.
- Alcune volte un compilatore ottimizzato potrebbe superare l’assembly codificato a mano.
Di seguito sono riportate alcune linee guida generali per l’inclusione del codice assembly inline:
- Ridurre al minimo l’utilizzo e la quantità di codice assembly.
- Incapsulare il codice in funzioni o blocchi ben definiti.
- Incorporare MACRO di linguaggio di livello superiore per generare automaticamente codice assembly.
- Eseguire il debug completo del codice.
Anche quando l’assembly è assolutamente necessario, con la pratica si scoprirà che è possibile arrivare lontano con molto meno codice assembly di quanto inizialmente ritenuto necessario.
L’autore : James M. Eli
James Eli detiene oltre 30 anni di esperienza didattica, ma la programmazione resta la sua passione. Ha iniziato a programmare a metà degli anni ’80 inizialmente con un approccio autodidatta e una formazione in C, linguaggio assembly e sistemi embedded. Ha completato un corso universitario come programmatore, con una specializzazione in linguaggio C. Ha esperienza in AVR, ARM, x86 assembly, C e C ++ e adora la programmazione di basso livello. L’autore di “Arduino Inline Assembly: Learn 8-bit AVR GCC Inline Assembly Programming”, disponibile sia su leanpub.com che su amazon.com, racconta gran parte della propria passione sul blog, “µC eXperiment”, che si trova all’indirizzo ucexperiment.wordpress.com. Il suo repository github online si trova su github.com/JimEli.
Il formato
Arduino inline Assembly rappresenta una guida per l’apprendimento della programmazione in linguaggio assembly inline di Arduino. Questo libro sostituisce la documentazione ufficiale scarsa, incompleta e inadeguata per la scrittura del codice assembly inline. Il libro copre la sintassi delle istruzioni inline di base ed estese, fornendo spiegazioni approfondite sull’uso di operandi, vincoli e clobber. Fornisce un’ampia copertura di istruzioni e operazioni di assemblaggio a 8 bit. Gli argomenti includono funzioni, interruzioni, stringhe e tabelle con molti esempi completi su come includere codice inline all’interno dei programmi. Scritto in uno stile rilassato e informativo, l’argomento è diviso in sezioni brevi e di facile comprensione. Questo libro è applicabile a tutti i microcontrollori ATMEL AVR a 8 bit che utilizzano GNU GCC.
A chi è diretto
Questo libro è stato scritto principalmente per individui con uno dei seguenti skill:
- Conoscenza di Arduino e / o Arduino programmato all’interno dell’IDE Arduino
- Esperto programmatore integrato in linguaggio C
È importante rendersi conto che questo libro presuppone almeno una comprensione di base dell’hardware Arduino sottostante (porte, timer, interrupt, USART, I2C, SPI, ecc.). Si richiede che il lettore abbia già scritto programmi per Arduino utilizzando l’estensione funzionalità fornite dall’IDE, o vanti una comprensione generale di programmazione del microcontrollore.