Raspberry Pi Assembly Language Programming for ARM

Raspberry PI Assembly language

Raspberry PI Assembly Language rappresenta un testo ideale per chiunque desideri approfondire e sfruttare l’hardware del proprio SBC.

Abbiamo da poco recensito un libro introduttivo alla programmazione assembly su processore ARM nell’articolo intitolato Computer Organization and Design ARM Edition – MK.

La recensione ha riscosso un discreto successo, pertanto proseguiamo su questa strada, presentando altri due libri sull’argomento, dedicati stavolta specificamente al Raspberry PI ed alla sua interfaccia GPIO verso l’esterno. Ne approfitto per ringraziare gli amici Attilio e Biagio per avermi suggerito di proseguire su questo percorso: se avremo sufficienti richieste in merito, potremo anche pensare di lanciare una rubrica interamente indirizzata alla programmazione in Assembler del nostro Raspberry PI, quindi fatevi sentire!

Il link

L’autore: Stephen Smith

Stephen Smith è un software architect in pensione, con sede a Gibsons, BC, Canada. È stato attratto dallo sviluppo di software sin dal liceo, troppi anni or sono per ricordarli esattamente.

Ha lavorato alla Linea di prodotti contabili Sage 300 per 23 anni. Da quando è in pensione, ha approfondito le tematiche legate all’Intelligenza Artificiale, acquisito una licenza avanzata per radioamatori, e si diletta con mountain bike, escursionismo e fotografia naturalistica. Continua a scrivere sul suo popolare blog di tecnologia su smist08.wordpress.com e ha scritto due romanzi di fantascienza in una serie, Influence, disponibile su Amazon.

Il formato

Raspberry Assembly ARM

Il libro conta 380 pagine, divise in 16 capitoli e 5 appendici:

  1. Getting started
  2. Loading and adding
  3. Tooling up
  4. Controlling the program flow
  5. Thanks for the memories
  6. Functions and stack
  7. Linux operating system
  8. Programming GPIO pins
  9. Interactiing with C and Python
  10. Multiply, divide and accumulate
  11. Floating-point operations
  12. NEON coprocessor
  13. Conditional instructions and optimizing code
  14. Reading and understanding code
  15. Thumb code
  16. 64 bits
  17. Appendix A – The ARM instruction Set
  18. Appendix B – Linux system calls
  19. Appendix C – Binary formats
  20. Appendix D – Assembler directives
  21. Appendix E – ASCII character set

La forma è scorrevole e colloquiale, ricca di esempi e di geniali trovate didattiche, e conduce il lettore attraverso i segreti ed i trucchi del linguaggio Assembler in modo semplice ed efficace. Tuttavia l’approccio ai vari capitoli non è stettamente modulare: talvolta pre completare un esempio occorrono files e programmi sviluppati nei capitoli precedenti.

Per chi non ha voglia di digitare, è disponibile un repository online per scaricare il codice degli esempi.

A chi è diretto

Sebbene dichiari di essere alla portata di tutti coloro in grado di comprendere cosa sia una variabile, un ciclo o una condizione logica, il testo richiede attenzione e volontà per essere digerito. Il linguaggio Assembler necessita infatti di una certa conoscenza dell’hardware sul quale si appoggia, e per poter essere davvero efficiente presuppone che l’utente sia in grado di comprendere i concetti di base legati alle system call di Linux, al passaggio dei parametri nelle funzioni, all’uso di files di sistema e alla virtualizzazione degli accessi alla memoria. Persino la gesione del GPIO prevede due modalità legate a Linux o alla manipolazione hardware degli indirizzi dei pin.

I metodi di gestione intrinsecamente “complicati” e la mancanza di modularità tra i capitoli rendono il libro interessante per chiunque desideri apprendere e padroneggiare in pratica l’hardware del proprio Raspberry attraverso routines in Assembler, ma un po’ ostico per chi invece cercasse un semplice manuale teorico del linguaggio, magari suddiviso in capitoli monotematici fruibili singolarmente.

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.