Qual è la differenza tra la programmazione per microcontrollori e la programmazione per sistemi embedded? [chiuso]

0

Qual è la differenza precisamente tra un sistema embedded (come Tegra, Raspberry o simili) e un microcontrollore? Capisco che c'è una differenza, ma trovo difficile da capire.

Che cosa intende un intento quando dice: "sei in grado di sviluppare per i microcontrollori"? Significa semplicemente programmare in C / C ++ per un sistema embedded o qualcosa di più? Qual è la differenza tra la programmazione in C / C ++ per sistemi embedded e microcontrollori? Se programma comunemente per ARM in C / C ++, posso dire che posso programmare microcontrollori o posso fare domanda per un simile lavoro?

    
posta user3545072 17.04.2014 - 14:18
fonte

1 risposta

5

Questa è tutta la mia esperienza / opinione, derivante dal lavorare in campo molto vicino al metal:

I "sistemi incorporati" sono in genere situazioni in cui la memoria non banale o i vincoli di velocità sono significativi rispetto ai sistemi desktop. Queste situazioni incorporate possono includere microcontrollori, ma possono anche includere sistemi x86 su un chip e anche sistemi come PC104 o altri fattori di forma. Possono eseguire un sistema operativo "comune" come Linux o Windows CE, ma non sempre. Di solito hanno una memoria e una velocità molto inferiori rispetto alle applicazioni desktop / server, ma di solito non così poco da dover pensare a lungo se utilizzare un intero 16 o 32 bit per qualcosa come potrebbe essere necessario con un microcontrollore. / p>

Il raspberry pi per esempio funziona a 700MHz e ha 256 o 512 megabyte di ram. Un microcontrollore Atmel ATMega32U4, ad esempio, funziona fino a solo 16 MHz, con solo 2560 byte di RAM. Alcuni dei dispositivi STM32, che utilizzano un core ARM, funzionano fino a 24 MHz e hanno circa 8 kB di RAM. Abbastanza una sostanziale differenza di velocità e memoria tra i due, anche più drammatica di un desktop vs un raspberry pi.

La programmazione per microcontrollori è un sottoinsieme di sistemi embedded con vincoli di memoria e velocità ancora più significativi, ma anche una maggiore intimità con l'hardware a cui è collegato il microcontrollore. Trascorrerai molto più tempo a pensare a innalzare o innalzare trigger di clock di bordo, timer di watchdog, trigger di interrupt esterni, problemi di temporizzazione di conversione da analogico a digitale e un sacco di altre cose che in genere sono molto lontane dai sistemi desktop. Potrebbe anche essere necessario tenere presente la quantità di energia utilizzata in diverse operazioni e scrivere il software per soddisfare i requisiti di assorbimento di potenza.

Finché non hai programmato i microcontrollori, non è saggio rivendicare di poterlo fare. Fino al giorno in cui dovrai utilizzare un oscilloscopio per capire perché le tue periferiche SPI-bus non stanno parlando, non sai ancora il tipo di cose che finora ti sono state invisibili.

    
risposta data 17.04.2014 - 16:04
fonte

Leggi altre domande sui tag