Che cos'è un buon microprocessore di avviamento per apprendere l'Assemblea?


19

Quindi voglio imparare prima l'Assemblea su un parlamentare, quindi passare a C (dato che sembra che sia quello che la maggior parte di loro usa).

Voglio entrare nella programmazione integrata, adoro davvero cose di basso livello C (kernel / moduli per Linux è principalmente quello che ho fatto), ma amo l'idea di poter programmare anche a un livello inferiore (Microcontroller / microprocessori).

Conosco Arduino, ed è grandioso, ma non riesco a trovare molte risorse per usare Assembly con loro. Gli AVR Atmel sembrano essere molto popolari (ed economici), ma quando si tratta della porzione hardware effettiva (collegandoli su una breadboard, ecc.), Non sto trovando molte informazioni.

Eventuali suggerimenti / informazioni o risorse che voi ragazzi / ragazze conoscete per favore fatemelo sapere.

Modifica: Un'altra cosa: sembra che tutti i libri sul microprocessore che leggo (di solito AVR) parlino del microprocessore stesso e della sua programmazione. Ma devo ancora vedere un libro che parla in realtà dell'installazione di tutti i componenti (microprocessore, memoria, alimentazione, ecc.). Se potessi trovare qualcosa che mi accompagni, sarei in affari. (Voglio imparare da zero.) Per non parlare del fatto che non ho idea di come comunicheresti tra di loro.


3
Odio inviarti altrove, ma se sei interessato agli AVR devi conoscere AVRfreaks.net .
Kevin Vermeer,

Mi sto avvicinando ad AVR ... principalmente perché hanno così tante informazioni su di loro, e sono MOLTO più economici del TI-MPS430 ...

2
AVR è popolare tra gli hobbisti, ma non sono sicuro di dove stai ottenendo i tuoi dati di costo. Entrambe le famiglie hanno offerte inferiori a 1 USD e altre a 20 USD.
Kevin Vermeer,

Bene ..... quando stavo guardando l'MPS430 sembrava che il software (debugger ecc.) Fosse un po 'costoso quando aggiunto alle schede di sviluppo.

1
Il mio consiglio è di non scegliere MSP430 se sei un principiante. Gli strumenti ufficiali sono buoni, ma il supporto gratuito che troverai online non corrisponde a PIC / AVR
Toby Jaffey

Risposte:


14

Ho imparato un 68HC11 al college. Sono molto semplici da utilizzare, ma onestamente la maggior parte dei microcontrollori a bassa potenza sarà simile (AVR, 8051, PIC, MSP430). La cosa più importante che aggiungerà complessità alla programmazione ASM per i microcontrollori è il numero e il tipo di modalità di indirizzamento della memoria supportate . All'inizio dovresti evitare dispositivi più complicati come processori ARM di fascia alta.

Probabilmente consiglierei MSP430 come un buon punto di partenza. Magari scrivi un programma in C e impara sostituendo varie funzioni con assembly inline. Inizia semplice, x + y = z, ecc.

Dopo aver sostituito una funzione o un algoritmo con assembly, confronta e confronta il modo in cui è stata codificata e ciò che ha generato il compilatore C. Questo è probabilmente uno dei modi migliori per apprendere l'assemblaggio secondo me e allo stesso tempo sapere come funziona un compilatore che è incredibilmente prezioso come programmatore incorporato. Assicurati di disattivare inizialmente le ottimizzazioni nel compilatore C o probabilmente sarai molto confuso dal codice generato dal compilatore. Attiva gradualmente le ottimizzazioni e nota cosa fa il compilatore.

RISC vs CISC

RISC significa "Reduced Instruction Set Computing", non si riferisce a un particolare set di istruzioni ma solo a una strategia di progettazione che afferma che la CPU ha un set di istruzioni minimo. Poche istruzioni che fanno ciascuna qualcosa di base. Non esiste una definizione rigorosamente tecnica di ciò che serve per essere RISC. D'altra parte le architetture CISC hanno molte istruzioni, ma ognuna "fa di più".

I vantaggi proposti di RISC sono che il design della tua CPU ha bisogno di meno transistor, il che significa un minor consumo di energia (grande per i microcontrollori), meno costoso da realizzare e frequenze di clock più elevate che portano a prestazioni migliori. Un consumo di energia inferiore e una produzione più economica sono generalmente veri, prestazioni più elevate non sono state all'altezza dell'obiettivo come risultato dei miglioramenti del design nelle architetture CISC.

Quasi tutti i core della CPU sono oggi RISC o progetti di "terra di mezzo". Anche con la più famosa (o famigerata) architettura CISC, x86. Le moderne CPU x86 sono core RISC internamente come un core con un decodificatore imbullonato nella parte frontale che suddivide le istruzioni x86 in più istruzioni RISC. Penso che Intel chiami queste "micro-operazioni".

Quanto a (RISC vs CISC) è più facile da imparare in assemblea, penso che sia un rompicapo. Fare qualcosa con un set di istruzioni RISC richiede generalmente più linee di assemblaggio che fare la stessa cosa con un set di istruzioni CISC. D'altra parte, i set di istruzioni CISC sono più complicati da imparare a causa del maggior numero di istruzioni disponibili.

La maggior parte del motivo per cui CISC ha un brutto nome è che x86 è di gran lunga l'esempio più comune ed è un po 'un casino con cui lavorare. Penso che questo sia principalmente il risultato del set di istruzioni x86 molto vecchio e che è stato ampliato una mezza dozzina o più volte mantenendo la compatibilità con le versioni precedenti. Anche il tuo core i7 da 4,5 Ghz può funzionare in modalità 286 (e lo fa all'avvio).

Per quanto riguarda ARM che è un'architettura RISC, la considero moderatamente discutibile. È certamente un'architettura load-store. Il set di istruzioni di base è simile a RISC, ma nelle recenti revisioni il set di istruzioni è cresciuto abbastanza al punto da considerarlo personalmente più una via di mezzo tra RISC e CISC. Il set di istruzioni del pollice è davvero il più "RISCish" dei set di istruzioni ARM.


@Mark - Anche gli ARM sono processori RISC, il set di istruzioni non è poi così male. In realtà è abbastanza ben progettato; ci sono alcune istruzioni per la differenziazione tra spazio utente e spazio del kernel e altre complessità, ma queste possono essere ignorate mentre inizi.
Kevin Vermeer,

1
@reemrevnivek Stavo più cercando di allontanarlo dalle complessità legate alla gestione di più modalità di processore e MMU mentre iniziava l'ASM, motivo per cui ho citato ARM di fascia alta. L'inizializzazione e la configurazione di SoC ARM di fascia alta è anche sostanzialmente più complessa di qualcosa come un AVR / PIC / MSP430.
Segna il

RISC? non sono sicuro di capire la differenza tra quello e qualunque cosa gli altri siano ... ti interessa spiegare? La maggior parte dei microcontrollori non è RISC? significa solo meno set di istruzioni corretti?

1
@sauron Ho aggiunto alla mia risposta: RISC vs CISC.
Segna il

Cose come AVR / PICS sono solitamente RISC o CISC?

8

Penso che i microcontrollori PIC a 8 bit siano la scelta migliore a causa del numero ridotto di istruzioni.

L'effetto collaterale del numero ridotto di istruzioni è che è necessario reinventare la ruota rispetto ad altri microcontrollori con più istruzioni.

Ma dopo aver appreso con PIC, puoi migrare verso altri microcontrollori e vedere cosa si adatta meglio a te.


Non sarei totalmente in disaccordo in quanto questo è ciò che sto esplorando ora, ma i core a 8, 16 e 32 bit hanno strategie di asm totalmente diverse.
Grady Player il

7

Simile al suggerimento di Mark del 68HC11, il set di istruzioni della famiglia Freescale 68HCS08 è una versione ridotta del Motorola 6809, che pensavo avesse uno dei set di istruzioni a 8 bit più puliti del suo tempo. È possibile ottenere una scheda di sviluppo con interruttori, LED, accelerometro a 3 assi e cicalino piezoelettrico per $ 79 qui .


Il numero ridotto di registri dell'S08 rispetto all'HC11 può rendere le cose un po 'più difficili in anticipo, poiché dovrai capire che lo stack fa molto di tutto (che è stato insegnato più tardi nel mio laboratorio con gli HC11 (o era 12 di)). Per estensione, gli AVR sono davvero belli perché hai ben 32 registri con cui giocare prima di preoccuparti dello stack.
Nick T

In realtà mi piace la semplicità del singolo accumulatore, anche se può essere un collo di bottiglia. Invece di usare lo stack per le variabili temporanee, per iniziare trovo più semplice usare i 144 byte delle variabili della pagina diretta che sono accessibili con istruzioni più brevi (gli altri 112 byte della pagina diretta sono usati per i registri I / O). L'uso dello stack (che consente routine rientranti e ricorsive) può essere appreso in seguito.
Tcrosley,

L'HC (S) 08 non era derivato dall'HC05?
Johan.A

@ Johan.A Sì, hai assolutamente ragione. HCS08 è una versione migliorata di HC05. Avrei dovuto dirlo. Penso che la derivazione sia simile a 6800 -> 6801 -> 6805 -> HC (S) 08. Ho scritto molto codice di assemblaggio per il 6805. Ho confrontato l'HCS08 con il 6809 per collegarmi con gli altri commenti relativi al 68HC11 (che è approssimativamente una versione di microcontrollore del 6809).
Tcrosley,

4

Il set di istruzioni msp430 è buono per l'apprendimento dell'assemblatore. Evita x86. Il braccio è un altro buono ma ha molte più istruzioni e opzioni e potrebbe non essere più adatto come primo set di istruzioni. Il pollice è un sottoinsieme del set di istruzioni del braccio e non è male, su github ho sia un emulatore di pollice (thumbulator) che un emulatore msp430 (non testato tanto quanto quello del pollice) che sono barebone, solo processore e memoria e poco altro , così puoi avere una buona visibilità su ciò che sta succedendo. Un'alternativa sarebbe qemu per esempio dove c'è visibilità ma molto più difficile da raggiungere, allo stesso modo con una soluzione simile a qemu ci vuole molto più lavoro prima di capire se hai qualcosa che funzioni.
vai a mspgcc4.sf.net per creare una toolchain e / o un binutils di serie (./configure --target = msp430 --prefix = / qualcosa) in combinazione con un stock llvm. Una volta che sei pronto per l'hardware, una scheda di sviluppo msp430 costa meno di 5 dollari. Per gli strumenti braccio / pollice basta ottenere la versione lite da codice sorgente. Una tavola cortex-m3 (pollice / pollice2) è di circa 12 dollari in questo momento. Eviterei x86 e avr e altri come primo set di istruzioni, vorrai imparare gli altri ad essere ben arrotondati. Il set di istruzioni per foto vecchio / originale è qualcosa che vale la pena guardare anche. Potresti scrivere tu stesso un simulatore in un pomeriggio e imparare l'assemblatore. Prima non lo imparerei necessariamente, insegna alcune cose interessanti, ma allo stesso tempo non si ridimensiona e non è necessariamente rappresentativo delle caratteristiche comuni che trovi nella maggior parte dei set di istruzioni. Il msp430 mi ha dato la sensazione del pdp11 che è il primo set di istruzioni che ho davvero imparato, entrambi hanno caratteristiche ben arrotondate, per lo più ortogonali. Entrambi i set di istruzioni pic msp430 e microchip sono documentati su wikipedia, almeno come riferimento, per ottenere l'intera immagine ottenere i fogli dati / manuali dai fornitori che descriveranno ogni registro e modalità di indirizzamento, reset / boot, ecc.


solo per assemblatore hai bisogno solo di binutils, almeno per arm / thumb o msp430, e puoi costruire assemblatore e linker. Se vuoi un compilatore C da cui puoi esaminare l'output dell'assemblatore come strumento di apprendimento, allora hai bisogno di mspgcc4 o di sourcing di codici o usa semplicemente llvm per entrambi.
old_timer

4

Sei sicuro di voler imparare l'Assemblea? Sai dire perché? È piuttosto un compito, ed è sempre meno relavent o utile ora un giorno. Questo è da una persona che ha scritto in esso e persino programmi assemblati a mano (nessun assemblatore, linker, solo una scheda con il set di istruzioni).


Questa non è davvero una risposta, tanto quanto un commento. Sarei anche restio a fidarmi di un programmatore C incorporato che non era disposto a arrancare attraverso pezzi di assemblaggio di tanto in tanto quando cercava di capire una stranezza nel comportamento di un progetto.
Chris Stratton,

4

Anch'io ho imparato su un 68HC11 al college. Piuttosto lo suggeriscono su qualsiasi altro MPU / MCU, volevo solo sottolineare che la scheda di sviluppo che usavamo aveva un programma di monitoraggio su di esso. Quindi da un terminale stupido potremmo scorrere il codice ed esaminare i registri ... Ti suggerirei quando sai quale processore soddisfa i tuoi requisiti e controllare anche quali schede di sviluppo sono disponibili con un programma di monitoraggio.


Il programma di monitoraggio sembra essere molto utile. Che libro hai usato per imparare questo? se ti dispiace chiederti ....

Ho anche avuto esperienza con il 68HC11 e il "Programma di monitoraggio" è conosciuto come il Buffalo Monitor . Fondamentalmente, è solo un programma archiviato nella ROM che comunica in serie al PC. Digiti in un terminale e il programma interpreta le tue richieste e ti restituisce informazioni. Puoi scaricare memoria sullo schermo, modificare i valori della memoria, scorrere le istruzioni, ecc. La scheda che abbiamo usato era questa . Questo controller è semplice da imparare ma è molto datato.
Sherrellbc,

... Il libro che abbiamo usato era questo se sei interessato. Suggerirei di utilizzare un controller più moderno come AVR; la loro scheda di sviluppo può essere trovata qui .
Sherrellbc,

3

Insegno sia a PIC (core a 14 bit) che a ARM. La classe PIC dico che una volta padroneggiata la bruttezza di quell'architettura, possono affrontare qualsiasi altra cosa. Il ARM (non il pollice / Cortex!) È un'architettura molto bella per imparare l'assemblaggio. Usiamo una scheda LPC2148.


Ciao Wouter, è bello vederti qui!
Olin Lathrop,

2

Ho imparato l'assemblaggio PIC a 16 bit con un dsPIC33F. L'assemblaggio del processore è abbastanza simile a C, in quanto supporta puntatori e tre operazioni variabili (A = B + C, ad esempio), che rende molto più semplice l'apprendimento e l'adattamento ad esso.


1

Qui stai confondendo microcontrollori e microprocessori. AVR è una linea di microcontrollori di Atmel, non un microprocessore. Ti suggerisco di cercare prima su Wikipedia per capire meglio quali sono le differenze tra queste. Fondamentalmente un microcontrollore è un sistema più o meno completo, mentre un microprocessore è solo la cpu (quindi un microcontrollore ha un microprocessore all'interno).


Ya lo sapevo, non so perché non l'ho messo. Volevo dire che non molte guide parlano di collegare effettivamente un MP e una memoria (come flash o eeprom) ecc ...

1
Poiché la maggior parte dei microprocessori ora ha cache / memoria e alcuni I / O, è una linea molto sfocata.
Kenny,

1
@Sauron - Sei sicuro di saperlo? Hai usato di nuovo MP; un microcontrollore (che è il termine corretto per un AVR e il 99% dei dispositivi di cui discutiamo qui) ha quasi sempre memoria (sia non volatile, come EEPROM e Flash, sia SRAM volatile). Impara a usare le cose di bordo prima di iniziare a avventurarti nelle periferiche.
Kevin Vermeer,

1

Alla mia università, ci è stato insegnato design / architettura hardware insieme al linguaggio assembly (i due vanno di pari passo, ovviamente) con l' architettura MIPS (o forse DLX ). Da allora, mi sono dilettato un po 'nel montaggio PIC e AVR a scuola / lavoro, e sono tutti abbastanza simili. Penso che l'assemblaggio MIPS sia stato un ottimo punto di partenza, poiché il linguaggio è molto semplice, così come l'architettura del processore.

Vedi anche: questo libro . Non è il miglior libro del mondo, ma è il libro di progettazione di computer standard per molte università.


Il Microchip PIC32 utilizza l'architettura MIPS ed è abbastanza facile mescolare l'assemblatore MIPS con C.
tcrosley

0

il mio suggerimento è che chiunque inizi a studiare microcontrollori e processori dovrebbe leggere il libro intitolato "codifica il linguaggio nascosto del computer" se studi che quasi sei esperto di processori e per la programmazione avr usare meglio il programmatore poney prog e programmare da atmel studio6.1 dal sito ufficiale atmel


Descrivi le caratteristiche chiave del libro e del programmatore, che inclinerebbero l'OP a usarle esattamente.
Vorac,

si tratta di comprendere un microcontrollore come viene sviluppato dai sistemi digitali e spiega il linguaggio di assemblaggio
avinash,

vai a questo sito j.mp/mpcinterest per ottenere quel libro
avinash,
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.