2010-03-22 15 views
12

Ho conseguito la laurea in ingegneria informatica. Avevamo alcuni corsi di base sull'elettronica nell'elaborazione del segnale digitale, nella teoria dell'informazione, ecc. Ma il mio campo primario è la programmazione.Quali sono i prerequisiti per l'apprendimento della programmazione dei sistemi embedded?

Tuttavia, stavo cercando di entrare in programmazione di sistemi embedded e non ho alcuna conoscenza di come è fatto. Tuttavia, sono molto entusiasta di andare in questo campo.

Le mie domande:

  • Quali sono i linguaggi utilizzati per programmare sistemi embedded?
  • Sarò in grado di apprendere senza avere alcuna base nell'elettronica?
  • Eventuali altri prerequisiti che dovrei sapere?
+3

Come hai ottenuto una laurea in CE senza aver preso un sacco di lezioni di architettura e di elettronica di computer di basso livello? Nella mia scuola il programma CE era lo stesso del programma EE dei primi 2 anni, quasi la teoria dei circuiti. Quindi il programma CE richiedeva più classi nell'architettura di sistema e nei sistemi embedded dove, come il programma EE, in campi, segnali, sistemi di feedback, ecc. Intendi l'ingegneria del software? – Mark

+0

Prerequisiti? Nessuna. Non c'è niente che non puoi imparare per la prima volta in un contesto integrato, se sei in grado di raccogliere le conoscenze necessarie mentre vai avanti. –

risposta

2

Sono entrato in quel campo senza sapere come è stato fatto un neolaureato e ho smesso dopo 1,5 anni. Quindi, quello che dico potrebbe essere un po 'arrugginito e sicuramente non completo.

Il linguaggio che stavamo usando era C. Ma a quel tempo, lo spazio del disco era 4 MB e la memoria era 8 MB sui dispositivi che stavamo sviluppando, e so che C è stato utilizzato a causa dell'impronta minuscola delle sue librerie. Apparentemente, anche le prestazioni erano un criterio.

Per quanto riguarda l'elettronica di base, per una posizione entry level quasi nulla è necessario. Acquisirai le informazioni richieste e l'esperienza con il tempo.

Non prerequisiti, ma avere esperienza negli interni del sistema operativo e nello sviluppo del sistema è sicuramente un vantaggio.

+0

Anche saltato dentro con conoscenza zero. Nessun problema. – James

8

Senza dubbio, è richiesta esperienza o almeno una comprensione significativa dell'elettronica digitale e dell'ingegneria informatica di basso livello. Dovrai essere in grado di leggere i fogli dati del dispositivo e comprenderli. Ambiti, multimetri, analizzatori logici, ecc ... sono strumenti del mestiere.

C viene utilizzato principalmente, ma i linguaggi di livello superiore si stanno avvicinando lentamente.

+1

E non si può avere paura di un po 'di montaggio qua e là! – Earlz

+0

@Earlz, vero se non puoi evitarlo. Un buon compilatore C è abbastanza bravo a ottimizzare la maggior parte delle cose. – kenny

+2

A volte, come su x86, devi fare cose dipendenti dalla piattaforma che non sono possibili da C direttamente, come leggere e scrivere su porte. – Earlz

1

Lingue: C, Assembler, Processing, Basic e tutta una serie di altre, dipende dalla piattaforma utilizzata e da ciò che è disponibile.

È possibile ottenere informazioni più specifiche se si fa la stessa domanda allo ChipHacker o Electronics Exchange, che sono entrambi siti di scambio dello stack (come questo) ma orientati all'elettronica e al "calcolo fisico".

4

si deve accettare vincoli ed essere in grado di lavorare con loro:

  • velocità della CPU
  • scarsa memoria
  • mancanza di strutture di rete
  • compilatori personalizzati e sistemi operativi
  • schede madri personalizzati e driver
  • debug con un analizzatore logico
  • pratiche di codifica e test bizzarri
  • ...

La ricompensa è una profonda comprensione di ciò che sta accadendo.

1

Avrai voglia di stare abbastanza bene con C e costruire una solida conoscenza del montaggio. Nei sistemi/embedded, di solito si sta lavorando con piccole quantità di memoria e processori lenti, quindi è necessario capire come utilizzare le risorse limitate con saggezza.

Se ti stai appassionando come hobby, prendi una scheda gumstix o un arduino, queste schede DEV ti daranno centinaia di ore di apprendimento e divertimento.

Se stai cercando di fare carriera, trova un lavoro in cui i progetti sembrano interessanti e sporcati le mani. Prendi ogni compito che ti capita e chiediti come puoi fare meglio e imparare da questo compito.

In entrambi i casi, divertiti e divertiti a programmare!

4

VHDL, Verilog e FPGA sono anche giocatori seri in questa arena. Con un buon background in CS, un sacco di impegno, e forse alcuni OpenCourseware MIT sarete in grado di tirare fuori qualcosa di buono. Una buona conoscenza delle architetture della cpu e dell'ASM andrà molto lontano.

2

I sistemi integrati sono generalmente programmati in C, anche se ci sono sistemi alle estremità della gamma che usano l'assemblatore quando lo spazio del codice o la temporizzazione è molto stretto (o non c'è un compilatore C decente disponibile), e all'altra estremità, C++ fino a .NET compatto. Dipende da cosa intendi per sistemi embedded, passando da microcontrollori veramente piccoli con poche centinaia di byte di RAM e spazio di programmazione, fino al tipo di dispositivo smartphone che esegue un sistema operativo multitasking completo e un'interfaccia utente.

Nella gamma più alta di questa gamma non si ottiene un background in elettronica, perché è meno legato all'hardware e più simile allo sviluppo desktop. Scendendo nel campo delle applicazioni, una conoscenza dell'elettronica, analogica e digitale e degli alimentatori, problemi di rumore, problemi di conformità, problemi di calore e altri si combinano per creare un ambiente di progettazione davvero stimolante.

iniziare leggendo alcuni dei collegamenti here e embedded.com

+0

+1 per aver notato che i sistemi integrati di oggi non sono solo roba da 8 bit μC – ziggystar

0

Learn C. imparare ad applicare C a tutti i problemi. Altre lingue possono aspettare. Alla fine l'assemblaggio aiuterà e nessun programmatore dovrebbe essere senza l'uso di un linguaggio di scripting.

A seconda degli obiettivi incorporati che si utilizzano potrebbero esserci differenze minime tra un PC e il target. Con poca elettronica di fondo questa sarebbe la tua entrata più facile.

I piccoli processori vi daranno la curva di apprendimento più ripida ma imparerete di più sulla programmazione embedded. Tuttavia, senza uno sfondo elettronico, questo può presentare problemi extra che potresti non avere ancora le competenze per risolvere.

Alla fine dovrai imparare l'elettronica se vuoi fare ulteriori progressi oltre le basi.

2

L'unica cosa che non ho visto menzionato nelle risposte finora è che fino ad ora probabilmente avete fatto la maggior parte della vostra codifica nel contesto di un sistema operativo. In molti casi (forse la maggior parte?), Con firmware diverso da software, non avrai la comodità e i vantaggi della codifica su un sistema operativo. Questo è il motivo per cui così tante altre risposte indicavano che una buona conoscenza dell'elettronica era fondamentale.

1

Come già menzionato, incorporato può significare molte cose. Nel mio mondo (Aerospaziale e Difesa), lavoriamo con sistemi operativi in ​​tempo reale (VxWorks e Integrity sono i più grandi giocatori) e occasionalmente Linux. Programmiamo principalmente in C, sebbene il C++ sia usato anche se il progetto ha deciso di utilizzare la programmazione e la modellazione orientata agli oggetti.

Quindi, come per i Pre-Req, C di sicuro. Hai davvero bisogno di imparare tutto su C, comprese le operazioni saggia BIT, occupandoti di valori esadecimali, puntatori, tutto il materiale di basso livello. Anche Assembly, ma lo uso solo per il debug delle cose più difficili al giorno d'oggi. Devi sapere abbastanza per leggere e capire.

Penso che An Embedded Software Primer sia un ottimo inizio per cambiare il modo di pensare verso l'embedded. Gestione degli interrupt, problemi in tempo reale, ecc ...

Come menzionato da Mickey, a volte non hai nemmeno un sistema operativo. In questi casi, di solito scrivi il tuo task manager di qualche tipo, ma di solito non è qualcosa che il principiante dovrebbe iniziare. In bocca al lupo.

6

Iniziare in Embedded Systems è un compito complesso in sé, perché è un campo molto vasto con numerose opzioni in hardware e software.

Quali sono i linguaggi utilizzati per programmare i programmi di sistema incorporati?

Assembly Language, C, C++, Python, C# e altri.

Sarò in grado di apprendere senza avere elementi di base nell'elettronica?

L'apprendimento di sistemi embedded senza la conoscenza di base dell'elettronica non sarebbe una buona idea. I sistemi integrati sono un mix di hardware e software. È possibile seguire l'approccio di learning-by-doing anziché consultare i libri di testo lunghi e dettagliati. È possibile fare riferimento a this blog per apprendere i sistemi incorporati eseguendo le pratiche, passo dopo passo. Ti aiuterà a iniziare da zero.

Eventuali altri prerequisiti che dovrei sapere?

Elettronica di base, elettronica digitale, conoscenza dei microcontrollori e programmazione C. Dal momento che vieni da un background informatico avresti bisogno di una scheda di sviluppo di qualsiasi microcontrollore a 8 bit (gli studenti di EE ed ECE hanno abbastanza conoscenze e background per costruirlo su breadboard o pcb) per iniziare. (Non preferire i simulatori all'inizio, potresti sbagliare i concetti!).

Problemi correlati