Domanda:
Quale famiglia di processori ARM dovrei imparare: ARM7TDMI o Cortex M3?
0xakhil
2011-06-13 12:16:25 UTC
view on stackexchange narkive permalink

Non vedo l'ora di conoscere la famiglia di microcontrollori ARM7. Quando ho cercato su Internet, ho scoperto che ci sono due versioni: ARM7TDMI leggermente più vecchia (LPC21xx ecc.) E Cortex M3 (LPC 17xx ecc.) Più recente. Sono un po 'confuso tra questi due. Voglio sceglierne uno che possa aiutarmi a entrare in un'azienda in futuro. Per favore aiutami a sceglierne uno e per favore dimmi anche la principale differenza tra le due versioni.

Sette risposte:
stevenvh
2011-06-13 13:06:58 UTC
view on stackexchange narkive permalink

In parte hai risposto tu stesso alla domanda: Cortex è un core più nuovo e più avanzato. È più potente dell'ARM7TDMI e allo stesso tempo consuma meno energia: circa il doppio del DMIPS / mW.
La tabella seguente offre una bella panoramica delle differenze (da questo white paper):

enter image description here

(Oltre alle prestazioni e al consumo energetico) gli interrupt fino a 240 (!) e la latenza di interrupt molto migliorata rendono Cortex una scelta di gran lunga migliore per i sistemi in tempo reale .

Per quanto riguarda il design Cortex-M3 che è più recente, ho visto alcuni produttori mettere le loro parti ARM7 nella lista "non raccomandato per il nuovo design".
Un altro esempio è che la serie SAM3S basata su Cortex-M3 di Atmel è in parte destinata a sostituire la serie SAM7S basata su ARM7TDMI.
Per quanto riguarda le interruzioni: sfortunatamente, molti fornitori non utilizzano più di 31 interruzioni. (Ho visto un chip che utilizzava un interrupt Cortex-M3 per tutti gli interrupt PIO, quindi utilizzava registri esterni per mappare i singoli interrupt PIO.) Una (pessima ragione, IMHO) per questo è che ogni interrupt extra aumenta la tabella delle eccezioni dimensione di quattro byte.
Sono solo io o è sorprendente che siano passati da un'architettura von Neumann a un'architettura di Harvard? Questa è una differenza fondamentale.
@Nick - Certamente lo è, ma non potrei dire quanto contribuisca al miglioramento delle prestazioni o quanto sia dovuto ad altri cambiamenti.
old_timer
2011-06-30 07:37:31 UTC
view on stackexchange narkive permalink

Perché non imparare entrambi? Puoi ottenere una tavola cortex-m3 per circa 12 dollari e qualcosa come un sam7 per circa $ 35. Per quanto riguarda ARM, se vuoi avere una buona conoscenza, inizia con ARM7TDMI, impara ARM e thumb, quindi porta il pollice alla corteccia-m3 e quindi alle aggiunte di thumb2. ARM non produce chip che vendono core di processore, il venditore ci avvolge la loro salsa speciale. È bene dilettarsi con i diversi fornitori con gli stessi core. L'I / O e le periferiche su chip ti faranno o distruggeranno, ed essere in grado di scegliere il fornitore giusto e / o evitarne uno che non è adatto per l'attività è prezioso.

Di volta in volta Sono coinvolto nelle decisioni di assunzione e sono d'accordo con i markrages. Non si tratta solo di conoscere un core davvero bene, ci sono molte più cose da sapere, non essere così specifico. Chiedete ai 6502 guru (che non sono andati avanti con l'industria) come stanno andando le loro carriere. Pochissimi pochi molto bene il resto, non tanto. Mi piace vedere un candidato che ha il proprio tempo e non solo per una lezione universitaria, che ha acquistato un microcontrollore o una piccola scheda di valutazione e ha effettivamente fatto qualcosa con esso. Anche se si impara a far lampeggiare i led in quattro modi diversi utilizzando i perhiperali interni. Preferisco qualcuno che abbia provato più di un processore e fornitore, ma non possiamo avere tutto ciò che vogliamo. Quanto velocemente e bene puoi raccogliere un foglio dati o un set di istruzioni o una diversa toolchain può essere più prezioso di quanto tu sia un esperto in un core specifico di un fornitore specifico. Alcuni fornitori hanno buoni fogli dati e schemi, ecc. Altri no, è necessario sapere che tutti i manuali di riferimento sono difettosi ed essere in grado di hackerare e cercare su Google i punti deboli del materiale di riferimento.

ARM è il posto dove stare in questo momento, sarebbe sciocco ignorare i loro core e i principali fornitori di chip che usano i loro core. Ma tieni gli occhi aperti anche su quelli vecchi, nuovi e diversi. L'8051 è ancora usato in molti posti, semplicemente non morirà. Microchip vende ancora foto. L'avr era comunque popolare (atmel sa davvero come creare clienti felici) e arduino ha portato quella popolarità a un livello completamente nuovo. Niente è vicino ad ARM in generale, ma ARM non è l'unico attore nei diversi mercati a cui partecipa.

Sparkfun ha un numero di schede per meno di 50 dollari, io consiglio di acquistarne alcune. Le schede di intestazione olimex sono buone, ad esempio sam7s-h64 o 256. st ha la sua scheda discovery stm32 (NON CONFONDERLA CON LA discovery STM8, linea di processori completamente diversa) per circa 10 dollari. A meno di $ 5 non puoi evitare di ottenere uno o due launchpad msp430 (non un braccio ma un altro, buono, core del microcontrollore). Puoi ottenere i tuoi piedi con il coridium armmite, o l'acero, impronta arduino ma basata su ARM non avr. Uno più dell'altro vuole fornire anche la sandbox per sviluppatori. l'mbed2 è davvero facile da usare, lpc è ben noto nel mondo dei microcontrollori da braccio, ma probabilmente sono le mie meno preferite tra le scelte, provane alcune diverse, almeno una delle scelte da atmel. Stellaris ora di proprietà di ti è stato il primo a uscire con la cortex-m3, a parte la serie 800 che ho murato in un'ora o due istantaneamente perché non ho prestato attenzione alle 17 etichette di avvertenza ovunque, mi sono piaciute tutte le loro schede che ho provato. Almeno per parlare con le periferiche e conoscere l'oled. Se vuoi agganciare il microcontrollore a qualcosa che non è sulla scheda, le schede stellaris sono probabilmente l'ultima scelta. Hanno masticato quasi tutti i pin I / O e devi tagliare le tracce per riaverli, fondamentalmente pagando per cose sulla scheda che non intendi usare, prendi solo un coridium armmite pro o una scheda di intestazione olimex o qualcosa del genere. evita lxpresso, è specificamente mirato a un venditore di strumenti, non avvicinarti nemmeno, no no ... vai con mbed2 se vuoi davvero ottenere un lpc cortex-m3 e non devi nemmeno preoccuparti del sandbox incoraggiano, compila il tuo file .bin con qualsiasi strumento che ti piace e copialo semplicemente sulla cosa che sembra una chiavetta USB e premi il pulsante di ripristino. Questa è la bellezza di mbed2, sei completamente libero di usare qualsiasi sistema operativo host e strumenti di sviluppo che ti piacciono. Il negativo è che la retina brucia i LED blu. Ho dovuto sostituire il mio con i LED verdi per evitare l'emicrania istantanea.

Rileggendo la tua domanda. Della famiglia attuale di core ARM. ARM7TDMI è il più tradizionale che supporta il set di istruzioni di base a 32 bit. ARM ha preso quel set di istruzioni e ha creato un set di istruzioni ARM ridotto, noto come set di istruzioni thumb. Le istruzioni thumb mappano uno a uno con le istruzioni ARM (il contrario non è vero). In modo che il core debba elaborare solo le istruzioni ARM, le istruzioni del pollice vengono tradotte in istruzioni ARM durante il percorso nel pipe. Non è un cattivo design / idea. Guarda l'avanzamento del gameboy, i bus a 16 bit dappertutto, il taglio dei costi, ecc. Ora il GBA è l'eccezione alla regola secondo cui il pollice funziona più lentamente del braccio, non a causa della traduzione in istruzioni di braccio ma perché era un sottoinsieme questo ti limitava per lo più a metà dei registri ea due istruzioni di operandi invece di tre, quindi ci vollero più istruzioni per fare la stessa cosa con il pollice che con il braccio. (I file binari Thumb sono spesso un po 'più piccoli). Il passo successivo è stato thumb2, fondamentalmente questa è una lunghezza di istruzione variabile, alcune istruzioni sono a 32 bit o 16 bit, hanno creato un equilibrio tra alcuni dei punti deboli del set di istruzioni del pollice e la forza del braccio. i binari non sono così piccoli, ma grandi come solo un braccio, quindi con il guadagno di prestazioni è attraente per i microcontrollori. L'altra cosa che hanno fatto è creare questi nuclei corteccia-m che sono solo thumb2, non hanno un nucleo del braccio sepolto all'interno, questi sono attraverso e attraverso thumb2. magra e meschina. Ora anche questi eseguono thumb, quindi puoi usare solo gli strumenti thumb che hai imparato da ARMv4T (arm7tdmi). Se non stai operando a livello di linguaggio assembly, la MAGGIOR PARTE di questo non ha alcuna importanza per te, la parte che può importare sono alcuni bit necessari per l'assemblaggio, come la tabella delle interruzioni / eccezioni è completamente diversa sulla serie cortex-m da i tradizionali core ARM. Se stai usando il sandbox di qualcuno, non lo vedrai nemmeno. se non si scrive l'assembler, allora quello che devi imparare è come usare i compilatori incrociati e forse gli script del linker. Con codesourcery si crea una buona toolchain gcc per il braccio che è per lo più fatta per te. Potresti voler arrivare a capire che cose come ARM7 e ARMv7 sono due cose completamente diverse, ARM7 è un ARMv4, ARMv7 è sul lato più recente. Sappi anche che ARMv5, ARMv6, ARMv7 hanno tutti aggiunto nuove istruzioni e impara a dire al compilatore quale core hai in modo che possa fare scelte migliori usando le istruzioni più recenti, fornendo prestazioni migliori, allo stesso modo non accidentalmente usando la scelta di core sbagliata e generando istruzioni che non vengono eseguiti sul tuo core. Il cortex-m3 e ora il cortex-m0 sono destinati ai microcontrollori tradizionali, le persone a 8 bit. La serie cortex-A è la fascia più alta destinata a telefoni con grandi display e baloney baloney, desktop, server ecc. Hai menzionato i microcontrollori quindi è probabile che tu rimanga nell'arena ARM7 o cortex-m. Ho un simulatore di set di istruzioni thumb (non thumb2) chiamato thumbulator su github.com che si avvia come un cortex-m, quindi oltre alle periferiche, che sono facili da aggiungere, puoi prendere il codice che impari a eseguire lì e passare a un corteccia-m3 o m0. qemu è un buon simulatore ma è molto più difficile da guardare durante l'esecuzione e molto più difficile da aggiungere periferiche, ma allo stesso tempo supporta i set di istruzioni braccio, pollice e pollice2. (c'è un clone di stellaris lì dentro, quindi puoi usarlo per avere un'idea di cortex-m3 e usare i documenti di stellaris per trovare gli indirizzi periferici, ecc.).

Vai al sito web di ARM e trova ARM ARM (ARM Architectural Reference Manual) questo è il crogiolo di tutti i loro core, a questo punto con così tante variazioni sta diventando un po 'gonfio, quindi devi andare a cercare TRM (Manuali di riferimento tecnico) per i core specifici. In particolare il cortex-m3, vuoi davvero avere il TRM per ARMv7M penso che si chiami cortex-m3. Aiuta a separare thumb2 da ARM ARM. Comprendere il processo di avvio del cortex-m3 e come varia dal braccio a 32 bit è credo anche nel TRM, forse è SOLO nel TRM. Un'altra cosa da sapere, un particolare venditore acquisterà un particolare core e rev di quel core. ARM può migliorare quel core e vendere una rev3 per esempio, ma il venditore con la rev2 ha la rev2. Anche se il sito web di ARM mostra il TRM per rev2 come sostituito dal rev3 TRM, il rev2 TRM è quello che desideri in quanto corrisponde al core che stai utilizzando, a volte puoi confonderti o perderti completamente usando il TRM sbagliato. ARM preferisce che i fornitori non documentino i core stessi per gestire la documentazione, quindi è necessario colmare questa lacuna da ciò che il fornitore di chip ti sta dicendo e quali documenti sul sito ARM ottenere. Questo genere di cose rende difficile il supporto Linux per ARM per gli ARM di fascia alta. E di recente ho notato alcuni enormi errori nel codice Linux che collegava l'errata errata, il numero di giri sbagliato al fornitore sbagliato e il core sbagliato. Allo stesso modo inizializzare le cose in modo sbagliato perché è stato utilizzato il TRM sbagliato per scrivere il codice. È lo sfortunato effetto collaterale di avere core utilizzati da molti fornitori di chip in molti modi diversi, mentre quel core vendor sta rapidamente aumentando il numero e la qualità dei loro prodotti. Puoi fare quello che faccio io la maggior parte del tempo, compilare per la modalità ARMv4 arm o ARMv4 thumb e quel codice verrà eseguito praticamente su tutti i core che seguirono. Sfortunatamente gli strumenti, ben basati su gcc, hanno ancora qualche dolore e / o fastidio quando si usa il pollice. Richiede un po 'di pratica.

scusa per la lunga risposta, spero che sia utile.

Ok, wow mouser ha un sacco di schede di valutazione del microcontrollore. c'è il MOD-MMA7260, non devi usare l'accelerometro, c'è una scoperta stm32l, il prezzo del mouse è più alto di altri ma la loro spedizione è molto più bassa
Ottima risposta approfondita lì :)
Ehi, puoi approfondire il tuo consiglio contro LPCxpresso?Non capisco cosa intendi con "è specificamente rivolto a un fornitore di strumenti".A me sembra un modo a basso costo per iniziare a sviluppare ARM.
All'epoca ero un po 'deluso dal fatto che il prodotto fosse supportato da un solo fornitore.Ci sono bootloader alternativi, ecc ... Ora, alcuni anni dopo, per circa $ 10 puoi ottenere un bel po 'di schede, Nucleo da ST, launchpad, ecc.
markrages
2011-06-14 08:06:17 UTC
view on stackexchange narkive permalink

Nessun responsabile delle assunzioni si preoccuperà del numero di parte esatto con cui hai lavorato prima. Se stai cercando di impressionare un potenziale datore di lavoro, assicurati che il progetto che scegli sia interessante e puoi parlarne in modo chiaro e sicuro. Dovrai essere in grado di condividere esempi del tuo lavoro con i datori di lavoro, quindi assicurati di scegliere un progetto che lo consenta nella licenza o chiedi il permesso prima di iniziare.

Le differenze tra le famiglie di processori sono minori in quanto riguardano il tuo obiettivo. Ma suggerirei di imparare la parte più recente, poiché questa conoscenza ha comunque una durata di conservazione così breve.

Se vuoi presentarti come un esperto ARM sei più preparato per alcune domande. Per un progetto abbiamo iniziato con un Atmel ARM, ma abbiamo scoperto che non era in grado di gestire 5000 interrupt al secondo a causa di una latenza di interrupt troppo elevata. Ha funzionato bene su un NXP. Puoi sicuramente fare impressione se conosci dettagli del genere.
Hans
2011-06-13 16:46:01 UTC
view on stackexchange narkive permalink

Come ha dimostrato Steven, il Cortex M3 è un processore più moderno. È un dispositivo molto più sofisticato. Se si confronta la serie LPC21xx con l'LPC17xx, si ottengono molte funzionalità extra tra cui bus di memoria esterna, DMA, più MHz, Ethernet, USB, ecc. È un dispositivo molto più completo.

Ho fatto un progetto con l'LPC2129 per il mio stage. Se hai lavorato con ATMEGA, serie PIC18, 16KB di RAM e 128KB di flash, sembra molto. In effetti, puoi scrivere software più potente più velocemente, ma la RAM si esaurisce rapidamente se devi fare la cache EEPROM (per migliorare la velocità di elaborazione dei dati), buffer UART per l'elaborazione dei pacchetti, codice GUI (funzionava con un LCD grafico schermo) ecc. Ho anche notato che mi mancavano presto alcuni dispositivi .. Vorrei che ci fosse un'interfaccia RAM esterna o una periferica DMA per aiutare il trasferimento dei dati. 60MHz è veloce, ma era un'applicazione che girava a "velocità umana", non utilizzata nei processi di regolazione.

Tutto sommato, scegli Cortex M3 mentre puoi ancora fare una scelta libera (LPC1759 o LPC1769 sembra come un ottimo chip che è ancora in un ragionevole pacchetto fai-da-te). Più veloce, più memoria, più periferiche, più interrupt, meno potenza / MHz. Il dispositivo sembra avere un prezzo simile. Imparare l'ARM7TDMI non è male e imparerai molto su queste piattaforme.

Gli unici vantaggi che posso vedere per ARM7 (oltre alla compatibilità con il codice ARM7 esistente) sono che le istruzioni condizionali sono a 32 bit invece di 48, la dimensione fissa dell'istruzione a 4 byte significa che i target dei rami calcolati saranno naturalmente allineati a parole complete senza NOP di riempimento e le tempistiche delle istruzioni durante l'esecuzione dalla RAM sono prevedibili e indipendenti dalla posizione.
tehnyit
2011-06-14 12:49:50 UTC
view on stackexchange narkive permalink

La risposta dipende davvero dal settore industriale in cui vuoi entrare. Guarda quali micro stanno usando attualmente e provali. Alcuni esempi sono ..

Elettronica di consumo di fascia alta come telefoni cellulari e altri gadget: i core Cortex sono buoni

Elettronica di consumo di fascia bassa come giocattoli semplici e gadget di basso valore: core a 8 bit e 16 bit come gli AVR Atmel o i PIC Microchip sono una buona scelta.

Automotive come controller del corpo e sicurezza - Vecchi e core collaudati come PowerPC sono buone scelte.

oxakhil ha chiesto informazioni su ARM7TDMI e Cortex, non su AVR o PIC.
@stevenvh, questo è vero. Ha anche chiesto quale studiare per ottenere un posto in futuro. Non ha menzionato quale settore vuole prendere di mira. Ad esempio, non va bene studiare ARM micro se vuole lavorare nel settore degli elettrodomestici.
Non sottovalutare la gamma di ARM. Produttori come NXP stanno attaccando in modo aggressivo il mercato a 8 bit con Cortex M0 a basso costo. Ho visto citazioni per LPC1111 a partire da 65 dollarcent. E questo è per un pacchetto HVQFN33. Mi aspetto un conteggio dei pin inferiore M0 nel prossimo futuro e un conteggio dei pin inferiore di solito significa un prezzo inferiore.
A proposito, quel 65 cent era per 10k / anno. A 100k dovresti essere in grado di ricavarne qualche centesimo. Certo, puoi acquistare un PIC per meno, ma mi chiedo se puoi controllare una lavatrice con questi (1 I / O per esempio).
Seth Archer Brown
2011-08-10 00:16:22 UTC
view on stackexchange narkive permalink

Penso che il problema principale sia che stai confondendo ARM 7 con ARMv7. I processori cortex utilizzano l'architettura ARMv7. ARM7TDMI utilizza l'architettura ARMv4. Mi ci è voluto un po 'per capire che il 7 in ARM7 non era lo stesso del 7 nella versione ARM 7.

Wouter van Ooijen
2011-06-29 02:32:40 UTC
view on stackexchange narkive permalink

Se vuoi programmare il tuo ARM in assembler (presumo che non lo farai, ma supponiamo) il set di istruzioni ARM (non il set Thumb dei Cortex!) è uno dei più belli da imparare e usare. Oltre a questo, i Cortex sembrano essere l'onda del futuro per i microcontrollori. Per i microcprocessori (le cose con più di 200 pin su un PCB con alcuni chip di memoria e probabilmente con Linux) non sono così sicuro, Snapdragon e simili sono cloni ARM e sembrano essere piuttosto dominanti in quel mercato (insieme a vari MIPS versioni).



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...