Domanda

Ho esperienza nel fare desktop e programmazione web per alcuni anni. Vorrei passare a fare qualche programmazione del sistema di incorporamento. Dopo aver chiesto il prima domanda , mi chiedo quale hardware / software IDE dovrei iniziare ...

Oppure ... non importa?

Quale piattaforma di sviluppo è il più facile da imparare e programma (prendere in considerazione di IDE usabilità)?

Qual è il modo più semplice per eseguire il debug se qualcosa va storto?

Il mio obiettivo è quello di conoscere " come funzionano le porte iO, limitazioni di memoria / requisiti incl. possibilmente di paging, interrompono routine di servizio. " e 'meglio imparare quello che userò in seguito, o il concetto di alto livello dovrebbe portare verso la maggior parte dei micro-controllori?

Grazie!

Aggiornamento: come è questo kit dev per cominciare? Commento? suggerimento?

È stato utile?

Soluzione

Personalmente, vi consiglio un ARM Cortex-M3 basata microcontrollore. Il più alto potere core ARM sono estremamente popolari, e queste versioni a bassa potenza potrebbe benissimo decollare in uno spazio che è ancora disseminato con anime proprietarie 8/16-bit. Ecco un recente articolo sul tema: L'ARM Cortex-M3 e la convergenza del mercato MCU .

Il Arduino è molto popolare per hobbisti. Atmel biblioteca periferico s ' è abbastanza comune in tutta tipi di processori. Quindi, sarebbe una transizione liscia tardi da un AVR a un ARM.

Non intendo affermare che un braccio è meglio di un AVR o qualsiasi altro core. La scelta di un MCU per un prodotto commerciale di solito si riduce a periferiche e dei prezzi, seguiti da strumenti di base di codice e di sviluppo esistenti. Inoltre, microcontrollori sono generale molto molto più semplice di un PC desktop. Quindi, non è poi così difficile muoversi forma uno all'altro dopo aver ottenere il blocco di esso.

Inoltre, guardare in FreeRTOS se siete interessati a sistema operativo real-time (RTOS) di sviluppo. E 'open source e contiene una bella passeggiata attraverso di ciò che un RTOS è e il modo in cui hanno implementato uno. Infatti, la loro walk-through esempio anche rivolge un AVR.


Strumenti di sviluppo per sistemi embedded possono essere molto costosi. Tuttavia, ci sono spesso alternative open source per i nuclei più aperte come ARM e AVR. Ad esempio, vedere la WinARM e progetti WinAVR .

Gli utensili catene si basano su GCC e sono quindi disponibili anche (e più facile da usare IMHO) su piattaforme non Windows. Se sei a conoscenza con l'utilizzo di GCC, poi si sa che ci sono un'abbondanza di "IDE" secondo i propri gusti da EMACS e vi (il mio preferito) per Eclipse .

Le offerte commerciali si può risparmiare un sacco di mal di testa ottenere setup. Tuttavia, la scelta di uno sarà molto dipende dal vostro hardware e budget prefissato. Inoltre, alcuni supporto hardware debug USB diretta mentre altri possono richiedere un costoso adattatore JTAG .


Altri link:


A basso costo Cortex-M3 Boards:


Nuovo Arduino di utilizzare un ARM Cortex-M3, invece di un microcontrollore AVR.

Altri suggerimenti

Dato che hai già esperienza di programmazione, si potrebbe prendere in considerazione ottenere un Arduino e spazzando via il firmware di fare la propria roba con AVR Studio + WinAVR. L'Arduino ti dà un buon punto di partenza per la comprensione del lato dell'elettronica di esso. Tirando fuori il bootloader Arduino darebbe un migliore accesso alle viscere della Atmel.

Per arrivare a degli obiettivi che stai stabiliscono, consiglierei anche di esplorare i computer desktop più profondamente attraverso la programmazione x86. Si potrebbe costruire un kernel del sistema operativo x86, per esempio.

ARM è l'architettura embedded più utilizzato e copre una vasta gamma di dispositivi di produttori diversi e una vasta gamma di costi. Detto questo ci sono differenze significative tra ARM7, 9, 11, e dispositivi Cortex - specialmente Cortex. Tuttavia, se entrare in sistemi embedded è professionalmente il vostro scopo, l'esperienza ARM vi servirà bene.

8 bit architetture sono generalmente più facili da usare, ma spesso molto limitata sia capacità di memoria e velocità di nucleo. Anche perché sono semplici da usare, le abilità a 8 bit sono relativamente facili da acquisire, quindi è un'abilità meno attraente per un potenziale datore di lavoro, perché è facile soddisfare internamente o con personale meno esperto (e quindi meno costosa).

Tuttavia, se questo è un hobby piuttosto che una carriera, il basso costo dei componenti, schede e strumenti, e facilità d'uso può rendere attraente 8 bit. Vorrei suggerire AVR semplicemente perché è sostenuta dalla toolchain gcc avr-libera. Alcuni obiettivi 8 bit sono supportati da SDCC, un'altra fonte compilatore C aperta. Credo Zilog fanno il loro compilatore Z8 disponibile gratuitamente, ma potrebbe essere necessario pagare per il debug hardware (anche se questo è relativamente poco costoso). Molti produttori di strumenti commerciali forniscono versioni del codice di dimensioni limitate dei loro strumenti per la valutazione e l'uso non commerciale, ma attenzione la maggior parte dei debugger richiedono hardware specializzato che può essere costoso, anche se in alcuni casi è possibile costruire da soli se è necessario solo funzionalità di base e bassi regimi.

Qualsiasi cosa facciate, dare un'occhiata a www.embedded.com . Se si sceglie di ARM, ho usato WinARM con successo su progetti commerciali, anche se non è costruita per il comfort! Un buon elenco di risorse ARM è disponibile qui . Per AVR sicuramente check out www.avrfreaks.net

Vorrei solo consigliare le parti Microchip PIC (almeno quelli di fascia bassa) per altamente costano progetti sensibili dove il mix periferica è una buona misura per l'applicazione; Non per l'apprendimento sistemi embedded. PIC è più di un marchio di un'architettura, le varie gamme PIC12, 16, 18, 24, e PIC32 sono molto diversi tra loro, in modo da imparare a non significa necessariamente che si starà al posto buono per l'utilizzo di un altro - spesso nemmeno bisogno per l'acquisto di nuovi strumenti! Detto questo, il dsPIC che si basa sull'architettura PIC24 può essere una buona scelta se si voleva ottenere qualche semplice esperienza DSP allo stesso tempo.

In ogni caso controllare la disponibilità del compilatore (soprattutto se il supporto C ++ è un requisito) e costi e requisiti hardware Debugger, dal momento che spesso questi saranno parti più costose del vostro dev-kit, le schede e le parti sono spesso le meno costoso parte.

Texas Instruments ha rilasciato un kit di sviluppo molto interessante ad un prezzo molto basso: eZ430-Chronos Strumento di sviluppo contiene un MSP430 con sensori di visualizzazione e diverse in un orologio sportivo, tra cui un programmatore USB debug e un punto di accesso wireless usb per 50 $

C'è anche un wiki che contiene un sacco di informazioni .

Ho già creato una proposta StackExchange per la eZ430-Chronos Kit.

Qualunque cosa facciate, assicuratevi di avere un buon ambiente di sviluppo. Io non sono un fan di strumenti di sviluppo di Microchip anche se mi piacciono i loro microcontrollori (mi è stato bruciato troppe volte da MPLAB ICD +, troppo fastidio e disfunzioni). 2800 DSP serie di TI sono abbastanza buone e hanno un ambiente di C di sviluppo ++ basato su Eclipse che si può ottenere in per 28335 ) - il collegamento di comunicazione debugger è davvero solido; l'IDE è buona anche se io di tanto in tanto crash.

Da qualche parte là fuori sono circuiti integrati e schede che sono meglio; Io non sono che la familiarità con il paesaggio microcontrollore integrato, ma non ho molta pazienza per IDE poveri con l'ennesima catena di tool software che devo capire come aggirare tutti i bug.

Alcuni raccomandano l'ARM. Lo consiglio, non come una prima piattaforma per imparare, ma come una seconda piattaforma. ARM è un po 'complessa come una piattaforma per imparare i dettagli di basso livello di embedded, perché i suoi requisiti del codice di avvio e inizializzazione sono più complicate rispetto a molti altri micro. Ma ARM è un grande giocatore nel mercato embedded, quindi vale la pena di apprendimento. Quindi lo consiglio come una seconda piattaforma per imparare.

L'Atmel AVR sarebbe un bene per l'apprendimento molti elementi essenziali incorporati, per 3 motivi principali:

  1. Architettura è ragionevolmente straight-forward
  2. disponibili, con tutorial
  3. Fan forum con molte risorse

Altre micros con kit di sviluppo potrebbe anche essere buono, ad esempio MSP430 -anche se essi non possono avere un tale fan forum. Utilizzando un kit di sviluppo è un buon modo per andare, dal momento che sono orientati verso ottenere rapidamente up-and-running con il micro, e favorire un apprendimento efficace. Essi sono suscettibili di avere tutorial orientato verso ottenere rapidamente iniziate .

Bene, suppongo che i kit di sviluppo e le loro esercitazioni sono suscettibili di sorvolare su cose come bootloader e il codice di start-up, a favore di ottenere il vostro codice a lampeggiare il LED il più presto possibile. Ma che potrebbe essere un buon modo per iniziare, e si può esplorare la catena di eventi da "power-on" a "codice in esecuzione" al vostro ritmo.

Non sono un fan dei PIC, almeno i PIC16s, a causa della loro architettura . Non è molto C-friendly. E banchi di memoria sono dolorose.

Questa è una specie di una domanda difficile da rispondere come la risposta ideale molto dipende da quello che è il tuo interessati ad apprendere.

Se il vostro obiettivo è solo quello di immergersi un po 'più in profondità il funzionamento interno dei sistemi informatici vorrei quasi consiglio di rinunciare al percorso embedded e prendere un libro sulla scrittura un modulo del kernel di Linux. Scrivere qualcosa di semplice che legge un sensore di temperatura fuori dal SMbus o qualcosa del genere.

Se la vostra ricerca di invadere il livello alto (telefoni, ecc) lo sviluppo di applicazioni embedded, scaricare l'SDK di Android, è possibile codificare in Java sotto Eclipse e ha anche un bel emulatore.

Se la vostra ricerca ad ottenere nello spazio "reale" microcontrollore e davvero dare un'occhiata a programmazione di sistema a basso livello, mi sento di raccomandare che si avvia su un'architettura molto semplice, come un AVR o PIC, qualcosa senza una MMU.

Un tuffo nel mezzo, ad esempio un braccio con MMU e una sorta di sistema operativo sia esso Linux o comunque sta per essere un po 'uno shock come senza un background è sia la programmazione del sistema e l'hardware di interfacciamento penso che la transizione essere molto agitato se avete intenzione di fare molto altro che scrivere applicazioni molto semplici, contando la pressione dei pulsanti o simili.

Si fa materia, è necessario acquisire gradualmente esperienza iniziando con sistemi più semplici. Si noti che da semplice Non voglio dire meno potente, intendo facilità d'uso, facilità di installazione, ecc In tal senso mi sento di raccomandare il seguente (non ho alcun interesse a un qualsiasi prodotto, ho solo trovato il migliore):

Ho iniziato ad usare uno di questi (scheda sviluppatore MBED). I grandi punti di forza per me erano che avrei potuto codice in C o C ++, il collegamento diretto vis un ambiente di sviluppo chiazza di petrolio on-line e USB (nessuna installazione strumento locale richiesto a tutti!).

http://mbed.org/

A cinque minuti afer apertura casella Ho avuto un programma di esempio blinky (il 'ciao mondo' del mondo emedded) eseguendo il seguente:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

Questo è tutto! Sopra il programma completo!

E 'basato su ARM Cortex M3, molto veloce e di memoria per i progetti integrati (100MHz, 256K Flash & 32k RAM). Gli strumenti di sviluppo on-line hanno una buona biblioteca e un sacco di esempi e c'è un forum molto attivo. Un sacco di aiuto sul collegamento di periferiche per MBED etc

Anche se ho molta esperienza con i sistemi embedded (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC, ecc) ho ancora trovato questo un sistema rinfrescante facile da fare i conti con gravi pur avendo capacità .

Dopo aver inizialmente a giocare con esso su una basetta di base ho comprato una scheda base da questi ragazzi: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207 . Questo ha un mucchio di dispositivi I / O (tra cui un OLED miniture e un accelerometro 3AXIS). Dallo stesso sito ho anche comprato una delle schede processore LCPExpresso che è a buon mercato, meno potenza / memoria rispetto alla MBED ma perfetto per i piccoli lavori (martelli ancora la merda di processori PIC / ATMEGA). La scheda base supporta sia il LCPExpresso e MBED. L'acquisto del scheda processore LCPExpress anche me mi ha fatto un debugger JTAG allegato e un envoronment offline dev (GCC / Eclipse dev kit base di Code Red). Questo è molto più complessa di quanto l'ambiente MBED dev online, ma è una progressione logica dopo che hai guadagnato expeience con il MBED.

Con riferimento alla mia noite punto originale che il controller MBED è molto più capace di quanto il controller LPCExpresso MA è molto più semplice da utilizzare e imparare con.

Io uso microchip PIC, il suo quello che ho iniziato, ho avuto principalmente di andare su di esso a causa dei 123 progetti microcontrollore per il libro genio del male. Ho preso una classe di microprocessori a scuola per la mia laurea e ho imparato un po 'di interrupt ei tempi e le cose, questo ci ha aiutato un sacco con i miei microcontrollori. Suppongo che alcuni degli altri programmatori ecc può essere migliore / più facile, ma per $ 36 per la PicKit1, sono troppo a buon mercato per andare a comprare un altro ... e francamente senza l'utilizzo di loro non so se sono più facili / meglio , mi piace la mia e consiglio ogni volta che posso, e mi ci sono voluti per sempre di guardare davvero in realtà a lui, ma ero in grado di programmare un altro chip fuori bordo con ICSP finalmente. Non so quello che altri programmatori lo fanno, ma per me questo è il più bello di interfaccia filo cosa 5 e si sono programmati. Non può battere che con un bastone ...

ho usato solo uno di quelli.

Il Freescale è un bene chip. Ho usato HC-qualcosa chip per anni per i piccoli progetti. L'unica avvertenza è che non vorrei toccare CodeWarrier embedded con un palo di 10 piedi. Si possono trovare piccoli compilatori C gratuiti e assemblatori (non mi ricordo il nome del l'ultimo che ho usato) che fanno il lavoro bene. CodeWarrior era grande e confusa e indipendentemente da quanto ho saputo circa l'architettura di chip e di programmazione C sempre sembrato solo a rendere le cose più difficili. Se hai utilizzato CodeWarrior su Mac torna ai vecchi tempi e pensi CW è abbastanza pulito, beh, non è affatto così. CW incorporato guarda vagamente simile, ma funziona in modo molto diverso, e non molto bene.

Un compilatore a linea di comando è in genere bene . Professionisti in grado di sborsare i bucks grandi ottengono ambienti di sviluppo costosi, e sono sicuro che fanno le cose meglio, ma senza che sia ancora di gran lunga meglio che scrivere codice assembly per un PC desktop nel 1990, e in qualche modo siamo riusciti a farlo bene . : -)

No, non importa se si vuole imparare a programmare un dispositivo embedded. Ma è necessario conoscere il flusso di dove cominciare e dove andare. Causa ci sono molti micro-controllori là fuori e non si sa quale scegliere. Quindi meglio avere una road-map prima di iniziare.

A mio avviso si dovrebbe iniziare con - Qualsiasi scheda AVR (atmega 328P- schede Arduino o schede AVR) allora si dovrebbe andare a ARM micro-controllore - in primo luogo fare ARM Cortex TDMI poi ARM Cortex M3 board.Thus questo vi darà una visione d'insieme dopo il quale è possibile scegliere qualsiasi scheda a seconda del tipo di progetto che si sta lavorando e quali sono le vostre esigenze.

Per saperne di più incorporato on- doafco.com

Si potrebbe considerare un RoBoard . Ora, questa scheda può non essere quello che stai cercando in termini di un microcontrollore, ma ha il vantaggio di essere in grado di eseguire Windows o DOS e quindi si potrebbe utilizzare il anche strumenti di sviluppo C / C ++ di Microsoft .NET o smanettare con le cose come servi o sensori o anche, che diamine, costruire un robot! In realtà è un pò divertente.

C'è anche il Axon II , che ha il processore ATmega640.

In ogni caso, entrambe le schede dovrebbero aiutare a raggiungere il tuo obiettivo.

Ci scusiamo per la robotica a fuoco, solo qualcosa che mi interessa e ho pensato che potrebbe aiutare anche voi.

Io uso PIC, ma considererei Arduino se ho scelto oggi. Ma dai vostri obiettivi:

  • come funzionano le porte di IO
  • limitazioni di memoria / requisiti
  • routine di servizio di interruzione

Mi chiedo se è migliore da fare è solo quello di incidere nel kernel di Linux?

BBC Micro Bit

https://en.wikipedia.org/wiki/Micro_Bit

Questa piccola pensione a buon mercato (~ 20 libbre) stato ingabbiati da ARM Holdings come dispositivo educativo, e le unità 1M sono stati consegnati gratuitamente a studenti del Regno Unito.

Contiene un ARM Cortex-M0, il nucleo ARM più piccolo di tutti.

Lo consiglio come una prima scheda micro-controllore grazie alla sua ampia disponibilità, a basso costo, la semplicità, e il fatto che si introduce l'architettura ARM, che ha molte tavole più avanzati disponibili anche per le applicazioni più serie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top